diff --git a/apps/docs/components/api/scope-roles-table.tsx b/apps/docs/components/api/scope-roles-table.tsx index dd87587e9..a47c2905e 100644 --- a/apps/docs/components/api/scope-roles-table.tsx +++ b/apps/docs/components/api/scope-roles-table.tsx @@ -7,13 +7,14 @@ import type { Schema } from '@/lib/openapi/types'; import { CopyableCode } from './schema-tree'; import { InlineCodeText } from './inline-code-text'; -const ROLES = ['owner', 'admin', 'user', 'bot'] as const; +const ROLES = ['owner', 'admin', 'user', 'multi_guest', 'bot'] as const; type Role = (typeof ROLES)[number]; const ROLE_LABELS: Record = { owner: 'Владелец', admin: 'Администратор', user: 'Сотрудник', + multi_guest: 'Мульти-гость', bot: 'Бот', }; diff --git a/apps/docs/components/mdx/cards.tsx b/apps/docs/components/mdx/cards.tsx index 00f9413c4..b3ee565b6 100644 --- a/apps/docs/components/mdx/cards.tsx +++ b/apps/docs/components/mdx/cards.tsx @@ -141,6 +141,7 @@ const GUIDE_ICONS: Record = { '/guides/workflows': 'Route', '/guides/webhook': 'Webhook', '/guides/webhook/overview': 'Webhook', + '/guides/oauth/overview': 'KeyRound', '/guides/export': 'Download', '/guides/forms/overview': 'LayoutList', '/guides/dlp': 'ShieldCheck', diff --git a/apps/docs/components/mdx/mdx-components.tsx b/apps/docs/components/mdx/mdx-components.tsx index 3e23d56ec..daaff6f70 100644 --- a/apps/docs/components/mdx/mdx-components.tsx +++ b/apps/docs/components/mdx/mdx-components.tsx @@ -122,7 +122,7 @@ export async function ErrorSchema() { {apiError && ( )} {oauthError && } diff --git a/apps/docs/content/api/authorization.mdx b/apps/docs/content/api/authorization.mdx index 56f19c9f8..84e26e268 100644 --- a/apps/docs/content/api/authorization.mdx +++ b/apps/docs/content/api/authorization.mdx @@ -31,11 +31,11 @@ related: | | Токен в интерфейсе | Вход через CLI | |---|---|---| -| Как выдаётся | **Автоматизации** > **API**, руками | `pachca auth login`, подтверждение в браузере | +| Как выдаётся | **Интеграции** > **API**, руками | `pachca auth login`, подтверждение в браузере | | Кто выбирает права | вы, при выпуске | не выбираются: берётся весь каталог, урезанный вашей ролью на момент входа | | Срок | бессрочный | час, продлевается автоматически | | Значение токена | показывается один раз, копируется | в терминал не выводится | -| Как прекратить доступ | удалить токен в **Автоматизации** > **API** | `pachca auth logout` — токен гасится на сервере сразу | +| Как прекратить доступ | удалить токен на странице **Интеграции** > **API** | `pachca auth logout` или **Отозвать** в списке **Токены CLI** — токен гасится на сервере сразу | | Когда подходит | унести в автоматизацию или CI, передать коллеге | работа руками и агентом на своей машине | Разница не только в удобстве. Токен из интерфейса вы держите в руках: он бессрочный, его можно скопировать в чужую систему или передать другому сотруднику — вместе со своими правами. Токен входа через CLI короткоживущий и привязан к машине, где выполнен вход, поэтому переносить его бессмысленно. @@ -52,6 +52,10 @@ related: [Скоупы](#skoupy) определяют только **какие методы** можно вызывать — расширить круг данных за пределы границ типа токена они не могут. +### Токен по авторизации + +Персональный токен, который сотрудник выдал боту на экране согласия. Действует от имени сотрудника и видит то же, что он, а хранится в сервисе бота — по токену на каждого сотрудника. Права берутся из настроек бота и дополнительно ограничены ролью сотрудника, а отозвать доступ сотрудник может в любой момент. Подходит ботам, которым нужны данные самого сотрудника: его задачи, его чаты. Подробнее — в разделе [Авторизация от имени сотрудника](/guides/oauth/overview). + ### Какой токен выбрать Выберите тип по задаче, которую решает интеграция: @@ -62,40 +66,48 @@ related: | Скрипт или утилита от вашего имени, личная автоматизация, разовая выгрузка данных | Персональный | [Создание персонального токена](#sozdanie-personalnogo-tokena) | | Чат-бот, уведомления из внешних систем, обработка вебхуков, интерактивные формы | Бот | [Боты](/guides/bots/overview) | | Агент или headless-интеграция без участия сотрудника (CI, сервер, облачный воркер) | Бот | [Агенты и headless-интеграции](#agenty-i-headless-integratsii) | +| Бот, которому нужны данные сотрудника: его задачи, его чаты | По авторизации | [Авторизация от имени сотрудника](/guides/oauth/overview) | ## Кто может создавать токены -Владелец пространства может ограничить, кто может создавать токены и работать с API. Настройки находятся в разделе **Настройки пространства**: +Владелец или администратор пространства может ограничить, кто может создавать токены и получать доступ к API. Настройки находятся в разделе **Настройки пространства**: -- **Кто может создавать интеграции** *(токены ботов)* — «Только администраторы» или «Администраторы и сотрудники» -- **Кто может работать с API** *(персональные токены)* — «Только администраторы» (сотрудники не смогут создавать и использовать персональные токены) или «Все сотрудники» +- **Кто может создавать интеграции** *(боты и их токены)* — «Только администраторы» или «Администраторы и сотрудники». По умолчанию — «Администраторы и сотрудники». +- **Кто может создавать персональные токены** — «Только администраторы» или «Все сотрудники». По умолчанию — «Только администраторы»: сотрудники не могут создавать персональные токены, входить в CLI и выдавать доступ ботам на экране согласия. Настройка закрывает только новый доступ: персональные токены, входы в CLI и доступы ботов, выданные до её смены, продолжают работать. Свои персональные токены и входы в CLI сотрудник и после смены настройки видит на странице **API** и может отозвать, а новые создать не может. -Гости и мульти-гости не могут создавать токены любого типа вне зависимости от настроек пространства. +Гости не могут создавать токены любого типа вне зависимости от настроек пространства. Мульти-гость создаёт персональные токены, входит в CLI и авторизует ботов на тех же условиях, что и сотрудник, а ботов и их токенов не создаёт. Что он видит через API — в разделе [Права и роли](/guides/permissions#multi-gost-v-api). ## Создание персонального токена -Создать персональный токен можно в разделе **Автоматизации** > **API**. +Персональные токены создаются на странице **Интеграции** > **API**. На ней указан ваш `user_id` и собраны три списка: персональные токены, токены CLI и авторизации. -На странице отображается список персональных токенов: название, дата создания и дата последнего использования. + - - -Нажмите **«Создать новый токен»** — откроется диалог, в котором нужно задать название токена и выбрать разрешения (скоупы). +Нажмите **Создать токен** — откроется диалог, в котором нужно задать название токена и выбрать разрешения (скоупы). Токен показывается только один раз сразу после создания. Скопируйте и сохраните его в надёжном месте — после закрытия диалога восстановить его будет невозможно. +В списке у каждого токена видны дата создания и последнего использования. Меню токена позволяет посмотреть выданные разрешения, изменить название и разрешения или удалить токен. Если токеном пользовались недавно, диалог удаления предупредит об этом: всё, что на нём работает, сломается сразу. + +### Токены CLI и авторизации + +Ниже на той же странице — доступы, которые вы выдали без ручного создания токена: + +- **Токены CLI** — по строке на каждое устройство, где выполнен `pachca auth login`: имя устройства, время входа и последнего вызова. Токены продлеваются сами, а права ограничены вашей ролью. **Отозвать** завершает вход на выбранном устройстве, остальные входы продолжают работать. Подробнее — в разделе [CLI: авторизация](/guides/cli/authentication). +- **Авторизации** — боты, которым вы разрешили действовать от вашего имени на экране согласия. Для каждого видно, когда он подключён и когда использовался, и какие разрешения выданы. **Отозвать доступ** сразу отключает все токены этого бота, выданные вам. + ## Получение токена бота Бот виден в пространстве как отдельный участник со своим именем и аватаром. Получить его `access_token` можно двумя способами: -- **В интерфейсе** — во вкладке **API** в настройках бота. -- **Через API** — методом [Новый бот](POST /bots): он создаёт бота и сразу возвращает `access_token`. Сохраните токен из ответа: посмотреть его повторно можно только в интерфейсе, а перевыпустить — методом [Ротация токена бота](POST /bots/{id}/recreate_token). +- **В интерфейсе** — на вкладке **API** в карточке бота: кнопка **Создать токен**, название и права. Токенов у бота может быть несколько, значение каждого показывается один раз. +- **Через API** — методом [Новый бот](POST /bots): он создаёт бота и сразу возвращает `access_token`. Сохраните токен из ответа: повторно значение не показывается, а перевыпустить токен можно методом [Ротация токена бота](POST /bots/{id}/recreate_token) или кнопкой **Перевыпустить** в карточке бота. Ещё токены выпускает метод [Новый токен бота](POST /bots/{id}/tokens), у каждого своё имя и права. -Подробнее о создании и настройке бота — в разделе [Боты](/guides/bots/overview). +Несколько токенов у одного бота, их права, перевыпуск и что делать при утечке — в разделе [Токены бота](/guides/bots/tokens). ### Методы, требующие токен бота @@ -106,7 +118,7 @@ related: - [Unfurl (разворачивание ссылок)](POST /messages/{id}/link_previews) — создание предпросмотров ссылок в сообщениях - [Открытие представления](POST /views/open) — открытие модального окна с формой для пользователя -Также при отправке сообщений ([Новое сообщение](POST /messages), [Новый тред](POST /messages/{id}/thread)) поля `icon_url` и `name` для кастомного аватара и имени отправителя работают только с токеном бота. +Также только с токеном бота работают поля `display_name` и `display_avatar_url` — своё имя и аватар отправителя у отдельного сообщения — в методах [Новое сообщение](POST /messages) и [Редактирование сообщения](PUT /messages/{id}). С другим токеном запрос с ними вернёт `403`. Подробнее — в разделе [Подмена имени и аватара отправителя](/guides/bots/overview#podmena-imeni-i-avatara-otpravitelya). ## Заголовок авторизации @@ -127,17 +139,17 @@ Authorization: Bearer YOUR_ACCESS_TOKEN Скоупы определяют, к каким методам API имеет доступ токен. Разные типы токенов получают скоупы по-разному: - **Персональный токен** — вы выбираете скоупы вручную при создании и можете изменить их позже в настройках токена. Токен получит только запрошенные разрешения. -- **Токен бота** — скоупы можно выбрать при создании или редактировании бота (параметр `scopes` в методах [Новый бот](POST /bots) и [Редактирование бота](PUT /bots/{id})). Если скоупы не указаны, бот получает набор по умолчанию. +- **Токен бота** — права задаются на каждый токен при его создании и редактировании на вкладке **API** карточки бота. Через API — в методах [Новый токен бота](POST /bots/{id}/tokens) и [Изменение токена бота](PUT /bots/{id}/tokens/{token_id}), а права основного токена — параметром `scopes` в методах [Новый бот](POST /bots) и [Редактирование бота](PUT /bots/{id}). Если скоупы основного токена не указаны, бот получает набор по умолчанию. Какие права можно выдать боту, отдаёт [Каталог прав бота](GET /bots/{id}/scopes). Боту доступны и собственные скоупы самоуправления, недоступные персональным токенам: `bot_self:webhook:write` — бот сам меняет `URL` своего исходящего вебхука методом [Саморегистрация вебхука бота](PUT /bot/webhook), и `bot_self:write` — самостоятельное управление настройками бота. -Бывает и наоборот: `bots:read` и `bots:write` для управления ботами, `drafts:read` и `drafts:write` для черновиков и отложенных сообщений выдаются только персональным токенам. Роль здесь ни при чём — эти скоупы есть у любого негостевого сотрудника, но токену бота их не получить, и с ним метод отвечает `403`. +Бывает и наоборот: `bots:read` и `bots:write` для управления ботами, `drafts:read` и `drafts:write` для черновиков и отложенных сообщений выдаются только персональным токенам. Скоупы ботов есть у Владельца, Администраторов и Сотрудников, скоупы черновиков — ещё и у мульти-гостя, а токену бота их не получить: с ним метод отвечает `403`. Проверить скоупы текущего токена можно методом [Информация о токене](GET /oauth/token/info). ### Доступные скоупы -При создании персонального токена в интерфейсе Пачки отображаются только те скоупы, которые доступны вашей роли. Токены ботов получают скоупы автоматически. +При создании персонального токена в интерфейсе Пачки отображаются только те скоупы, которые доступны вашей роли. Токену бота права выбираются при создании в его карточке, а через API — параметром `scopes` при выпуске токена. diff --git a/apps/docs/content/api/errors.mdx b/apps/docs/content/api/errors.mdx index 3878b35ee..f6d1e85e8 100644 --- a/apps/docs/content/api/errors.mdx +++ b/apps/docs/content/api/errors.mdx @@ -1,6 +1,6 @@ --- title: Ошибки -description: "Коды ошибок HTTP в API Пачки и структуры тела ответа: ApiError (400/402/403/404/409/410/422) и OAuthError (401/403) с описанием полей и кодов" +description: "Коды ошибок HTTP в API Пачки и структуры тела ответа: ApiError (400/402/403/404/409/410/422/429/503/504) и OAuthError (401/403) с описанием полей и кодов" related: - /api/limits - /api/requests-responses @@ -21,7 +21,7 @@ related: В зависимости от типа ошибки вы получите в теле ответа одну из следующих структур: -- **ApiError** — для кодов `400`, `402`, `403`, `404`, `409`, `410`, `422`. Содержит массив `errors` с детальной информацией об ошибках. +- **ApiError** — для кодов `400`, `402`, `403`, `404`, `409`, `410`, `422`, а также `429` при суточном пределе сообщений, `503` и `504`. Содержит массив `errors` с детальной информацией об ошибках. - **OAuthError** — для кодов `401` и `403`. Содержит поля `error` и `error_description` с информацией об ошибке авторизации. > Код `403` может вернуть обе структуры: @@ -33,4 +33,6 @@ related: Код `409` возвращается, когда объект с такими данными уже есть: сотрудник с этим адресом почты, тег с этим названием, закрепление у этого сообщения, черновик в этом чате. В `errors[].code` приходит `already_exists`, а в `errors[].key` — конфликтующее поле: например, `email` при повторном адресе почты сотрудника. Если определить поле не удалось, `key` в ошибке не будет. У черновика вдобавок приходит `errors[].payload.draft_id` — номер того, который уже лежит в чате, чтобы дописать его методом [Редактирование черновика](PUT /drafts/{id}). +Код `504` с `errors[].code` равным `timeout` возвращают методы поиска и [Список сотрудников](GET /users) с параметром `query`, когда запрос не уложился по времени. Такой запрос стоит сузить: повтор того же запроса, скорее всего, снова не уложится. + Ответ `429 Too Many Requests` приходит в двух видах. Превышение суточного предела сообщений в чат — обычный `ApiError` с кодом `rate_limit`. Превышение лимита на частоту запросов обрабатывается до того, как запрос доходит до метода: тело не `JSON`, а короткий текст с `Content-Type: text/plain`. Разбирайте тело `429` только после проверки `Content-Type`, иначе разбор упадёт. Заголовок `Retry-After` есть в обоих случаях. Подробнее — на странице [Лимиты](/api/limits). diff --git a/apps/docs/content/api/models.mdx b/apps/docs/content/api/models.mdx index 0bc82bb37..1e9742925 100644 --- a/apps/docs/content/api/models.mdx +++ b/apps/docs/content/api/models.mdx @@ -25,6 +25,9 @@ hideTableOfContents: true + + + @@ -101,6 +104,7 @@ hideTableOfContents: true - [Редактирование чата](PUT /chats/{id}) - [Архивация чата](PUT /chats/{id}/archive) - [Разархивация чата](PUT /chats/{id}/unarchive) +- [Отметка чата непрочитанным](PUT /chats/{id}/unread) - [Редактирование роли](PUT /chats/{id}/members/{user_id}) - [Выход из чата](DELETE /chats/{id}/leave) - [Исключение пользователя](DELETE /chats/{id}/members/{user_id}) @@ -173,12 +177,34 @@ hideTableOfContents: true - [Информация о боте](GET /bots/{id}) - [Редактирование бота](PUT /bots/{id}) - [Удаление бота](DELETE /bots/{id}) -- [Саморегистрация вебхука бота](PUT /bot/webhook) - [Ротация токена бота](POST /bots/{id}/recreate_token) -- [Ротация собственного токена бота](POST /bot/recreate_token) +- [Ротация секрета клиента](POST /bots/{id}/rotate_client_secret) +## Бот в методах самого бота + +- [Саморегистрация вебхука бота](PUT /bot/webhook) +- [Ротация собственного токена бота](POST /bot/recreate_token) + + + +## Токен бота + +- [Список токенов бота](GET /bots/{id}/tokens) +- [Новый токен бота](POST /bots/{id}/tokens) +- [Изменение токена бота](PUT /bots/{id}/tokens/{token_id}) +- [Перевыпуск токена бота](POST /bots/{id}/tokens/{token_id}/reissue) +- [Удаление токена бота](DELETE /bots/{id}/tokens/{token_id}) + + + +## Каталог прав бота + +- [Каталог прав бота](GET /bots/{id}/scopes) + + + ## Параметры бота пространства - [Список ботов пространства](GET /company/bots) diff --git a/apps/docs/content/guides/bots/access.mdx b/apps/docs/content/guides/bots/access.mdx index a63cda729..d44c2937c 100644 --- a/apps/docs/content/guides/bots/access.mdx +++ b/apps/docs/content/guides/bots/access.mdx @@ -17,8 +17,8 @@ related: Чтобы бот получил доступ к закрытому каналу или беседе, его нужно добавить туда как участника. После добавления бот автоматически получает доступ ко всем тредам этого чата. Добавить бота в чат можно двумя способами: -- Через интерфейс — в диалоге **Добавление участников** на вкладке **Интеграции**. Список доступных ботов зависит от настройки [Кто может добавлять бота в чаты](/guides/bots/setup#kto-mozhet-dobavlyat-bota-v-chaty). -- Через API — метод [Добавление пользователей](POST /chats/{id}/members), передав `user_id` бота в `member_ids`. +- Через интерфейс — в диалоге **Добавление участников** (в канале — **Добавление подписчиков**) на вкладке **Интеграции**. Список доступных ботов зависит от настройки [Кто может добавлять бота в чаты](/guides/bots/settings#kto-mozhet-dobavlyat-bota-v-chaty). +- Через API — метод [Добавление пользователей](POST /chats/{id}/members), передав `id` бота в `member_ids`. Настройка действует и здесь: если вам добавлять бота нельзя, метод ответит `403` с кодом `bot_add_denied` и не добавит никого из запроса. ## Треды @@ -26,17 +26,13 @@ related: Добавить бота в тред можно двумя способами: - Через API — метод [Добавление пользователей](POST /chats/{id}/members), передав `chat_id` треда. -- Через упоминание `@никнейм_бота` в сообщении — доступно, когда бот настроен как **публичный**. +- Через упоминание `@никнейм_бота` в сообщении — доступно, когда бот настроен как **публичный**, всем, кроме гостей и мульти-гостей. ## Личные сообщения -Пользователь может писать боту личные сообщения и взаимодействовать с ним 1 на 1 в трёх случаях: +Написать боту в личные сообщения сотрудник может, если бот публичный, у них есть общая беседа или канал или бот написал ему первым. Подробнее об этих случаях и о том, что происходит при первом сообщении, — в разделе [Первый диалог с ботом](/guides/bots/first-contact#kak-sotrudnik-popadaet-k-botu). -- Бот настроен как **публичный** — любой участник пространства может начать диалог. -- Бот сам ранее отправил пользователю [Новое сообщение](POST /messages) через API (с `entity_type: "user"`) — после этого пользователь может отвечать, даже если бот не публичный. -- Бот и пользователь состоят в одной беседе или канале, и этот чат не в архиве — общего чата достаточно, чтобы открыть с ботом личную переписку. - -При этом бота нельзя добавить в существующие личные сообщения между двумя участниками пространства. +Бота нельзя добавить в существующие личные сообщения между двумя участниками пространства. ## Поиск бота @@ -46,7 +42,7 @@ related: Одинаково для всех ролей, включая гостей и мульти-гостей: -- **Публичные боты** — везде в пространстве, даже если у пользователя нет с ними общих чатов. +- **Публичные боты** — везде в пространстве, даже если у сотрудника нет с ними общих чатов. - **Непубличные боты-участники текущего чата** — дополнительно, когда `@` набирается внутри этого чата. Непубличные боты, не состоящие в текущем чате, в подсказках упоминаний не появляются. @@ -55,18 +51,22 @@ related: Поиск из общей строки поиска и при создании личных сообщений ведёт себя по-разному в зависимости от роли: -- **Сотрудники и администраторы** — видят и обычных пользователей, и публичных ботов в пространстве. -- **Гости и мульти-гости** — видят **только тех, с кем уже есть личные сообщения**. Бот появится в выдаче только если с ним уже была переписка — например, потому что бот сам ранее отправил пользователю [Новое сообщение](POST /messages). +- **Сотрудники и администраторы** — видят и сотрудников, и публичных ботов в пространстве. +- **Гости и мульти-гости** — видят только тех, с кем у них уже есть личные сообщения, а по запросу от трёх символов — ещё и участников общих чатов. + +Непубличных ботов глобальный поиск не показывает никому, даже если бот уже писал сотруднику: такому боту отвечают в уже открытой переписке. ### Список добавления участников в чат -Зависит от настройки [Кто может добавлять бота в чаты](/guides/bots/setup#kto-mozhet-dobavlyat-bota-v-chaty) каждого бота и роли пользователя: +Зависит от настройки [Кто может добавлять бота в чаты](/guides/bots/settings#kto-mozhet-dobavlyat-bota-v-chaty) каждого бота и роли того, кто добавляет: - **Создатель бота** — всегда видит ботов, которых он создал. -- **Администраторы** — видят ботов с настройками «Все участники», «Публичный бот», «Создатель и Администраторы». -- **Сотрудники** — видят ботов с настройками «Все участники» и «Публичный бот». +- **Администраторы** — видят публичных ботов и ботов с настройками «Все участники (кроме гостей)» и «Создатель и Администраторы». +- **Сотрудники** — видят публичных ботов и ботов с настройкой «Все участники (кроме гостей)». - **Гости и мульти-гости** — в выдаче пусто. +Бот с настройкой [Ограничить одним чатом](/guides/bots/settings#ogranichit-odnim-chatom), который уже состоит в беседе или канале, в списке не показывается никому, в том числе создателю. + - Бот получает [исходящие вебхуки](/guides/webhook/overview) только из тех чатов и тредов, в которых он состоит. Глобальные события (например, изменение участников пространства) приходят без добавления в чат. + Бот получает [исходящие вебхуки](/guides/webhook/overview) из чатов, где он состоит, из тредов этих чатов и из тредов, куда его добавили. Без добавления в чат приходят изменения участников пространства, ссылки на домены бота и отправка форм, которые открыл бот. diff --git a/apps/docs/content/guides/bots/examples.mdx b/apps/docs/content/guides/bots/examples.mdx index 606647ede..3886549c9 100644 --- a/apps/docs/content/guides/bots/examples.mdx +++ b/apps/docs/content/guides/bots/examples.mdx @@ -13,7 +13,7 @@ related: Автоматическое приветствие новых сотрудников в личных сообщениях. Три шаблона сообщений: `short`, `default`, `extended`. Развёртывание на Vercel или собственном сервере. -Подробнее — в статье [Welcome Bot](https://www.pachca.com/blog-posts/welcome-bot) и на [GitHub](https://github.com/pachca/public-integrations/tree/main/welcome-bot) +Подробнее — в статье [Welcome Bot](https://pachca.com/blog/welcome-bot) и на [GitHub](https://github.com/pachca/public-integrations/tree/main/welcome-bot) ## Review Bot @@ -23,6 +23,6 @@ related: ## Unfurl-бот -Бот для создания превью ссылок из рабочих сервисов (Trello, Kaiten, Пачка) прямо в чате. Когда пользователь отправляет ссылку, вместо простого URL все видят информативное превью с заголовком, описанием и изображением. +Бот для создания превью ссылок из рабочих сервисов (Trello, Kaiten, Пачка) прямо в чате. Когда сотрудник отправляет ссылку, вместо простого URL все видят информативное превью с заголовком, описанием и изображением. Подробнее — в статье [Unfurl-бот](https://pachca.com/blog/unfurl-bot) и на [GitHub](https://github.com/pachca/public-integrations/tree/main/Unfurling-bot) diff --git a/apps/docs/content/guides/bots/first-contact.mdx b/apps/docs/content/guides/bots/first-contact.mdx new file mode 100644 index 000000000..bc2da1b9d --- /dev/null +++ b/apps/docs/content/guides/bots/first-contact.mdx @@ -0,0 +1,99 @@ +--- +title: Первый диалог с ботом +description: "Как сотрудник начинает разговор с ботом в Пачке и почему бот молчит: личный чат создаётся без события, новый бот слушает только команды. Что настроить заранее и как ответить на первое сообщение" +related: + - /guides/bots/access + - /guides/webhook/events + - /guides/buttons + - /guides/oauth/checklist +--- + +# Первый диалог с ботом + +Чат-бот начинается с того, что сотрудник ему пишет. Здесь — как сотрудник попадает к боту, что происходит в этот момент и что нужно настроить, чтобы бот ответил. + +## Как сотрудник попадает к боту + +Написать боту в личные сообщения можно в трёх случаях: + +- **Бот публичный** — сотрудник находит его в поиске или на вкладке **Обзор** в [витрине](/guides/bots/showcase) и нажимает **Сообщение**. +- **Есть общий чат** — сотрудник и бот состоят в одной беседе или канале, и этот чат не в архиве. Непубличному боту этого достаточно. +- **Бот написал первым** — бот отправил сотруднику сообщение методом [Новое сообщение](POST /messages) с `entity_type: "user"`. После этого сотрудник может отвечать, даже если бот не публичный. + +Публикация в витрине сама по себе написать боту не позволяет: у опубликованного, но непубличного бота кнопки **Сообщение** нет, если с ним нет общего чата. Подробнее о доступах — в разделе [Доступы к чатам и сообщениям](/guides/bots/access). + +## Почему бот молчит + + + **Личный чат создаётся молча.** Когда сотрудник открывает переписку с ботом, события об этом нет — ни о новом чате, ни о новом участнике. Бот узнаёт о сотруднике только из его первого сообщения, поэтому первый ход всегда за сотрудником. + + + + **Новый бот слушает только команды, а их список пуст.** Так у любого бота — созданного и в интерфейсе, и методом [Новый бот](POST /bots): по умолчанию выбран режим **Начинающиеся с команд**, а команд нет. О новых сообщениях такой бот не узнает, и ошибки при этом нет — в ответе метода видно только `trigger_on: "commands"` и пустой `commands`. + + +## Что настроить заранее + +До того как сотрудник напишет, у бота должно быть: + + + + На вкладке **Исходящий вебхук** нажмите **Включить** и укажите URL своего сервера. Локальные и внутренние адреса не принимаются, для разработки подойдёт туннель. Через API — поле `outgoing_url`. + + + Включите **Новые сообщения** и выберите **Любые сообщения** — тогда бот получит всё, что ему пишут. Если бот работает по командам, выберите **Начинающиеся с команд** и перечислите их, включая ту, с которой начинается разговор, например `/start`. Через API — `events` с `message_new` и `trigger_on` со значением `all_messages` или `commands` вместе с `commands`. + + Если в ответах будут Data-кнопки или формы, включите и событие **Нажатие кнопок** (`button_click`): без него нажатия и отправленные формы до бота не дойдут. + + + Проверяйте подпись каждого запроса по **Signing secret**, чтобы отличать запросы Пачки от чужих. Включите **Игнорировать свои сообщения**, чтобы бот не реагировал на собственные ответы. Подробнее — в разделе [Безопасность и обработчик](/guides/webhook/handler). + + + Чтобы ответить, нужен токен бота с правом `messages:create`. Подробнее — в разделе [Токены бота](/guides/bots/tokens). + + + +Так выглядит вкладка **Исходящий вебхук** с этими настройками: + + + +Если бот авторизует сотрудников, к этому добавляется настройка вкладки **OAuth**. Всё вместе собрано в [Чек-листе запуска](/guides/oauth/checklist). + +## Ответ на первое сообщение + +Сотрудник пишет `/start` или сразу свой вопрос. Бот получает событие о новом сообщении: в личной переписке `entity_type` равен `"user"`, а `user_id` — идентификатор сотрудника. + + + +```json title="Событие о первом сообщении" +{ + "type": "message", + "event": "new", + "id": 1245817, + "entity_type": "user", + "entity_id": 2345, + "chat_id": 9012, + "user_id": 2345, + "content": "/start", + "created_at": "2026-09-24T09:30:00.000Z", + "webhook_timestamp": 1790242200 +} +``` + +Ответ отправляется методом [Новое сообщение](POST /messages) в ту же переписку — с `entity_type: "user"` и `entity_id`, равным `user_id` из события. К приветствию удобно сразу приложить [кнопки](/guides/buttons): Data-кнопки для частых действий или URL-кнопку, если сотруднику нужно что-то открыть. + +```bash title="Приветствие с кнопкой" +curl -X POST https://api.pachca.com/api/shared/v1/messages \ + -H "Authorization: Bearer $BOT_TOKEN" \ + -H "Content-Type: application/json" \ + -d '{ + "message": { + "entity_type": "user", + "entity_id": 2345, + "content": "Привет! Я помогу с заявками на отпуск.", + "buttons": [[{ "text": "Новая заявка", "data": "vacation_new" }]] + } + }' +``` + +Нажатие Data-кнопки придёт отдельным событием, если у бота включено **Нажатие кнопок**. Подробнее — в разделе [Кнопки в сообщениях](/guides/buttons). Если боту нужны права самого сотрудника, например чтобы работать с его задачами, в приветствии отправляют кнопку авторизации — подробнее в разделе [Получение токена](/guides/oauth/flow). diff --git a/apps/docs/content/guides/bots/overview.mdx b/apps/docs/content/guides/bots/overview.mdx index 7492345c5..f19686920 100644 --- a/apps/docs/content/guides/bots/overview.mdx +++ b/apps/docs/content/guides/bots/overview.mdx @@ -1,10 +1,10 @@ --- title: Обзор -description: "Боты в Пачке: что это, типы ботов, доступность в чатах и подмена имени и аватара отправителя в сообщениях" +description: "Боты в Пачке: сервисный участник пространства, на котором строятся интеграции. Что умеет бот, с чего начать под вашу задачу, где бот находится в интерфейсе, вкладка «Управление» и подмена имени отправителя" related: - /guides/bots/setup - - /guides/bots/access - - /guides/bots/examples + - /guides/bots/first-contact + - /guides/oauth/overview - { path: /guides/webhook/overview, title: Исходящие вебхуки } --- @@ -12,7 +12,7 @@ related: ## Что такое бот -Бот в Пачке — это посредник между вашим сервисом и мессенджером, действующий от своего имени. Он может отправлять и получать сообщения, реагировать на команды пользователей, открывать интерактивные формы и использовать другие методы, предоставляемые [API](/guides/quickstart). +Бот в Пачке — сервисный участник пространства, на котором строятся интеграции. У него есть имя, аватар и никнейм, он состоит в чатах, пишет сообщения и получает события, но действует от своего имени, а не от имени кого-то из сотрудников. Через ботов работают уведомления из внешних сервисов, чат-боты с командами, кнопки и формы, превью ссылок и автоматизации, которые действуют от имени сотрудника. @@ -20,35 +20,56 @@ related: Бот имеет доступ не ко всем методам API. Например, добавление участников в пространство и экспорт сообщений доступны только с персональным токеном. Подробнее о токенах в разделе [Авторизация](/api/authorization). - - Бот позволяет работать с вебхуками, кнопками и формами в Пачке. Подробнее в разделах [Входящие вебхуки](/guides/incoming-webhooks), [Исходящие вебхуки](/guides/webhook/overview), [Кнопки в сообщениях](/guides/buttons), [Формы](/guides/forms/overview) и [Разворачивание ссылок](/guides/link-previews). - +## С чего начать -## Типы ботов +Выберите строку по задаче, которую решает интеграция: -Тип выбирается при создании и не меняется. Подробнее о создании — в разделе [Создание и настройка](/guides/bots/setup). +| Задача | Что включить у бота | Раздел | +| --- | --- | --- | +| Присылать в чат уведомления из CRM, CI/CD или мониторинга | Входящий вебхук | [Входящие вебхуки](/guides/incoming-webhooks) | +| Отвечать на сообщения и команды сотрудников | Исходящий вебхук и токен | [Первый диалог с ботом](/guides/bots/first-contact) | +| Писать в чаты и читать их из своего кода | Токен | [Токены бота](/guides/bots/tokens) | +| Спросить сотрудника прямо в сообщении | Кнопки или форма | [Кнопки в сообщениях](/guides/buttons), [Формы](/guides/forms/overview) | +| Показывать карточки ссылок на внутренние сервисы | Событие ссылок с доменами | [Разворачивание ссылок](/guides/link-previews) | +| Работать с данными сотрудника его правами: задачи, чаты, сервисы, где он работает | Авторизация от имени сотрудника | [Авторизация от имени сотрудника](/guides/oauth/overview), [Чек-лист запуска](/guides/oauth/checklist) | +| Дать сотрудникам найти и подключить бота самим | Публичный бот или публикация в витрине | [Витрина](/guides/bots/showcase) | -- **Для одного чата** — подойдёт для отправки уведомлений из других сервисов. В одном чате можно собрать всех получателей и обсуждать уведомления в тредах. -- **Для нескольких чатов** — подойдёт, если вы хотите создать личное взаимодействие бота с каждым участником вашей компании или разными группами участников. -- **Unfurl бот** (только администраторам) — подойдёт для получения событий об отправке ссылок во всех чатах вашего пространства и возможности создавать их предпросмотр. +## Где бот находится в интерфейсе -Ограничение «для одного чата» распространяется только на каналы и беседы — бот по-прежнему может участвовать в тредах и личных сообщениях. Бот любого типа может быть настроен как публичный. +Боты пространства собраны в разделе **Интеграции** > **Боты** на двух вкладках: -## Доступность бота +- **Обзор** — витрина: публичные боты и опубликованные боты с авторизацией. Её видят сотрудники, администраторы и мульти-гости. +- **Управление** — боты, которых вы можете редактировать. Вкладка и кнопка **Создать бота** в шапке раздела есть у тех, кому разрешено создавать интеграции. -Бот взаимодействует с пространством как участник с ролью **«Сотрудник»**: видит открытые каналы, а в закрытые каналы, треды и личные сообщения его нужно подключать отдельно. Дополнительно бота можно сделать **публичным** — тогда любой участник пространства сможет начать с ним диалог и упоминать через `@никнейм`. + - - Бот получает [исходящие вебхуки](/guides/webhook/overview) только из тех чатов и тредов, в которых он состоит. Глобальные события (например, изменение участников пространства) приходят без добавления в чат. - +На вкладке **Управление** собраны боты, которых вы можете редактировать: созданные вами и те, чьи настройки открывают вам доступ. Для каждого видны создатель, число сотрудников, [авторизовавших бота](/guides/oauth/overview), дата создания и когда бот последний раз обращался к API или получал вебхук. Нажатие на строку открывает карточку бота, а в меню бота есть ещё его профиль и удаление. + +У каждого бота есть карточка с пятью вкладками, по одной на возможность: + + + +| Вкладка | Что настраивается | Раздел | +| --- | --- | --- | +| **Основное** | Профиль, публичность, кто добавляет бота в чаты и кто его редактирует | [Настройки бота](/guides/bots/settings) | +| **Входящий вебхук** | Адрес для внешних сервисов, источник и шаблон сообщения | [Входящие вебхуки](/guides/incoming-webhooks) | +| **Исходящий вебхук** | Адрес вашего сервера, подпись и события | [Исходящие вебхуки](/guides/webhook/overview) | +| **API** | Токены бота и их права | [Токены бота](/guides/bots/tokens) | +| **OAuth** | Авторизация от имени сотрудников, страница в витрине и запрашиваемый доступ | [Настройка авторизации](/guides/oauth/setup) | + +Бот создаётся только с названием и ником, а каждую возможность включают на своей вкладке, когда она понадобится. Подробнее — в разделе [Создание бота](/guides/bots/setup). + +## Бот и сотрудник + +Бот взаимодействует с пространством как участник с ролью **«Сотрудник»**: видит открытые каналы вместе с их тредами. В закрытые каналы и беседы его добавляют участником, а в отдельный тред можно добавить и без родительского чата. Публичного бота сотрудники находят в поиске, пишут ему и добавляют в чаты. Подробнее — в разделе [Доступы к чатам и сообщениям](/guides/bots/access). -Подробнее — в разделе [Доступы к чатам и сообщениям](/guides/bots/access). +Своими правами бот ограничен: он не видит чужие личные переписки и не может действовать как конкретный сотрудник. Когда автоматизации нужны права самого сотрудника, например чтобы собрать сводку по его чатам, завести задачу от его имени или связать его аккаунт в другом сервисе с Пачкой, сотрудник авторизует бота: один раз соглашается на экране согласия, и дальше бот работает от его имени. Подробнее — в разделе [Авторизация от имени сотрудника](/guides/oauth/overview). ## Подмена имени и аватара отправителя -Метод [Новое сообщение](POST /messages) поддерживает поля `display_name` и `display_avatar_url`, позволяющие указать произвольное имя и аватар отправителя для конкретного сообщения. Бейдж **Бот** при этом сохраняется, а при открытии профиля отправителя пользователь увидит оригинальное имя и аватар бота. +Метод [Новое сообщение](POST /messages) поддерживает поля `display_name` и `display_avatar_url`, позволяющие указать произвольное имя и аватар отправителя для конкретного сообщения. Бейдж **Бот** при этом сохраняется, а при открытии профиля отправителя сотрудник увидит оригинальное имя и аватар бота. Это полезно для миграции сообщений из другого сервиса: бот отправляет сообщения от своего имени, но каждое сообщение отображается с именем и аватаром реального автора из исходной системы. diff --git a/apps/docs/content/guides/bots/settings.mdx b/apps/docs/content/guides/bots/settings.mdx new file mode 100644 index 000000000..5da77bf91 --- /dev/null +++ b/apps/docs/content/guides/bots/settings.mdx @@ -0,0 +1,68 @@ +--- +title: Настройки бота +description: "Вкладка «Основное» в карточке бота: профиль, ограничение одним чатом, публичный бот, кто может добавлять бота в чаты и редактировать его настройки, удаление бота и те же настройки через API" +related: + - /guides/bots/access + - /guides/bots/tokens + - /guides/bots/showcase + - { path: /guides/permissions, title: Права и роли } +--- + +# Настройки бота + +Эти настройки находятся на вкладке **Основное** в карточке бота. Они решают, как бот выглядит, кому он доступен и кто может его менять. + + + +## Профиль бота + +Бот, как и любой участник пространства, имеет свой профиль. В нём отображаются имя, аватар, никнейм, статус и список общих чатов с ботом. Изменить имя, аватар и никнейм можно кнопкой **Редактировать** в шапке вкладки. Там же указан создатель бота. + +**Никнейм** — уникальный идентификатор бота для упоминания через `@`. Именно по никнейму сотрудники могут упоминать бота в сообщениях и добавлять его в [сквозные треды](/guides/bots/access#tredy). Никнейм оканчивается на `_bot`. Через API имя и никнейм меняются методом [Редактирование бота](PUT /bots/{id}) в полях `webhook.name` и `webhook.nickname`, а аватар — методом [Загрузка аватара сотрудника](PUT /users/{user_id}/avatar), он доступен владельцу и администраторам. + +## Ограничить одним чатом + +Если включить эту настройку, в интерфейсе бота можно будет добавить только в одну беседу или канал, а личные чаты и треды под ограничение не попадают. Бот, который уже состоит в беседе или канале, пропадает из списка добавления. Подходит простым интеграциям вроде уведомлений: в одном чате собираются все получатели, а уведомления обсуждают в тредах. + +## Кто может добавлять бота в чаты + +Переключатель **Публичный бот** открывает бота всему пространству: он появляется в поиске и на вкладке **Обзор** в [витрине](/guides/bots/showcase), написать ему может любой участник пространства. Добавить публичного бота в чаты и треды, в том числе упоминанием в сообщении, может любой сотрудник, кроме гостей и мульти-гостей. + +Непубличного бота добавляют в каналы и беседы только те, кого выбрали в списке **Кто может добавлять бота в чаты**: + +- **Создатель** — только создатель бота, так у нового бота по умолчанию +- **Создатель и Администраторы** — создатель, владелец и администраторы пространства +- **Все участники (кроме гостей)** — любой сотрудник пространства + +Если выключить **Публичный бот**, в списке будет выбрано **Создатель и Администраторы**. + +Правило одинаково для всех способов добавления: в интерфейсе, упоминанием и через API. Гости и мульти-гости ботов в чаты не добавляют ни при какой настройке. Через API запрос с таким ботом отклоняется целиком: методы [Добавление пользователей](POST /chats/{id}/members) и [Новый чат](POST /chats) отвечают `403` с кодом `bot_add_denied` и идентификаторами таких ботов, никого не добавляют и чат не создают. + +Написать непубличному боту в личные сообщения можно только при общем чате с ним или после того, как бот написал первым. Подробнее — в разделе [Первый диалог с ботом](/guides/bots/first-contact). + +## Кто может редактировать настройки бота + +Кому открыта карточка бота и кто видит его на вкладке **Управление**: + +- **Создатель** — отключить нельзя. Если создавать интеграции разрешено только администраторам, создатель без этой роли теряет доступ к своему боту. +- **Администраторы** — владелец и участники пространства с ролью «Администратор» +- **Руководители бесед и каналов, в которые добавлен бот** — доступ по роли в чате, куда добавлен бот + +У нового бота по умолчанию доступ есть только у создателя: администраторы не видят бота на вкладке **Управление**, пока создатель не отметит **Администраторы**. + +Руководители чатов меняют настройки и вебхуки бота. Имя, токены, авторизация от имени сотрудника, страница в витрине и удаление бота доступны только создателю и администраторам: токен открывает работу от имени бота, поэтому администраторам доступ выдавайте там, где доверили бы им сам токен. Что из этого доступно владельцу токена, в API показывает поле `permissions` в объекте бота. + +## Удаление бота + +Удалить бота можно кнопкой **Удалить бота** внизу вкладки. Бот исчезнет из всех бесед, каналов и тредов, его токены будут отозваны, а вебхуки и выданные ему авторизации перестанут работать. Удаление нельзя отменить. Через API — метод [Удаление бота](DELETE /bots/{id}). + +## Настройка через API + +Те же настройки задаются методом [Редактирование бота](PUT /bots/{id}) или сразу при создании методом [Новый бот](POST /bots): + +| Настройка | Поле | Значения | +| --- | --- | --- | +| Имя и никнейм | `webhook.name`, `webhook.nickname` | строки, никнейм оканчивается на `_bot` | +| Кто может добавлять бота в чаты | `who_can_add` | `creator`, `creator_admin`, `creator_admin_user`, а публичному боту соответствует `anyone` | +| Кто может редактировать настройки бота | `can_edit` | роли `admin` и `chat_owners`. Создатель имеет доступ всегда, поэтому пустой массив означает «только создатель» | +| Ограничить одним чатом | `single_chat` | `true` или `false` | diff --git a/apps/docs/content/guides/bots/setup.mdx b/apps/docs/content/guides/bots/setup.mdx index a1e22e31e..6f9e57e3c 100644 --- a/apps/docs/content/guides/bots/setup.mdx +++ b/apps/docs/content/guides/bots/setup.mdx @@ -1,126 +1,82 @@ --- -title: Создание и настройка -description: "Как создать бота в Пачке: выбор типа, копирование токена, настройка имени и аватара, настройка доступов и вкладок вебхуков и API" +title: Создание бота +description: "Как создать бота в Пачке: в разделе «Интеграции» или методом API, что настроить сразу после создания и жизненный цикл бота через API" related: - - /guides/bots/access - - /guides/bots/examples - - /guides/incoming-webhooks + - /guides/bots/settings + - /guides/bots/tokens + - /guides/bots/first-contact - { path: /guides/webhook/overview, title: Исходящие вебхуки } --- -# Создание и настройка +# Создание бота Бота можно создать двумя способами: -- **Через интерфейс** — отдельные настройки (тип бота, аватар) и наглядная пошаговая форма. Подходит для разовой ручной настройки. +- **Через интерфейс** — в разделе **Интеграции** > **Боты**. Подходит для ручной настройки: у каждой возможности бота своя вкладка в его карточке. - **Через API** ([Новый бот](POST /bots)) — программно, без интерфейса. Подходит для автоматизации: завести бота из своего сервиса или скрипта и сразу получить `access_token`. + + Создавать ботов могут администраторы и сотрудники, а владелец или администратор пространства может оставить это только администраторам. Подробнее — в разделе [Кто может создавать токены](/api/authorization#kto-mozhet-sozdavat-tokeny). + + ## Создание бота через интерфейс Создание и настройка ботов через интерфейс доступны в веб-версии и десктопном приложении Пачки. В мобильных приложениях (iOS и Android) эта возможность недоступна. -Для создания бота перейдите в **Автоматизации** > **Интеграции** > **Чат-боты и Вебхуки** и нажмите кнопку **«+»**. +Откройте **Интеграции** > **Боты** и нажмите **Создать бота**. В диалоге два поля: - +- **Название** — имя бота в чатах и в его профиле. +- **Ник для @упоминаний** — можно оставить пустым, тогда ник соберётся из названия. Ник уникален в пространстве и оканчивается на `_bot`. - - Владелец пространства может ограничить, кто может создавать ботов. Подробнее в разделе [настройка доступа](/api/authorization#kto-mozhet-sozdavat-tokeny). - + - - - - **Для одного чата** — подойдёт для отправки уведомлений из других сервисов. В одном чате можно собрать всех получателей и обсуждать уведомления в тредах. - - **Для нескольких чатов** — подойдёт, если вы хотите создать личное взаимодействие бота с каждым участником вашей компании или разными группами участников. - - **Unfurl бот** (только администраторам) — подойдёт для получения событий об отправке ссылок во всех чатах вашего пространства и возможности создавать их предпросмотр. +После создания откроется карточка бота. Бот создаётся без токенов и вебхуков, а каждая возможность включается на своей вкладке, когда понадобится. Чаще всего сразу нужны три шага: - Тип бота нельзя изменить после создания. Ограничение «для одного чата» распространяется только на каналы и беседы — бот по-прежнему может участвовать в тредах и личных сообщениях. Бот любого типа может быть настроен как публичный. - - - После создания бота перейдите на вкладку **API** и скопируйте `access_token` — он потребуется для работы с API от имени бота. Токен не имеет срока жизни. Там же доступен `user_id` бота — используется, например, в методе [Добавление пользователей](POST /chats/{id}/members). + + + На вкладке **API** нажмите **Создать токен**, задайте название и права. Значение токена показывается один раз: скопируйте его до закрытия окна. Подробнее — в разделе [Токены бота](/guides/bots/tokens). - - На вкладке **Основное** вы можете изменить имя бота и загрузить изображение — они будут отображаться в сообщениях от бота и в его профиле. + + На вкладке **Основное** решите, кто может добавлять бота в чаты и кто может его редактировать, и нужен ли публичный бот. Там же меняются имя, аватар и ник. Подробнее — в разделе [Настройки бота](/guides/bots/settings). - - Для получения событий от Пачки перейдите на вкладку **Исходящий Webhook**: укажите **Webhook URL**, на который будут приходить уведомления, и выберите типы событий (новые сообщения, реакции, нажатия кнопок и другие). Подробнее — в разделе [Исходящие вебхуки](/guides/webhook/overview). + + Чтобы бот узнавал о сообщениях и нажатиях кнопок, на вкладке **Исходящий вебхук** нажмите **Включить**, укажите URL своего сервера и отметьте события. Для новых сообщений выберите режим: новый бот слушает только команды, а их список пуст. Подробнее — в разделе [Первый диалог с ботом](/guides/bots/first-contact). +Созданный бот появится на вкладке **Управление** — подробнее в разделе [Где бот находится в интерфейсе](/guides/bots/overview#gde-bot-nahoditsya-v-interfeyse). + ## Создание бота через API Бота можно создать программно методом [Новый бот](POST /bots) — без интерфейса. Это удобно, когда нужно завести бота из своего сервиса или скрипта. - Передайте параметры бота в объекте `bot.webhook`: имя, никнейм, Webhook URL, список событий и команды. Никнейм должен заканчиваться на `_bot`. + Передайте параметры бота в объекте `webhook`: имя, никнейм, Webhook URL, список событий и команды. Обязательное поле одно — имя. Никнейм должен заканчиваться на `_bot`. - Обязательное поле одно — имя. Его и никнейм можно передать и на уровне `bot`, тогда объект `bot.webhook` не нужен: `{"bot": {"name": "Бот задач"}}` создаст бота с настройками вебхука по умолчанию. + По умолчанию `trigger_on` равен `commands`, а список команд пуст, поэтому о новых сообщениях бот не узнает. Если бот должен отвечать на сообщения, передайте `trigger_on: "all_messages"` или перечислите команды в `commands`. - Тип бота — в один или несколько чатов — задаётся полем `single_chat` и только при создании: изменить его потом нельзя, как и тип бота в интерфейсе. Ограничение «в один чат» распространяется только на беседы и каналы, треды и личные сообщения не в счёт. + В том же запросе можно включить авторизацию от имени сотрудника объектом `oauth_client` — подробнее в разделе [Настройка авторизации](/guides/oauth/setup#cherez-api). - В ответе вы получите `access_token` бота — сразу сохраните его. Посмотреть выданный токен повторно можно только в интерфейсе (вкладка **API** настроек бота), а вот перевыпустить — и там, и через API. Вместе с токеном придёт `id` бота (его `user_id`). + В ответе вы получите `access_token` бота — сразу сохраните его. Повторно значение не показывается ни в интерфейсе, ни через API: потерянный токен перевыпускают. Вместе с токеном придёт `id` бота (его `user_id`). -Получить параметры существующего бота можно методом [Информация о боте](GET /bots/{id}), а изменить — методом [Редактирование бота](PUT /bots/{id}). Бот может и сам прописать `URL` своего исходящего вебхука собственным токеном — методом [Саморегистрация вебхука бота](PUT /bot/webhook), без участия администратора. - -Остальной жизненный цикл бота тоже доступен через API: - -- [Список ботов](GET /bots) — боты, доступные вам для редактирования, с поиском по имени в параметре `query`. Полный перечень ботов пространства доступен Владельцу отдельным методом, см. [Права и роли](/guides/permissions#inventarizatsiya-botov-prostranstva). -- [Ротация токена бота](POST /bots/{id}/recreate_token) — перевыпуск токена чужому боту (скоуп `bots:write`), и [Ротация собственного токена бота](POST /bot/recreate_token) — бот перевыпускает токен сам себе (скоуп `bot_self:write`). Прежний токен инвалидируется сразу, новый приходит в ответе один раз. -- [Удаление бота](DELETE /bots/{id}) — токен инвалидируется, бот исключается из чатов, его исходящий вебхук удаляется. - -## Профиль бота - -Бот, как и любой участник пространства, имеет свой профиль. В нём отображаются имя, аватар, никнейм, статус и список общих чатов с ботом. Профиль бота можно редактировать — изменить имя, никнейм и другие поля. - -**Никнейм** — уникальный идентификатор бота для упоминания через `@`. Именно по никнейму сотрудники могут упоминать бота в сообщениях и добавлять его в [сквозные треды](/guides/bots/access#tredy). Никнейм и другие поля профиля можно изменить через интерфейс или через API — метод [Редактирование сотрудника](PUT /users/{id}). - -## Настройка доступов +Бот, созданный через API, сразу принимает запросы на входящий вебхук в своём формате, с шаблонизатором Liquid. Подробнее — в разделе [Входящие вебхуки](/guides/incoming-webhooks). -Эти настройки находятся на вкладке **Основное**. +Чтобы создать бота как в интерфейсе, без токена и входящего вебхука, передайте `empty: true`. Токены такому боту выпускают методом [Новый токен бота](POST /bots/{id}/tokens), а входящий вебхук включают полем `kind`. - +## Жизненный цикл через API -### Кто может редактировать настройки бота +Получить параметры существующего бота можно методом [Информация о боте](GET /bots/{id}), а изменить — методом [Редактирование бота](PUT /bots/{id}). Бот может и сам прописать `URL` своего исходящего вебхука собственным токеном — методом [Саморегистрация вебхука бота](PUT /bot/webhook), без участия администратора. Для этого токену нужно право `bot_self:webhook:write`: по умолчанию его нет, выдают его на вкладке **API**. -Управление доступов участников пространства к поиску бота в разделе **Чат-боты и Вебхуки** и редактированию его настроек (основных, вебхуков и токена API): - -- **Создатель** — этот пункт нельзя отключить, создатель бота всегда имеет доступ к настройкам бота -- **Администраторы** — владелец и участники пространства с ролью «Администратор» -- **Создатели и руководители чатов, в которые добавлен бот** — этот пункт позволяет управлять доступом к редактированию бота на уровне ролей в чате, куда добавлен бот - -### Кто может добавлять бота в чаты - -Первые три варианта оставляют бота закрытым и доступным для работы только через добавление его в каналы и беседы. Вариант **Публичный бот** предоставляет всем участникам пространства доступ к работе с ботом: в поиске, через личные сообщения, добавление в тред через упоминание бота в сообщении и тд. - -- **Создатель** -- **Создатель и Администраторы** -- **Все участники (кроме гостей)** -- **Публичный бот** - -### Настройка через API - -Эти доступы можно задать не только в интерфейсе, но и через API — методом [Редактирование бота](PUT /bots/{id}) или сразу при создании: - -- **Кто может редактировать настройки бота** — поле `can_edit` (роли `admin` и `chat_owners`). Создатель имеет доступ всегда, поэтому в поле перечисляются только дополнительные роли, а пустой массив означает «только создатель». -- **Кто может добавлять бота в чаты** — поле `who_can_add` (`creator`, `creator_admin`, `creator_admin_user`, `anyone`) - -## Настройка вебхуков и API - - - -### Входящий Webhook - -Позволяет отправлять сообщения в чат от имени бота одним HTTP-запросом — без использования API. В настройках доступны **Webhook URL**, выбор формата отображения (Liquid или Mustache), шаблон сообщения и поле для верификации (например, для интеграции с monday.com). Подробнее — в разделе [Входящие вебхуки](/guides/incoming-webhooks). - -### Исходящий Webhook - -Позволяет получать уведомления о событиях в реальном времени на указанный вами URL. В настройках доступны **Webhook URL**, **Signing secret** для проверки подлинности запросов, выбор типов событий (новые сообщения, реакции, нажатия кнопок, изменение участников и другие) и фильтрация по командам. Подробнее — в разделе [Исходящие вебхуки](/guides/webhook/overview). - -### API +- [Список ботов](GET /bots) — боты, доступные вам для редактирования, с поиском по имени в параметре `query`. Полный перечень ботов пространства доступен Владельцу отдельным методом, см. [Права и роли](/guides/permissions#inventarizatsiya-botov-prostranstva). +- [Список токенов бота](GET /bots/{id}/tokens), [Новый токен бота](POST /bots/{id}/tokens) и соседние методы — токены бота со своими именами и правами. Подробнее — в разделе [Токены бота](/guides/bots/tokens#tokeny-cherez-api). +- [Ротация токена бота](POST /bots/{id}/recreate_token) и [Ротация собственного токена бота](POST /bot/recreate_token) — перевыпуск основного токена. +- [Ротация секрета клиента](POST /bots/{id}/rotate_client_secret) — новый `client_secret` для авторизации от имени сотрудника. +- [Удаление бота](DELETE /bots/{id}) — токены отзываются, бот исключается из бесед, каналов и тредов, его вебхуки удаляются. -Вкладка с `access_token` и `user_id` бота для работы с [REST API](/guides/quickstart). Токен не имеет срока жизни, но при необходимости его можно перевыпустить кнопкой «Обновить Access token» или методом [Ротация токена бота](POST /bots/{id}/recreate_token). Здесь же выбираются скоупы токена — им соответствует поле `scopes` в методах создания и редактирования бота. Подробнее — в разделе [Авторизация](/api/authorization). +Изменения бота попадают в [журнал аудита](/guides/audit-events): выпуск, изменение и перевыпуск токенов, смена адреса исходящего вебхука, настроек истории событий и своих сообщений, списков доступа к боту, смена настроек авторизации, обновление секрета, выключение авторизации и удаление бота. diff --git a/apps/docs/content/guides/bots/showcase.mdx b/apps/docs/content/guides/bots/showcase.mdx new file mode 100644 index 000000000..a62e2198a --- /dev/null +++ b/apps/docs/content/guides/bots/showcase.mdx @@ -0,0 +1,84 @@ +--- +title: Витрина +description: "Витрина ботов в Пачке: каталог пространства на вкладке «Обзор» — карточки опубликованных ботов с авторизацией и список публичных ботов. Как опубликовать бота, что на его странице и как сотрудник подключает бота сам" +related: + - /guides/bots/settings + - /guides/bots/first-contact + - /guides/oauth/setup + - /guides/oauth/consent +--- + +# Витрина + +Витрина — вкладка **Обзор** в разделе **Интеграции** > **Боты**. Это каталог ботов вашего пространства: здесь сотрудники находят ботов, которыми можно пользоваться, и подключают их сами, без администратора. Витрину видят сотрудники, администраторы и мульти-гости. + +Пока в витрине нет ни одного бота, на вкладке **Обзор** объясняется, что такое боты и витрина, и есть ссылки на документацию. Тем, кто может создавать интеграции, там же видны кнопки быстрого старта: одно нажатие создаёт бота с входящим вебхуком GitLab, Grafana или обычным и открывает его карточку. Пока ботов в витрине не больше пяти, эти кнопки остаются внизу вкладки в строке **Подключить ещё**. + +Витрина общая только внутри пространства: в ней боты вашей компании, а бота из другой компании не видно и авторизовать нельзя. + + + +## Карточки и список + +Наверху вкладки — карточки опубликованных ботов с авторизацией. На карточке имя и аватар бота, отметка **Подключено**, если вы уже авторизовали бота, описание, создатель и кнопка **Сообщение**, если вы можете написать боту. У бота, которого вы можете редактировать, на карточке есть меню с пунктом **Редактировать**. + +Ниже — список **Публичные боты**: имя, ник и кнопка **Сообщение** у каждого. + +| | Карточки | Публичные боты | +| --- | --- | --- | +| Кто попадает | Боты с авторизацией, которых опубликовали в витрине | Все боты с включённым переключателем **Публичный бот** | +| Что нужно от бота | Включённая авторизация и сохранённое описание, скриншоты по желанию | Ничего, кроме публичности | +| Что открывает нажатие | Страницу бота | Профиль бота | + +Публичность и публикация — независимые настройки. Бот, который и опубликован, и публичный, показывается один раз — карточкой. + +## Страница бота + +У бота с авторизацией есть своя страница в витрине. + + + +На ней: + +- имя, аватар и создатель бота; +- описание — чем бот занимается и зачем его подключать; +- до пяти скриншотов; +- **Что бот может запросить** — права, которые бот попросит на экране согласия: больше этого он не запросит; +- отметка **Подключено**, если вы уже авторизовали бота, и кнопка **Сообщение**, если вы можете ему написать. + +## Как опубликовать бота + +Заполняют страницу и публикуют бота его создатель и администраторы пространства, если бот открыт им для редактирования. Всё делается на вкладке **OAuth** в карточке бота: откройте бота на вкладке **Управление** и перейдите на неё. + + + + Нажмите **Включить** и в окне **Включение авторизации** выберите, где хранится секрет, укажите адреса возврата и запрашиваемый доступ. Подробнее — в разделе [Настройка авторизации](/guides/oauth/setup#vklyuchenie). + + + В блоке **Страница на витрине** введите описание — чем бот занимается и зачем его подключать — и нажмите **Сохранить** под полем. Если нужно, добавьте кнопкой **Добавить** до пяти скриншотов PNG или JPG с соотношением сторон 16:9: они сохраняются сразу, а порядок меняется перетаскиванием. + + + + + Включите **Опубликовать в витрине** в начале того же блока — бот появится карточкой на вкладке **Обзор**. Пока описание не сохранено, переключатель недоступен. + + + +Через API те же шаги делают поля `oauth_client` и `promo` метода [Редактирование бота](PUT /bots/{id}) — подробнее в разделе [Настройка авторизации](/guides/oauth/setup#cherez-api). + + + **Публикация в витрине не даёт права написать боту.** Опубликованного, но непубличного бота сотрудник видит в каталоге, а написать ему может только при общем чате с ботом. Если бот подключается через диалог, сделайте его публичным на вкладке **Основное**. + + +Чтобы убрать бота из витрины, выключите **Опубликовать в витрине**. Удаление OAuth-клиента на той же вкладке ещё и отзывает все выданные авторизации — подробнее в разделе [Настройка авторизации](/guides/oauth/setup#otklyuchenie). + +## Как сотрудник подключает бота + +Бота подключают в разговоре с ним: + +1. Сотрудник находит бота в витрине и нажимает **Сообщение**. +2. Пишет боту, например `/start`. Личный чат создаётся без события, поэтому первым всегда пишет сотрудник — подробнее в разделе [Первый диалог с ботом](/guides/bots/first-contact). +3. Бот отвечает приветствием и кнопкой авторизации. +4. Сотрудник подтверждает права на экране согласия, и бот получает его токен. В витрине у бота появляется отметка **Подключено**. + +Что должно быть включено у бота, чтобы этот путь сработал, — в [Чек-листе запуска](/guides/oauth/checklist). Как собрать кнопку и обменять код на токен — в разделе [Получение токена](/guides/oauth/flow). Выданные авторизации сотрудник видит и отзывает на странице **Интеграции** > **API** — подробнее в разделе [Согласие и отзыв](/guides/oauth/consent). diff --git a/apps/docs/content/guides/bots/tokens.mdx b/apps/docs/content/guides/bots/tokens.mdx new file mode 100644 index 000000000..febcdd17d --- /dev/null +++ b/apps/docs/content/guides/bots/tokens.mdx @@ -0,0 +1,84 @@ +--- +title: Токены бота +description: "Токены бота в Пачке: несколько токенов со своими правами, выпуск, перевыпуск и удаление на вкладке «API», права самоуправления бота, токены через API и что делать, если токен утёк" +related: + - { path: /api/authorization, title: Авторизация } + - /guides/bots/settings + - /guides/bots/first-contact +--- + +# Токены бота + +Токен бота — ключ, которым ваш код обращается к [API](/guides/quickstart) от имени бота: отправляет сообщения, читает чаты, открывает формы. Токены выпускаются на вкладке **API** в карточке бота. Там же указан `user_id` бота: это его `id` в методах API. + +Вкладка **API** доступна создателю бота и администраторам пространства, если на вкладке **Основное** им открыт доступ к редактированию. Руководителю чата с ботом токены не видны, даже когда остальные настройки бота ему открыты — подробнее в разделе [Настройки бота](/guides/bots/settings#kto-mozhet-redaktirovat-nastroyki-bota). + +```http title="Заголовок авторизации" +Authorization: Bearer <токен бота> +``` + +## Выпуск токена + + + + + + На вкладке **API** нажмите **Создать токен** и задайте название — по нему токен узнаётся в списке, например по имени сервиса, который им пользуется. + + + Права задаются на каждый токен отдельно. Выдавайте минимально необходимые: токен для уведомлений не должен уметь удалять сообщения. Нужное право можно найти поиском по названию. + + + + + Значение токена показывается один раз, сразу после создания, в окне **Скопируйте ваш API токен**. Скопируйте его кнопкой **Скопировать и закрыть** — повторно значение не покажут ни в интерфейсе, ни через API. + + + +Токены бота не имеют срока жизни: токен работает, пока его не перевыпустят, не удалят или пока не удалят самого бота. + +## Несколько токенов + +У бота может быть несколько токенов, у каждого своё название и свои права. Удобно выпускать отдельный токен на каждый сервис, который работает от имени бота: если один из них скомпрометирован или больше не нужен, его отзывают, не трогая остальные. + +В списке у каждого токена видны первые и последние символы значения, число выданных разрешений, дата создания и когда токен последний раз использовался. Меню токена позволяет: + +- **Список разрешений** — посмотреть, что токену разрешено +- **Редактировать** — изменить название и права. Новые права действуют сразу, выпускать токен заново не нужно. +- **Перевыпустить** — старое значение перестаёт работать сразу, новое показывается один раз, а название и права сохраняются +- **Удалить** — токен перестаёт работать, восстановить его нельзя. Если токеном пользовались в последние 7 дней, диалог удаления предупредит об этом. + +## Права токена + +Права определяют, какие методы API можно вызывать этим токеном. Круг данных они не расширяют: бот видит открытые каналы и чаты, куда его добавили, какие бы права ни были у токена. Подробнее — в разделе [Доступы к чатам и сообщениям](/guides/bots/access). + +Часть прав есть только у ботов: + +- `bot_self:webhook:write` — бот сам меняет адрес своего исходящего вебхука методом [Саморегистрация вебхука бота](PUT /bot/webhook). Так делает, например, [n8n](/guides/n8n/trigger) в автоматическом режиме. +- `bot_self:write` — бот сам перевыпускает свой токен методом [Ротация собственного токена бота](POST /bot/recreate_token). + +Права для черновиков, управления ботами и другие права, которые выдаются только персональным токенам, боту недоступны. Полная таблица прав по ролям — в разделе [Доступные скоупы](/api/authorization#dostupnye-skoupy). Проверить права текущего токена можно методом [Информация о токене](GET /oauth/token/info). + +## Токены через API + +Токенами бота управляют те же методы, что стоят за вкладкой **API**: + +- [Список токенов бота](GET /bots/{id}/tokens) — действующие токены с замаскированным значением. +- [Новый токен бота](POST /bots/{id}/tokens) — токен с именем и правами. Значение приходит в ответе один раз. +- [Изменение токена бота](PUT /bots/{id}/tokens/{token_id}) — новое имя или права, они действуют сразу. +- [Перевыпуск токена бота](POST /bots/{id}/tokens/{token_id}/reissue) — новое значение вместо прежнего, имя и права остаются. +- [Удаление токена бота](DELETE /bots/{id}/tokens/{token_id}) — токен перестаёт работать сразу. + +Права выбирают из каталога: [Каталог прав бота](GET /bots/{id}/scopes) перечисляет права, которые можно выдать этому боту, с описаниями и категориями, как на вкладке. Методы вызывают персональным токеном со скоупами `bots:read` и `bots:write`. + +Бот, созданный методом [Новый бот](POST /bots), сразу получает основной токен: он приходит в поле `access_token` один раз, а его права задаются полем `webhook.scopes`, без которого бот получит набор по умолчанию. С `empty: true` бот создаётся без токена, как в интерфейсе. + +Основной токен — тот, что в списке без имени, а если такого нет, самый старый. К нему относятся поле `webhook.scopes` метода [Редактирование бота](PUT /bots/{id}) и два метода ротации: [Ротация токена бота](POST /bots/{id}/recreate_token) перевыпускает его персональным токеном, а [Ротация собственного токена бота](POST /bot/recreate_token) — сам бот, с правом `bot_self:write`. Ротация выпускает основной токен заново: прежнее значение перестаёт работать сразу, у нового другой `id` и нет имени, а значение приходит в ответе один раз. + +Если у бота нет ни одного токена, `webhook.scopes` создаёт основной токен, но его значение не возвращает. Чтобы получить значение, перевыпустите токен. + +## Если токен утёк + +Перевыпустите токен кнопкой **Перевыпустить** или методом [Перевыпуск токена бота](POST /bots/{id}/tokens/{token_id}/reissue): старое значение перестанет работать в ту же секунду. Затем обновите токен в сервисах, которые им пользуются. Если токен больше не нужен, удалите его. + +Токен в руках — это доступ ко всем данным бота. Не храните его в коде и репозиториях, передавайте через переменные окружения и хранилища секретов. diff --git a/apps/docs/content/guides/buttons.mdx b/apps/docs/content/guides/buttons.mdx index 8085653a4..0325c0005 100644 --- a/apps/docs/content/guides/buttons.mdx +++ b/apps/docs/content/guides/buttons.mdx @@ -17,13 +17,13 @@ related: - Перейдите в **Автоматизации** > **Интеграции** > **Чат-боты и Вебхуки** и создайте бота. Подробнее — в разделе [Боты](/guides/bots/overview). + Откройте **Интеграции** > **Боты** и нажмите **Создать бота**. Подробнее — в разделе [Боты](/guides/bots/overview). Используйте метод [Новое сообщение](POST /messages) с полем `buttons` — массив строк, каждая из которых содержит массив кнопок. - Для обработки Data-кнопок укажите Webhook URL в настройках бота на вкладке **Исходящий Webhook** и включите событие **Нажатие кнопок**. Подробнее — в разделе [Исходящие вебхуки](/guides/webhook/overview). + Для обработки Data-кнопок включите вебхук на вкладке **Исходящий вебхук** в карточке бота, указав URL своего сервера, и отметьте событие **Нажатие кнопок**. Подробнее — в разделе [Исходящие вебхуки](/guides/webhook/overview). При нажатии Data-кнопки бот получает вебхук с данными кнопки. Обработайте событие и дайте обратную связь — отредактируйте сообщение, отправьте новое или откройте [модальную форму](/guides/forms/overview). diff --git a/apps/docs/content/guides/cli/authentication.mdx b/apps/docs/content/guides/cli/authentication.mdx index 4588b16e1..65f2259ce 100644 --- a/apps/docs/content/guides/cli/authentication.mdx +++ b/apps/docs/content/guides/cli/authentication.mdx @@ -34,6 +34,8 @@ pachca auth login Под капотом — стандартный вход по коду устройства (OAuth 2.0 Device Authorization Grant, [RFC 8628](https://datatracker.ietf.org/doc/html/rfc8628)). CLI не открывает локальный порт и не принимает редирект, поэтому одинаково работает на ноутбуке, в SSH-сессии и в контейнере. +Каждый вход виден в списке **Токены CLI** на странице **Интеграции** > **API** под именем устройства. CLI передаёт имя машины, а для профиля не по умолчанию добавляет его имя в скобках — например, `macbook (ci)`, — поэтому два входа с одного ноутбука в списке различаются. Рядом показаны время входа и последнего вызова, а отзыв из списка завершает вход только на выбранном устройстве. + ## Где хранится токен Токен уходит в хранилище ключей операционной системы: Keychain на macOS, Secret Service на Linux, Диспетчер учётных данных на Windows. Файл конфигурации хранит только имя, почту и права — секрета в нём нет. @@ -58,7 +60,7 @@ pachca auth status ## Вход готовым токеном -Получить токен можно в интерфейсе: **Настройки** > **Автоматизации** > **API**. +Персональный токен создаётся на странице **Интеграции** > **API**, токен бота — на вкладке **API** в карточке бота. ```bash echo "$PACHCA_TOKEN" | pachca auth login --token - @@ -121,8 +123,8 @@ pachca auth logout bot-notify `pachca auth logout` удаляет профиль **с этой машины**. Что при этом происходит с самим токеном, зависит от способа входа: -- **Вход через браузер.** Токен гасится на сервере сразу — доступ закрывается в момент выхода, а не по истечении срока. Если сервер в этот момент недоступен, CLI об этом скажет: профиль всё равно удаляется, а токен доживает свой час. В списке токенов в **Автоматизации** > **API** такая сессия не появляется: она принадлежит приложению «Pachca CLI», а не вам. -- **Готовый токен.** Продолжит работать — он бессрочный. Удалите его в **Автоматизации** > **API**, если он больше не нужен. +- **Вход через браузер.** Токен гасится на сервере сразу — доступ закрывается в момент выхода, а не по истечении срока, и вход пропадает из списка **Токены CLI**. Если сервер в этот момент недоступен, CLI об этом скажет: профиль всё равно удаляется, а токен доживает свой час. Завершить вход можно и без терминала — кнопкой **Отозвать** в списке **Токены CLI**, например на потерянном ноутбуке. Команды с отозванным профилем отвечают `401` с подсказкой войти заново, в неё подставлено имя профиля. +- **Готовый токен.** Продолжит работать — он бессрочный. Удалите его на странице **Интеграции** > **API** или, если это токен бота, в карточке бота, когда он больше не нужен. ## Приоритет токена diff --git a/apps/docs/content/guides/cli/overview.mdx b/apps/docs/content/guides/cli/overview.mdx index d3b1484b7..b1267740b 100644 --- a/apps/docs/content/guides/cli/overview.mdx +++ b/apps/docs/content/guides/cli/overview.mdx @@ -28,7 +28,7 @@ related: Подробнее — [Установка](/guides/cli/installation). - Если вход выполняете вы сами, достаточно подтвердить его в браузере — получать токен заранее не нужно. Для CI и агентов, где подтверждать некому, передайте готовый токен из раздела **Автоматизации** > **API**. + Если вход выполняете вы сами, достаточно подтвердить его в браузере — получать токен заранее не нужно. Для CI и агентов, где подтверждать некому, передайте готовый токен со страницы **Интеграции** > **API**. ```bash # Подтверждение в браузере diff --git a/apps/docs/content/guides/forms/handling.mdx b/apps/docs/content/guides/forms/handling.mdx index d1b83bbe6..bf072620c 100644 --- a/apps/docs/content/guides/forms/handling.mdx +++ b/apps/docs/content/guides/forms/handling.mdx @@ -22,9 +22,11 @@ related: ## Получение результатов -После заполнения пользователем полей в представлении и отправки их, в ваше приложение отправляется исходящий вебхук. Вебхук будет отправлен на `Webhook URL`, который вы указали в настройках бота во вкладке «Исходящий Webhook», от имени которого было отправлено сообщение с кнопкой (нажатие на которую и вызвало открытие представления). +После заполнения пользователем полей в представлении и отправки их, в ваше приложение отправляется исходящий вебхук. Вебхук будет отправлен на `Webhook URL` того бота, от имени которого было отправлено сообщение с кнопкой (нажатие на неё и открыло представление). Адрес задаётся на вкладке «Исходящий вебхук» в карточке бота. -Задача вашего приложения - обработать входяший вебхук в короткое время и дать ответ. Это может быть как успех и команда на закрытие представления пользователю в интерфейсе Пачки, так и набор ошибок, которые необходио отобразить пользователю в представлении. +Отправку формы бот получает, только если у него включено событие **Нажатие кнопок** (`button_click`). Добавлять бота в чат для этого не нужно: вебхук приходит тому боту, который открыл форму. + +Задача вашего приложения - обработать входящий вебхук в короткое время и дать ответ. Это может быть как успех и команда на закрытие представления пользователю в интерфейсе Пачки, так и набор ошибок, которые необходимо отобразить пользователю в представлении. Ваше приложение должно дать ответ на вебхук в течение **3 секунд**. В ином случае, пользователь получит ошибку отправки в интерфейсе Пачки. Все значения полей будут сохранены и **пользователь повторит попытку отправки формы**. diff --git a/apps/docs/content/guides/incoming-webhooks.mdx b/apps/docs/content/guides/incoming-webhooks.mdx index 4b780a1c7..50ffdf0a3 100644 --- a/apps/docs/content/guides/incoming-webhooks.mdx +++ b/apps/docs/content/guides/incoming-webhooks.mdx @@ -17,19 +17,22 @@ related: - Перейдите в **Автоматизации** > **Интеграции** > **Чат-боты и Вебхуки** и создайте бота. Подробнее — в разделе [Боты](/guides/bots/overview). + Откройте **Интеграции** > **Боты** и нажмите **Создать бота**. Подробнее — в разделе [Боты](/guides/bots/overview). - - В настройках бота перейдите на вкладку **Входящий Webhook** и скопируйте сгенерированный URL. + + В карточке бота на вкладке **Входящий вебхук** нажмите **Включить** и выберите, что будет присылать данные: GitLab, Grafana или **Свой формат** для любого другого сервиса. Источник можно поменять позже. - - Укажите скопированный URL как адрес для уведомлений (webhook URL) в вашей CRM, CI/CD, мониторинге или другом сервисе. + + После включения на вкладке появится адрес, на который сервис будет отправлять запросы. Скопируйте его. + + + Укажите скопированный адрес как адрес для уведомлений (webhook URL) в вашей CRM, CI/CD, мониторинге или другом сервисе. Сообщения от вебхука публикуются во все групповые чаты, где состоит бот. Добавьте бота в чаты, в которые хотите получать уведомления — через настройки чата или через API-метод [Добавление пользователей](POST /chats/{id}/members). - При наступлении события сервис отправляет `POST`-запрос с JSON-данными на Webhook URL. Минимальный формат запроса: + При наступлении события сервис отправляет `POST`-запрос с JSON-данными на адрес вебхука. Для своего формата минимальный запрос такой: ```json { @@ -37,7 +40,7 @@ related: } ``` - Поле `message` содержит текст, который будет опубликован от имени бота. + Поле `message` содержит текст, который будет опубликован от имени бота. Запросы GitLab и Grafana Пачка разбирает сама, в их настройках достаточно указать адрес. Пачка обрабатывает запрос и публикует сообщение от имени бота во все групповые чаты, где он состоит. @@ -46,13 +49,21 @@ related: ## Настройки -Настройки входящего вебхука находятся на вкладке **Входящий Webhook** в настройках бота. +Настройки входящего вебхука находятся на вкладке **Входящий вебхук** в карточке бота и появляются после включения. Кнопка **Удалить вебхук** внизу вкладки выключает его: адрес перестаёт принимать запросы, а настройки и шаблон удаляются. + + + +### Источник - +- **GitLab** — пуши, пайплайны, merge request и комментарии +- **Grafana** — алерты со скриншотами графиков +- **Свой формат** — любой сервис: JSON и шаблон сообщения + +Для GitLab и Grafana Пачка сама разбирает запрос и собирает сообщение, поэтому шаблон нужен только своему формату. ### Шаблон сообщения -По умолчанию Пачка публикует содержимое поля `message` из входящего JSON. Если вместо готового текста вы хотите отправлять произвольную JSON-структуру и гибко формировать сообщение из её полей — укажите **формат отображения** и **шаблон**. +По умолчанию Пачка публикует содержимое поля `message` из входящего JSON. Если вместо готового текста вы хотите отправлять произвольную JSON-структуру и гибко формировать сообщение из её полей — выберите **формат шаблона** и заполните **шаблон сообщения**. При пустом шаблоне в сообщение попадает поле `message`. Пачка поддерживает два шаблонизатора: @@ -99,21 +110,22 @@ Liquid также поддерживает: - **Фильтры дат** — `date` с форматированием (`%d.%m.%Y`, `%H:%M` и пр.) - После отправки вебхука в настройках бота появляется кнопка **«Показать последний полученный объект...»**. Нажмите на неё — откроется модальное окно с содержимым последнего полученного JSON. Используйте его, чтобы определить нужные поля и перенести их в шаблон. + После первого запроса на вкладке появляется ссылка **Показать последний полученный объект** с датой получения. Нажмите на неё — откроется окно с содержимым последнего полученного JSON. Используйте его, чтобы определить нужные поля и перенести их в шаблон. ### Показывать превью ссылок -Если включено, Пачка будет генерировать превью для ссылок в сообщениях бота — аналогично тому, как это работает для обычных сообщений. +Если включено, Пачка разворачивает ссылки из сообщений вебхука в превью — так же, как в обычных сообщениях. ### Поле для верификации -Некоторые сервисы (например, [monday.com](https://monday.com)) при настройке вебхука отправляют проверочный запрос и ожидают получить в ответе определённое поле. Укажите название поля проверки — Пачка вернёт его значение в ответе на запрос верификации. +Некоторые сервисы (например, [monday.com](https://monday.com)) при настройке вебхука отправляют проверочный запрос и ожидают получить в ответе определённое поле. Укажите название поля проверки — Пачка ответит JSON-объектом с этим полем и его значением. Для monday.com это слово `challenge`. ## Настройка через API Все эти настройки можно задать программно, без интерфейса — методами [Новый бот](POST /bots) и [Редактирование бота](PUT /bots/{id}): +- `kind` — источник: `simple` для своего формата, `gitlab` или `grafana` - `template` — шаблон сообщения - `template_engine` — шаблонизатор (`liquid` или `mustache`) - `challenge_key` — поле для верификации @@ -121,6 +133,8 @@ Liquid также поддерживает: Текущие значения возвращаются в объекте бота и доступны через метод [Информация о боте](GET /bots/{id}). +Бот, созданный через API, принимает запросы в своём формате сразу, с шаблонизатором Liquid по умолчанию. Пустой бот, созданный с `empty: true`, входящего вебхука не имеет, пока ему не задали `kind`. + ## Ограничения @@ -129,6 +143,7 @@ Liquid также поддерживает: используйте API-метод [Новое сообщение](POST /messages). +- **Формат запроса** — Пачка принимает тело в форматах `application/json`, `application/x-www-form-urlencoded` и `multipart/form-data`. На запрос с другим заголовком `Content-Type` или без него вебхук отвечает `415` и перечисляет допустимые форматы в тексте ответа, сообщение не публикуется. - **Максимальная длина сообщения** — 40 000 байт. Для кириллицы это около 20 000 символов, поскольку каждый символ занимает два байта. Если результат шаблона превышает лимит, сообщение не будет отправлено. - **Пустое сообщение** — если шаблон возвращает пустую строку, сообщение не будет отправлено. - **Ошибка в шаблоне** — если шаблон содержит синтаксическую ошибку, в чат будет отправлено сообщение вида `Ошибка в шаблоне: описание ошибки`. diff --git a/apps/docs/content/guides/link-previews.mdx b/apps/docs/content/guides/link-previews.mdx index 60ff49462..773d7e83c 100644 --- a/apps/docs/content/guides/link-previews.mdx +++ b/apps/docs/content/guides/link-previews.mdx @@ -14,14 +14,14 @@ Unfurling — это создание превью ссылки в сообще ## Как это работает - - Перейдите в **Автоматизации** > **Интеграции** > **Чат-боты и Вебхуки** и создайте бота с типом **Unfurl бот**. Создать такого бота может только владелец пространства или участник с ролью «Администратор». Подробнее — в разделе [Боты](/guides/bots/overview). + + Откройте **Интеграции** > **Боты** и нажмите **Создать бота**. Подробнее — в разделе [Создание бота](/guides/bots/setup). - - В настройках Unfurl-бота укажите до 5 доменов, ссылки на которые бот будет отслеживать. Бот отслеживает ссылки во всех чатах пространства — добавлять его в конкретные чаты не нужно. + + В карточке бота на вкладке **Исходящий вебхук** нажмите **Включить** и укажите URL вашего сервера. Подробнее — в разделе [Исходящие вебхуки](/guides/webhook/overview). - - На вкладке **Исходящий Webhook** укажите URL вашего сервера и включите событие **Отправка ссылок**. Подробнее — в разделе [Исходящие вебхуки](/guides/webhook/overview). + + В списке событий в группе **Ссылки** включите **Отправка ссылок в сообщении (unfurl)** и перечислите через запятую до 5 доменов, ссылки на которые бот будет отслеживать. Бот получает ссылки из всех чатов пространства, поэтому добавлять его в чаты не нужно, а включить событие, задать домены и менять адрес исходящего вебхука у такого бота может только администратор или владелец пространства. Через API это событие `message_link_shared` в поле `events` и домены в `unfurl_domains` метода [Редактирование бота](PUT /bots/{id}). При появлении ссылки на отслеживаемый домен бот получит вебхук с массивом `links`. Каждый объект содержит `url`, `domain` и `skip: boolean` — если `skip` равен `true`, автор сообщения скрыл превью для этой ссылки и бот не должен создавать превью. Извлеките данные из вашего сервиса по оставшимся URL. @@ -45,6 +45,10 @@ Unfurling — это создание превью ссылки в сообще +Поля `entity_type`, `entity_id` и `thread` — те же, что в вебхуке о новом сообщении: по ним видно, в беседе, канале, треде или личной переписке отправлена ссылка. Бот не состоит в этом чате, поэтому в личной переписке `entity_id` приходит `null`. + +Ссылки из сообщений другого бота приходят, только если у того включён показ превью ссылок во входящем вебхуке. Ссылки из своих сообщений бот не получает, если у него включено «Игнорировать свои сообщения». + ## Создание превью Для создания превью используйте метод [Unfurl (разворачивание ссылок)](POST /messages/{id}/link_previews), передав `message_id` из вебхука. diff --git a/apps/docs/content/guides/n8n/advanced.mdx b/apps/docs/content/guides/n8n/advanced.mdx index 4df7136d1..ebdffd74b 100644 --- a/apps/docs/content/guides/n8n/advanced.mdx +++ b/apps/docs/content/guides/n8n/advanced.mdx @@ -184,9 +184,9 @@ AI Agent самостоятельно выбирает подходящий ин ## Разворачивание ссылок -Ресурс **Message** с операцией **Unfurl** позволяет формировать кастомные превью для ссылок в сообщениях бота. +Ресурс **Message** с операцией **Unfurl** ставит к ссылкам в сообщениях превью с заголовком, описанием и изображением — например, к ссылкам на задачи во внутреннем трекере. -Когда бот отправляет сообщение со ссылкой, Пачка может запросить у бота данные для превью. Бот может ответить через [Unfurl (разворачивание ссылок)](POST /messages/{id}/link_previews) с заголовком, описанием и изображением. +Сценарий начинается с события **Link Shared** в узле **Pachca Trigger**: бот получает его, когда в любом чате пространства появляется ссылка на один из его доменов. Домены и само событие задаются на вкладке **Исходящий вебхук** в карточке бота, и включить их может только администратор или владелец пространства. Дальше workflow собирает данные по ссылке и отвечает операцией **Unfurl** — методом [Unfurl (разворачивание ссылок)](POST /messages/{id}/link_previews) по `message_id` из события. Подробнее — в [документации разворачивания ссылок](/guides/link-previews). diff --git a/apps/docs/content/guides/n8n/resources.mdx b/apps/docs/content/guides/n8n/resources.mdx index 7f066829b..4f84dbb6a 100644 --- a/apps/docs/content/guides/n8n/resources.mdx +++ b/apps/docs/content/guides/n8n/resources.mdx @@ -22,7 +22,7 @@ related: | # | Ресурс | Операций | Описание | Только v2 | |---|--------|:---:|----------|:---:| | 1 | [Message](#message) | 8 | Сообщения: создание, редактирование, удаление, закрепление, unfurl | | -| 2 | [Chat](#chat) | 8 | Чаты: создание, обновление, архивация, экспорт | | +| 2 | [Chat](#chat) | 10 | Чаты: создание, обновление, архивация, экспорт, отметка непрочитанным | | | 3 | [Chat Member](#chat-member) | 7 | Участники чата: добавление, удаление, роли, теги | да | | 4 | [User](#user) | 10 | Сотрудники: CRUD, аватар, статус | | | 5 | [Group Tag](#group-tag) | 6 | Теги сотрудников: CRUD, список пользователей | | @@ -32,7 +32,7 @@ related: | 9 | [OAuth](#oauth) | 1 | Информация о токене | да | | 10 | [Task](#task) | 5 | Задачи: полный CRUD | | | 11 | [Draft](#draft) | 5 | Черновики и отложенные сообщения: полный CRUD | да | -| 12 | [Bot](#bot) | 10 | Боты: создание, получение, список, редактирование, удаление, вебхук, ротация токена, события | | +| 12 | [Bot](#bot) | 18 | Боты: создание, получение, список, редактирование, удаление, вебхук, токены, ротация токена и секрета, события | | | 13 | [File](#file) | 2 | Загрузка файлов через S3, скачивание защищённых вложений | | | 14 | [Form](#form) | 1 | Модальные формы | | | 15 | [Custom Property](#custom-property) | 1 | Дополнительные поля | да | @@ -69,7 +69,7 @@ related: ## Chat -Чаты: создание, получение, обновление, архивация и разархивация. +Чаты: создание, получение, обновление, архивация и разархивация, отметка непрочитанным. | Операция | API | |----------|-----| @@ -82,6 +82,7 @@ related: | Request Export | [Экспорт сообщений](POST /chats/exports) | | Download Export | [Скачать архив экспорта](GET /chats/exports/{id}) | | Get Many Workspace Chats | [Список чатов пространства](GET /company/chats) | +| Mark Unread | [Отметка чата непрочитанным](PUT /chats/{id}/unread) | **Сортировка в Get Many:** параметры `sort` (`id` или `last_message_at`) и `order` (`asc` / `desc`). Также доступны фильтры `availability`, `lastMessageAtAfter`, `lastMessageAtBefore`. @@ -236,7 +237,7 @@ related: ## Bot -Боты: создание, получение, список, редактирование, удаление, саморегистрация вебхука, ротация токена, история и удаление событий. +Боты: создание, получение, список, редактирование, удаление, саморегистрация вебхука, токены бота и их права, ротация токена и секрета клиента, история и удаление событий. | Операция | API | |----------|-----| @@ -251,6 +252,13 @@ related: | Get Many Events | [История событий](GET /webhooks/events) | | Remove Events | [Удаление события](DELETE /webhooks/events/{id}) | | Get Many Workspace Bots | [Список ботов пространства](GET /company/bots) | +| Get Many Tokens | [Список токенов бота](GET /bots/{id}/tokens) | +| Create Token | [Новый токен бота](POST /bots/{id}/tokens) | +| Update Token | [Изменение токена бота](PUT /bots/{id}/tokens/{token_id}) | +| Reissue Token | [Перевыпуск токена бота](POST /bots/{id}/tokens/{token_id}/reissue) | +| Delete Token | [Удаление токена бота](DELETE /bots/{id}/tokens/{token_id}) | +| Get Scopes | [Каталог прав бота](GET /bots/{id}/scopes) | +| Rotate Client Secret | [Ротация секрета клиента](POST /bots/{id}/rotate_client_secret) | **Get Many Workspace Bots** отдаёт всех ботов пространства, включая недоступных владельцу токена для редактирования. У таких ботов заполнены только `Name` и `Nickname`, остальные настройки приходят пустыми. Доступно владельцу пространства на тарифе «Корпорация». diff --git a/apps/docs/content/guides/n8n/setup.mdx b/apps/docs/content/guides/n8n/setup.mdx index a8f740835..5c2d25e23 100644 --- a/apps/docs/content/guides/n8n/setup.mdx +++ b/apps/docs/content/guides/n8n/setup.mdx @@ -128,8 +128,8 @@ npm install n8n-nodes-pachca В Пачке доступны два типа токенов: - - **Персональный токен** — доступен в разделе **Автоматизации** > **Интеграции** > **API** - - **Токен бота** — доступен в настройках бота на вкладке **API** + - **Персональный токен** — создаётся на странице **Интеграции** > **API** + - **Токен бота** — создаётся в карточке бота на вкладке **API** (**Интеграции** > **Боты** > **Управление**) Доступные операции зависят от [скоупов](/api/authorization#skoupy) токена, а не от его типа. Подробнее — в разделе [Авторизация](/api/authorization). diff --git a/apps/docs/content/guides/n8n/trigger.mdx b/apps/docs/content/guides/n8n/trigger.mdx index 0913c888d..e8a652c47 100644 --- a/apps/docs/content/guides/n8n/trigger.mdx +++ b/apps/docs/content/guides/n8n/trigger.mdx @@ -102,14 +102,14 @@ Pachca Trigger поддерживает два режима настройки: - Откройте настройки вашего бота в Пачке, перейдите на вкладку **Исходящий Webhook** и вставьте скопированный Production URL в поле **Webhook URL**. Подробнее — в разделе [Настройка и типы событий](/guides/webhook/events#obschie-nastroyki). + Откройте карточку бота в Пачке и на вкладке **Исходящий вебхук** укажите скопированный Production URL: при первом включении вебхука кнопкой **Включить**, а если он уже включён — в поле адреса. Подробнее — в разделе [Настройка и типы событий](/guides/webhook/events#obschie-nastroyki). Нажмите **Activate** в n8n. С этого момента бот отправляет события в ваш workflow. -В ручном режиме URL в настройках бота вы ставите сами — значит и очищать его тоже нужно самостоятельно. Если вы удаляете workflow или меняете URL, очистите поле **Webhook URL** в настройках бота в Пачке вручную — иначе Пачка будет продолжать отправлять события на недоступный адрес. +В ручном режиме URL в настройках бота вы ставите сами — значит и очищать его тоже нужно самостоятельно. Если вы удаляете workflow или меняете URL, замените адрес на вкладке **Исходящий вебхук** в карточке бота или удалите там вебхук кнопкой **Удалить вебхук** — иначе Пачка будет продолжать отправлять события на недоступный адрес. ## Автоматический режим @@ -121,13 +121,13 @@ Pachca Trigger поддерживает два режима настройки: - Откройте Pachca API Credentials и в поле **Access Token** вставьте токен. Подойдёт **токен бота** (из настроек бота → вкладка **API**) — тогда бот зарегистрирует вебхук сам. Или **персональный токен** (из **Автоматизации** → **Интеграции** → **API**) со скоупом `bots:write` и доступом редактора к целевому боту. + Откройте Pachca API Credentials и в поле **Access Token** вставьте токен. Подойдёт **токен бота** (карточка бота → вкладка **API**) — тогда бот зарегистрирует вебхук сам. Или **персональный токен** (**Интеграции** → **API**) со скоупом `bots:write`, если его владелец может редактировать целевого бота. В узле **Pachca Trigger** выберите нужный тип события, затем установите **Webhook Setup** = **Automatic**. - Для **персонального токена** заполните появившееся поле **Bot ID** — ID бота, которому нужно прописать Webhook URL (его видно в адресе страницы настроек бота в Пачке). Для **токена бота** это поле не нужно: бот регистрирует себя сам. + Для **персонального токена** заполните появившееся поле **Bot ID** — ID бота, которому нужно прописать Webhook URL (это `user_id` на вкладке **API** карточки бота, его же видно в адресе карточки). Для **токена бота** это поле не нужно: бот регистрирует себя сам. Нажмите **Activate** в правом верхнем углу. Узел сам зарегистрирует Production URL в настройках бота. С этого момента бот отправляет события в ваш workflow. @@ -163,7 +163,7 @@ Pachca Trigger поддерживает два режима настройки: Pachca->>Bot: Очистить webhook_url`} /> -**Если получили 403 Forbidden при активации** — токену не хватает прав. Для **токена бота** включите скоуп `bot_self:webhook:write` (настройки бота → вкладка **API**). Для **персонального токена** нужен скоуп `bots:write` и доступ редактора к указанному боту — проверьте доступы или вернитесь в **Manual**. +**Если получили 403 Forbidden при активации** — токену не хватает прав. Для **токена бота** добавьте ему право `bot_self:webhook:write` (карточка бота → вкладка **API** → **Редактировать** в меню токена). Для **персонального токена** нужен скоуп `bots:write` и доступ редактора к указанному боту — проверьте доступы или вернитесь в **Manual**. ## Альтернатива: установка URL через узел Pachca Bot Update diff --git a/apps/docs/content/guides/n8n/troubleshooting.mdx b/apps/docs/content/guides/n8n/troubleshooting.mdx index efce14647..5667f2c7d 100644 --- a/apps/docs/content/guides/n8n/troubleshooting.mdx +++ b/apps/docs/content/guides/n8n/troubleshooting.mdx @@ -42,8 +42,8 @@ related: 1. Откройте **Credentials** и проверьте значение **Access Token** 2. Убедитесь, что токен скопирован целиком, без лишних пробелов 3. Нажмите **Test** — при ошибке создайте новый токен в Пачке -4. Для бот-токена: **Настройки бота** → вкладка **API** → скопируйте токен -5. Для персонального токена: **Автоматизации** → **Интеграции** → **API** +4. Для токена бота: значение показывается только при создании, поэтому потерянный токен перевыпустите в карточке бота на вкладке **API** (**Перевыпустить** в меню токена) +5. Для персонального токена: создайте новый на странице **Интеграции** → **API** ### Недостаточно прав (403 Forbidden) @@ -79,8 +79,8 @@ related: **Решение:** -1. **Токен бота:** включите для бота скоуп `bot_self:webhook:write` — настройки бота → вкладка **API** -2. **Персональный токен:** убедитесь, что у пользователя токена стоит роль **Редактор** в списке доступов бота, и что у токена есть скоуп `bots:write` (в настройках токена в **Автоматизации** → **Интеграции** → **API**) +1. **Токен бота:** добавьте токену право `bot_self:webhook:write` — в карточке бота на вкладке **API** выберите **Редактировать** в меню токена +2. **Персональный токен:** убедитесь, что владелец токена может редактировать бота — он его создатель или подходит под настройку **Кто может редактировать настройки бота** — и что у токена есть скоуп `bots:write` (**Редактировать** в меню токена на странице **Интеграции** → **API**) 3. Либо переключите **Webhook Setup** = **Manual** и пропишите Production URL в настройках бота самостоятельно — см. [Ручной режим](/guides/n8n/trigger#ruchnoy-rezhim) --- @@ -109,14 +109,14 @@ related: 1. **Бот не добавлен в чат** — бот получает события только из чатов, в которых он состоит. Добавьте бота в нужный канал 2. **Workflow не активирован** — нажмите **Activate** в правом верхнем углу. Неактивные workflow не принимают вебхуки -3. **URL не прописан в настройках бота** — в ручном режиме узел не трогает webhook-слот бота. Проверьте, что Production URL вставлен в поле **Webhook URL** в настройках бота (вкладка **Исходящий Webhook**). В автоматическом режиме убедитесь, что в узле указан корректный **Bot ID** +3. **URL не прописан в настройках бота** — в ручном режиме узел не трогает webhook-слот бота. Проверьте, что Production URL указан адресом исходящего вебхука в карточке бота (вкладка **Исходящий вебхук**). В автоматическом режиме убедитесь, что в узле указан корректный **Bot ID** 4. **n8n недоступен извне** — при локальной установке Пачка не может отправить вебхук на `localhost`. Используйте туннель (ngrok, Cloudflare Tunnel) или разверните n8n на сервере с публичным IP ### Ошибка подписи (Signature Mismatch) **Причина:** Signing Secret в Credentials не совпадает с секретом бота в Пачке. -**Решение:** скопируйте Signing Secret из настроек бота в Пачке (вкладка **Исходящий Webhook**) и вставьте в Credentials. +**Решение:** скопируйте Signing secret из карточки бота в Пачке (вкладка **Исходящий вебхук**) и вставьте в Credentials. --- diff --git a/apps/docs/content/guides/oauth/checklist.mdx b/apps/docs/content/guides/oauth/checklist.mdx new file mode 100644 index 000000000..31c6ca02e --- /dev/null +++ b/apps/docs/content/guides/oauth/checklist.mdx @@ -0,0 +1,42 @@ +--- +title: Чек-лист запуска +description: "Что должно быть включено у бота, чтобы авторизация от имени сотрудника заработала: сотрудник может написать боту, бот узнаёт о сообщении и отвечает кнопкой, вкладка «OAuth» настроена. Что видно, когда чего-то не хватает" +related: + - /guides/oauth/setup + - /guides/oauth/flow + - /guides/bots/first-contact +--- + +# Чек-лист запуска + +Авторизация проходит через диалог с ботом: сотрудник пишет боту, бот отвечает кнопкой, сотрудник соглашается, и бот получает токен. Поэтому ломается она чаще всего не на OAuth, а на настройках вокруг него. Пройдите список перед запуском бота и вернитесь к нему, если на этом пути что-то не срабатывает. + + + + - Бот публичный, у сотрудника есть с ботом общий чат, или бот написал сотруднику первым. Переключатель **Публичный бот** — на вкладке **Основное** в карточке бота. + - Публикация в витрине сама по себе написать боту не позволяет. + + Без этого у бота нет кнопки **Сообщение**. Подробнее — в разделе [Как сотрудник попадает к боту](/guides/bots/first-contact#kak-sotrudnik-popadaet-k-botu). + + + - Исходящий вебхук включён и указывает на ваш сервер. + - Включено событие **Новые сообщения** в режиме **Любые сообщения** или с командой, с которой начинается разговор. Новый бот слушает только команды, а их список пуст. + - Сервер проверяет подпись запросов, а бот игнорирует свои сообщения. + + Без вебхука и события сотрудник пишет, а бот молчит. Как настроить — в разделе [Первый диалог с ботом](/guides/bots/first-contact#chto-nastroit-zaranee). + + + - У бота есть токен с правом `messages:create`. + - Кнопка ведёт на экран согласия. Как её собрать — в разделе [Получение токена](/guides/oauth/flow#shagi). + + Без права отправки метод [Новое сообщение](POST /messages) ответит `403`, и кнопка до сотрудника не дойдёт. Подробнее о правах — в разделе [Токены бота](/guides/bots/tokens#prava-tokena). + + + - Сотрудникам разрешено выдавать доступ ботам: в настройках пространства **Кто может создавать персональные токены** — **Все сотрудники**. По умолчанию там **Только администраторы**, и тогда сотрудник вместо согласия видит отказ. + - Авторизация на вкладке **OAuth** включена, указан хотя бы один адрес возврата. + - Запрашиваемый доступ задан: в нём только права, которые боту действительно нужны. + - Приложение без секрета передаёт PKCE с методом `S256`, серверное хранит `client_secret` и обменивает код на своей стороне. + + Без этого сотрудник не дойдёт до согласия или бот не сможет обменять код на токен. Настройки вкладки — в разделе [Настройка авторизации](/guides/oauth/setup#vklyuchenie), ошибки обмена — в разделе [Ошибки и отказы](/guides/oauth/flow#oshibki-i-otkazy). + + diff --git a/apps/docs/content/guides/oauth/consent.mdx b/apps/docs/content/guides/oauth/consent.mdx new file mode 100644 index 000000000..bbdb0d111 --- /dev/null +++ b/apps/docs/content/guides/oauth/consent.mdx @@ -0,0 +1,66 @@ +--- +title: Согласие и отзыв +description: "Экран согласия при авторизации бота: что видит сотрудник, кто не может выдать доступ, повторная авторизация, список «Авторизации» на странице «API», отзыв доступа и что после него происходит с ботом" +related: + - /guides/oauth/flow + - /guides/oauth/setup + - { path: /api/authorization, title: Авторизация } + - { path: /guides/permissions, title: Права и роли } +--- + +# Согласие и отзыв + +## Экран согласия + +Кнопка авторизации открывает экран согласия в веб-версии Пачки. + + + +На нём сотрудник видит: + +- вопрос «Авторизовать …?» с именем бота и рядом два аватара — свой и бота; +- пространство и свою почту — чтобы не выдать доступ из чужого аккаунта; +- **Запрашиваемые разрешения** — набор из настроек бота, а когда прав много, они сгруппированы по категориям; +- кнопки **Разрешить** и **Отменить**. + +После **Разрешить** браузер сразу возвращается на адрес бота с кодом авторизации. **Отменить** возвращает браузер назад, и бот ничего не получает. + + + Выбирать отдельные права на экране нельзя: сотрудник соглашается на весь набор или не соглашается вовсе. Поэтому просите у сотрудника только то, что действительно нужно боту. + + +## Кто не может выдать доступ + +Вместо экрана согласия сотрудник увидит отказ в трёх случаях: + +- **Он гость.** Этой роли доступ к API не выдаётся. +- **Выдавать доступ ботам могут только администраторы.** Так по умолчанию, пока в настройке **Кто может создавать персональные токены** не выбрано **Все сотрудники**. Отказ получат все, кто не администратор, в том числе мульти-гости. +- **Бот создан в другом пространстве.** + +## Как роль ограничивает права + +Токен сотрудника никогда не даёт больше, чем может сам сотрудник. Права из набора проверяются на каждом запросе по его текущей роли: если роль не позволяет действие, запрос вернёт `403` с `insufficient_scope`, даже если право есть в наборе. Когда роль меняется, это отражается на токене сразу, выпускать его заново не нужно. Подробнее — в разделе [Права и роли](/guides/permissions). + +## Повторная авторизация + +Если сотрудник снова открывает кнопку, а набор прав в настройках бота не менялся, бот получит тот же токен, а не второй. У серверного приложения повторная авторизация с тем же набором проходит без экрана согласия: браузер сразу возвращается на адрес бота с новым кодом. + +Когда набор в настройках бота расширили, уже выданные авторизации не меняются. Новые права сотрудник увидит и подтвердит при следующей авторизации — для этого бот присылает кнопку заново. + +## Список «Авторизации» + +Все боты, которым сотрудник выдал доступ, собраны в списке **Авторизации** на странице **Интеграции** > **API**. Для каждого видно, когда бот подключён и когда последний раз использовался, а меню позволяет посмотреть выданные разрешения и отозвать доступ. + + + +Редактор бота видит на вкладке **Управление**, сколько сотрудников его авторизовали, а сотрудник — отметку **Подключено** у бота в [витрине](/guides/bots/showcase). + +## Отзыв доступа + +**Отозвать доступ** в списке «Авторизации» сразу отключает все токены этого бота, выданные сотруднику. Следующий запрос бота с таким токеном вернёт `401`. + +Боту стоит к этому быть готовым: на `401` удалить сохранённый токен и, когда сотрудник снова обратится к боту, прислать кнопку авторизации заново. Сам бот тоже может отозвать токен сотрудника — подробнее в разделе [Отзыв токена ботом](/guides/oauth/flow#otzyv-tokena-botom). + +Доступ заканчивается и без отзыва, если бота удалили или у него отключили авторизацию: тогда перестают работать все выданные ему токены сотрудников. Подробнее — в разделе [Настройка авторизации](/guides/oauth/setup#otklyuchenie). + +Настройка **Кто может создавать персональные токены** выданный доступ не отзывает: значение **Только администраторы** закрывает только новые согласия. diff --git a/apps/docs/content/guides/oauth/flow.mdx b/apps/docs/content/guides/oauth/flow.mdx new file mode 100644 index 000000000..6f304a9bf --- /dev/null +++ b/apps/docs/content/guides/oauth/flow.mdx @@ -0,0 +1,220 @@ +--- +title: Получение токена +description: "Как бот получает токен сотрудника по шагам: ссылка авторизации с state и PKCE, кнопка в сообщении бота, возврат с кодом, обмен кода на токен, проверка сотрудника и обработка отказов. Пример на curl и TypeScript" +related: + - /guides/oauth/checklist + - /guides/oauth/setup + - /guides/oauth/consent + - /guides/buttons + - { path: /api/authorization, title: Авторизация } +--- + +# Получение токена сотрудника + +Бот получает токен сотрудника по стандартной схеме OAuth 2.0 с кодом авторизации ([RFC 6749](https://datatracker.ietf.org/doc/html/rfc6749#section-4.1)) и PKCE ([RFC 7636](https://datatracker.ietf.org/doc/html/rfc7636)). Перед началом включите авторизацию на вкладке **OAuth** в карточке бота — подробнее в разделе [Настройка авторизации](/guides/oauth/setup). Кроме неё, боту нужны исходящий вебхук и токен, иначе сотрудник не получит кнопку. Всё, что должно быть включено, собрано в [Чек-листе запуска](/guides/oauth/checklist). + +>P: Пишет боту + P->>S: Событие о новом сообщении + S->>P: Сообщение с кнопкой авторизации + E->>P: Открывает кнопку и нажимает «Разрешить» + P->>S: Возврат на адрес с code и state + S->>P: POST /oauth/token + P->>S: Токен сотрудника + S->>P: GET /oauth/token/info с токеном сотрудника + S->>P: Запросы от имени сотрудника`} +/> + +| Адрес | Назначение | +| --- | --- | +| `https://app.pachca.com/apps/authorize` | Экран согласия, на него ведёт кнопка | +| `https://api.pachca.com/api/shared/v1/oauth/token` | Обмен кода на токен | +| `https://api.pachca.com/api/shared/v1/oauth/revoke` | Отзыв токена | + +Те же адреса публикуются в метаданных сервера авторизации по [RFC 8414](https://datatracker.ietf.org/doc/html/rfc8414): `https://api.pachca.com/.well-known/oauth-authorization-server`. + +## Шаги + + + + На каждую кнопку создайте случайный `state` и проверочный код `code_verifier` — случайную строку длиной от 43 до 128 символов. Из него получите `code_challenge`: SHA-256 от `code_verifier` в кодировке base64url без `=` на конце. + + Сохраните `state`, `code_verifier` и идентификатор сотрудника, которому отправляете кнопку: по `state` вы узнаете, чей это возврат. Для варианта **Браузер, мобильное, CLI** PKCE обязателен, для варианта **Серверное, с секретом** — рекомендуется. + + + ```text title="Ссылка авторизации" + https://app.pachca.com/apps/authorize + ?client_id=CLIENT_ID + &redirect_uri=https%3A%2F%2Fbot.example.com%2Foauth%2Fcallback + &response_type=code + &state=STATE + &code_challenge=CODE_CHALLENGE + &code_challenge_method=S256 + ``` + + - `client_id` — с вкладки **OAuth** в карточке бота + - `redirect_uri` — один из адресов возврата бота, совпадение проверяется точно + - `response_type` — всегда `code` + - `state` — значение из первого шага + - `code_challenge` и `code_challenge_method` — PKCE, метод только `S256` + + Параметр `scope` передавать не нужно: набор прав сервер берёт из настроек бота. + + + Отправьте ссылку сотруднику URL-кнопкой в личной переписке с ботом — методом [Новое сообщение](POST /messages) с `entity_type: "user"`. Подробнее о кнопках — в разделе [Кнопки в сообщениях](/guides/buttons). + + + + В тексте рядом с кнопкой объясните, зачем боту доступ и что он будет делать, и попросите не пересылать ссылку. + + + Сотрудник видит экран согласия и нажимает **Разрешить**. Браузер возвращается на ваш адрес с параметрами `code`, `state` и `iss` — последний всегда равен `https://api.pachca.com` и подтверждает, что код выдала Пачка. + + ```text title="Возврат после согласия" + https://bot.example.com/oauth/callback?code=AUTH_CODE&state=STATE&iss=https%3A%2F%2Fapi.pachca.com + ``` + + Найдите сохранённый `state` и сразу удалите его: каждый `state` действует один раз. Если сотрудник нажал **Отменить**, возврата на ваш адрес не будет — браузер просто вернётся назад. Поэтому храните неиспользованные `state` ограниченное время, например сутки. + + + Код живёт 10 минут и обменивается один раз. Серверное приложение передаёт `client_secret` в теле запроса или в заголовке `Authorization: Basic`, приложение без секрета — только `code_verifier`. + + ```bash title="Обмен кода на токен" + curl -X POST https://api.pachca.com/api/shared/v1/oauth/token \ + -d grant_type=authorization_code \ + -d code=AUTH_CODE \ + -d redirect_uri=https://bot.example.com/oauth/callback \ + -d client_id=CLIENT_ID \ + -d client_secret=CLIENT_SECRET \ + -d code_verifier=CODE_VERIFIER + ``` + + ```json title="Ответ" + { + "access_token": "ACCESS_TOKEN", + "token_type": "Bearer", + "refresh_token": "REFRESH_TOKEN", + "scope": "chats:read messages:read tasks:read tasks:create", + "created_at": 1790242260 + } + ``` + + Поля `expires_in` в ответе нет: токен бессрочный и работает, пока сотрудник не отзовёт доступ. Обновлять его не нужно. + + + Запросите [Информацию о токене](GET /oauth/token/info) с новым токеном: в `data.user_id` придёт сотрудник, который дал согласие. Отдельных прав метод не требует. Сравните его с сотрудником, которому вы отправляли кнопку. + + Сообщение с кнопкой могли переслать, и тогда согласие дал другой сотрудник. Сохраните токен за ним, а тому, кому отправляли кнопку, пришлите её снова. Отзывать такой токен не стоит: если этот сотрудник уже авторизовал бота раньше, Пачка вернула его прежний токен, и отзыв отключит его доступ. + + + Сохраните токен в привязке к сотруднику и передавайте в заголовке `Authorization: Bearer` при запросах от его имени. Токен даёт доступ ко всему, что видит сотрудник, в пределах выданных прав: храните его как пароль. + + + +## Пример на TypeScript + +Серверное приложение на Express: кнопка в ответ на сообщение сотрудника и обработчик возврата. + +```typescript title="oauth.ts" +import crypto from "node:crypto" +import express from "express" + +const API = "https://api.pachca.com/api/shared/v1" +const CLIENT_ID = process.env.PACHCA_CLIENT_ID! +const CLIENT_SECRET = process.env.PACHCA_CLIENT_SECRET! +const BOT_TOKEN = process.env.PACHCA_BOT_TOKEN! +const REDIRECT_URI = "https://bot.example.com/oauth/callback" + +// state → кому отправлена кнопка и проверочный код PKCE +const pending = new Map() + +export async function sendAuthButton(userId: number) { + const state = crypto.randomBytes(16).toString("hex") + const verifier = crypto.randomBytes(32).toString("base64url") + const challenge = crypto.createHash("sha256").update(verifier).digest("base64url") + pending.set(state, { userId, verifier }) + + const url = new URL("https://app.pachca.com/apps/authorize") + url.search = new URLSearchParams({ + client_id: CLIENT_ID, + redirect_uri: REDIRECT_URI, + response_type: "code", + state, + code_challenge: challenge, + code_challenge_method: "S256", + }).toString() + + await fetch(`${API}/messages`, { + method: "POST", + headers: { Authorization: `Bearer ${BOT_TOKEN}`, "Content-Type": "application/json" }, + body: JSON.stringify({ + message: { + entity_type: "user", + entity_id: userId, + content: "Чтобы я мог работать с вашими задачами, разрешите доступ.", + buttons: [[{ text: "Разрешить доступ", url: url.toString() }]], + }, + }), + }) +} + +const app = express() + +app.get("/oauth/callback", async (req, res) => { + const { code, state, error } = req.query as Record + const entry = state ? pending.get(state) : undefined + if (!state || !entry) return res.status(400).send("Ссылка устарела, запросите новую у бота") + pending.delete(state) + if (error || !code) return res.status(400).send("Доступ не выдан, запросите новую ссылку у бота") + + const tokenResponse = await fetch(`${API}/oauth/token`, { + method: "POST", + headers: { "Content-Type": "application/x-www-form-urlencoded" }, + body: new URLSearchParams({ + grant_type: "authorization_code", + code, + redirect_uri: REDIRECT_URI, + client_id: CLIENT_ID, + client_secret: CLIENT_SECRET, + code_verifier: entry.verifier, + }), + }) + if (!tokenResponse.ok) return res.status(502).send("Не удалось получить токен") + const { access_token } = await tokenResponse.json() + + const infoResponse = await fetch(`${API}/oauth/token/info`, { + headers: { Authorization: `Bearer ${access_token}` }, + }) + if (!infoResponse.ok) return res.status(502).send("Не удалось проверить токен") + const { data } = await infoResponse.json() + + // Токен принадлежит тому, кто дал согласие, даже если кнопку ему переслали + await saveToken(data.user_id, access_token) // ваше хранилище токенов + if (data.user_id !== entry.userId) await sendAuthButton(entry.userId) + res.send("Готово, можно вернуться в Пачку") +}) +``` + +## Ошибки и отказы + +Если сотрудник не получает кнопку или бот молчит, дело обычно не в OAuth, а в настройках вокруг него — пройдите [Чек-лист запуска](/guides/oauth/checklist). + +**При обмене кода** + +- `invalid_grant` — код истёк, уже использован или выдан для другого `redirect_uri`, либо `code_verifier` не подходит к `code_challenge`. Отправьте сотруднику новую кнопку. +- `invalid_client` — неверный `client_id` или `client_secret`. Проверьте секрет: после обновления старое значение перестаёт работать сразу. + +**При работе с токеном сотрудника** + +- `401 Unauthorized` — сотрудник отозвал доступ, у бота отключили авторизацию или бот удалён. Удалите токен и, когда сотрудник снова обратится к боту, пришлите кнопку заново. +- `403 Forbidden` с `insufficient_scope` — права нет в выданном наборе или его не позволяет роль сотрудника. Если право есть в `scope` самого токена, дело в роли, и повторная авторизация не поможет. Если в токене права нет, а в настройки бота его уже добавили, пришлите кнопку заново. Подробнее о формате отказа — в разделе [Ошибки авторизации](/api/authorization#oshibki-avtorizatsii). + +## Отзыв токена ботом + +Бот может сам отозвать токен сотрудника, например когда тот отключает интеграцию в вашем сервисе. Серверное приложение отправляет на адрес отзыва `token` вместе с `client_id` и `client_secret`, приложение без секрета — сам токен в теле запроса и в заголовке `Authorization: Bearer`. Как сотрудник отзывает доступ сам — в разделе [Согласие и отзыв](/guides/oauth/consent). diff --git a/apps/docs/content/guides/oauth/overview.mdx b/apps/docs/content/guides/oauth/overview.mdx new file mode 100644 index 000000000..3eae1e479 --- /dev/null +++ b/apps/docs/content/guides/oauth/overview.mdx @@ -0,0 +1,58 @@ +--- +title: Обзор +description: "Авторизация от имени сотрудника: сотрудник выдаёт боту свои права, и бот делает автоматизации в Пачке и связывает её с другими сервисами от его имени. Как это выглядит для сотрудника, где настраивается у бота и какие ограничения действуют" +related: + - /guides/oauth/checklist + - /guides/oauth/setup + - /guides/oauth/flow + - { path: /api/authorization, title: Авторизация } + - /guides/bots/showcase +--- + +# Авторизация от имени сотрудника + +Обычно бот работает своими правами: видит чаты, в которые его добавили, и пишет как бот. Но многим автоматизациям нужны права конкретного сотрудника: собрать сводку по его чатам, завести задачу от его имени, присылать ему задачи из трекера и отвечать на них прямо из Пачки. Для этого сотрудник авторизует бота — выдаёт ему свои права, и дальше бот работает от его имени. + +Механизм — OAuth 2.0 с кодом авторизации: бот отправляет сотрудника на экран согласия, получает код и обменивает его на токен, которым вызывает API от имени сотрудника. + +## Где включается + +Авторизация включается на вкладке **OAuth** в карточке бота: там выдаются `client_id` и `client_secret`, задаются адреса возврата и набор прав, который бот попросит у сотрудника. Подробнее — в разделе [Настройка авторизации](/guides/oauth/setup). + +Одной вкладки мало: авторизация проходит через диалог с ботом, поэтому боту нужны ещё исходящий вебхук и токен. Всё, что должно быть включено, собрано в [Чек-листе запуска](/guides/oauth/checklist). + +## Как это выглядит для сотрудника + + + + Находит бота в [витрине](/guides/bots/showcase) или в поиске и пишет ему, например `/start`. + + + В ответ бот отправляет сообщение с кнопкой авторизации. Кнопка — обычная ссылка на экран согласия. + + + На экране согласия видны имя бота, пространство и запрашиваемые права. Сотрудник нажимает **Разрешить**. + + + Браузер возвращается на адрес вашего сервера с кодом, сервер обменивает код на токен сотрудника. В витрине у бота появляется отметка **Подключено**. + + + +Как собрать кнопку и обменять код — в разделе [Получение токена](/guides/oauth/flow). + +## Ограничения + +- **Только своё пространство.** Авторизовать бота может сотрудник того же пространства, где создан бот. +- **По умолчанию — только администраторам.** Авторизовать бота может тот, кому разрешено создавать персональные токены. По умолчанию это только администраторы: пока владелец или администратор не выберет **Все сотрудники** в настройке **Кто может создавать персональные токены**, сотрудники и мульти-гости авторизовать бота не могут. Доступ, выданный до смены настройки, продолжает работать. Подробнее — в разделе [Кто может создавать токены](/api/authorization#kto-mozhet-sozdavat-tokeny). +- **Гостям недоступно.** Гость не может авторизовать бота ни при какой настройке, а мульти-гость может, как и сотрудник. +- **Роль урезает права.** Право из набора, недоступное роли сотрудника, работать не будет: вызов с таким токеном вернёт `403`. +- **Набор прав один.** Бот не выбирает права при каждой авторизации: запрашивается ровно то, что задано в его настройках. + +## Разделы + + + Что включить у бота, чтобы сотрудник смог написать ему, получить кнопку и авторизовать бота + Вкладка «OAuth»: где хранится секрет, адреса возврата и запрашиваемый доступ + Кнопка авторизации, обмен кода на токен, PKCE и обработка отказов + Что видит сотрудник, как роль урезает права и что происходит после отзыва + diff --git a/apps/docs/content/guides/oauth/setup.mdx b/apps/docs/content/guides/oauth/setup.mdx new file mode 100644 index 000000000..279ca0375 --- /dev/null +++ b/apps/docs/content/guides/oauth/setup.mdx @@ -0,0 +1,109 @@ +--- +title: Настройка авторизации +description: "Как включить у бота авторизацию от имени сотрудника: где хранится секрет, адреса возврата, client_id и client_secret, запрашиваемый доступ, страница на витрине, отключение и те же настройки через API" +related: + - /guides/oauth/checklist + - /guides/oauth/flow + - /guides/bots/showcase + - /guides/bots/first-contact +--- + +# Настройка авторизации + +Авторизация от имени сотрудника и страница бота в витрине настраиваются на вкладке **OAuth** в карточке бота. Менять их могут создатель бота и администраторы пространства, если бот открыт им для редактирования — подробнее в разделе [Настройки бота](/guides/bots/settings#kto-mozhet-redaktirovat-nastroyki-bota). + +Одной вкладки **OAuth** для авторизации мало: сотрудник должен суметь написать боту, а бот — узнать о сообщении и ответить кнопкой. Всё, что должно быть включено у бота, собрано в [Чек-листе запуска](/guides/oauth/checklist). + +## Включение + +Откройте бота на вкладке **Управление** в разделе **Интеграции** > **Боты** и перейдите на вкладку **OAuth**. Пока авторизация выключена, на ней одна карточка с кнопкой **Включить**. + + + +Нажмите **Включить**: откроется окно **Включение авторизации** с тремя полями. + + + +**Где хранится секрет** — от этого зависит, как бот обменивает код авторизации на токен: + +- **Серверное, с секретом** — код обменивает ваш сервер, а `client_secret` хранится только на нём. Подходит боту, у которого есть свой бэкенд. +- **Браузер, мобильное, CLI** — секрета нет, код обменивается по PKCE. Подходит приложению, которое работает на устройстве сотрудника и не может спрятать секрет. + +**Адреса возврата** (поле **Redirect URI**) — куда браузер вернёт сотрудника после согласия, каждый адрес с новой строки. Правила: + +- HTTPS обязателен для всех адресов, кроме адресов на этом же компьютере: `localhost` и `127.0.0.1`. +- Адрес в ссылке авторизации должен совпадать с одним из списка точно. Параметры запроса при сравнении не учитываются, а у `localhost` и `127.0.0.1` — ещё и порт: приложению на компьютере сотрудника подойдёт любой свободный. +- Нужен хотя бы один адрес. + +**Запрашиваемый доступ** — права, которые бот попросит у сотрудника на экране согласия. Отметьте только нужные, их можно найти поиском: без выбора авторизацию не включить. Подробнее — в разделе [Запрашиваемый доступ](#zaprashivaemyy-dostup). + +Нажмите **Включить** в окне. У серверного приложения сразу откроется окно **Авторизация включена** с `client_id` и `client_secret`: секрет показывается один раз, скопируйте его кнопкой **Скопировать и закрыть**. + +## Идентификатор и секрет + + + +После включения на вкладке видны `client_id` и замаскированный `client_secret`. `client_id` не секретный: он входит в ссылку авторизации. + +Если секрет утёк, нажмите значок обновления рядом с `client_secret` и подтвердите **Обновить секрет**. Старое значение перестанет работать сразу, поэтому сначала подготовьте бота к замене. Уже выданные авторизации и полученные токены продолжат работать, новое значение показывается один раз. + +Настройку **Где хранится секрет** можно поменять позже. При переходе на вариант **Серверное, с секретом** `client_secret` показывается один раз, как при включении. + +Адреса возврата меняются в поле **Redirect URI** на той же карточке: поправьте список и нажмите **Сохранить** под полем. + +## Запрашиваемый доступ + +Набор разрешений, которые бот попросит у сотрудника на экране согласия. Его же видно на странице бота в [витрине](/guides/bots/showcase) в блоке **Что бот может запросить**. Набор выбирается при включении, а потом меняется в блоке **Запрашиваемый доступ**: нажмите **Изменить**, отметьте права и сохраните. + + + +- Набор один на бота. Параметр `scope` в ссылке авторизации ни на что не влияет: сервер всегда подставляет набор из настроек. +- В набор можно включить только права, доступные самому боту. Права, которые выдаются лишь персональным токенам, запросить нельзя. +- Права каждой авторизации дополнительно ограничены ролью сотрудника: право, недоступное его роли, работать не будет. +- Изменение набора не меняет уже выданные авторизации. Добавленные права сотрудник подтвердит при следующей авторизации, а убранные останутся в выданных токенах, пока сотрудник не отзовёт доступ или авторизацию у бота не отключат. + +Выдавайте минимально необходимое: чем короче список, тем охотнее сотрудники соглашаются. + +## Страница на витрине + +Блок **Страница на витрине** задаёт, как бот выглядит в [витрине](/guides/bots/showcase), и публикует его там. + + + +- **Опубликовать в витрине** — показывает бота на вкладке **Обзор** в витрине. Пока описание не сохранено, переключатель недоступен, а под ним написано «Сначала добавьте описание». +- **Описание** — чем бот занимается и зачем его подключать. Его видно на карточке бота в витрине и на странице бота. Сохраняется кнопкой **Сохранить** под полем. +- **Скриншоты** — до пяти изображений PNG или JPG с соотношением сторон 16:9 для страницы бота. Кнопка **Добавить** загружает файл, и скриншот сохраняется сразу. Порядок меняется перетаскиванием, а нажатие на скриншот открывает меню с пунктами **Обновить изображение** и **Удалить**. + +Публикация по шагам и то, что видят сотрудники, — в разделе [Витрина](/guides/bots/showcase#kak-opublikovat-bota). + +## Отключение + +Блок **Удаление OAuth-клиента** внизу вкладки отключает авторизацию у бота. + + + +После подтверждения: + +- все авторизации, выданные сотрудниками, отзываются: токены сотрудников у бота перестают работать, и следующий запрос с ними вернёт `401`; +- бот пропадает из витрины, а описание и скриншоты удаляются без возможности вернуть; +- новые авторизации с этим `client_id` не проходят. + +Собственные токены бота продолжают работать. Если авторизацию включить снова, у бота будут прежние `client_id` и `client_secret`, если секрет не обновляли, а в витрину бот вернётся только после новой публикации. + +## Через API + +Те же настройки задаются методом [Редактирование бота](PUT /bots/{id}) или сразу при создании методом [Новый бот](POST /bots): + +| На вкладке | В API | +| --- | --- | +| **Включить** и **Где хранится секрет** | `oauth_client.confidential`: `true` — серверное, с секретом, `false` — браузер, мобильное, CLI | +| **Адреса возврата** | `oauth_client.redirect_uris` | +| **Запрашиваемый доступ** | `oauth_client.scopes` | +| **Страница на витрине** | `promo.published`, `promo.description` и `promo.promo_images` | +| **Удаление OAuth-клиента** | `oauth_client: null` | + +Объект `oauth_client` включает авторизацию, если она выключена, и меняет её настройки, если включена. Права для набора берут из [Каталога прав бота](GET /bots/{id}/scopes). У серверного приложения `client_secret` приходит в ответе один раз: при включении и при переходе на вариант с секретом. Новый секрет выпускает метод [Ротация секрета клиента](POST /bots/{id}/rotate_client_secret). + +Включена ли авторизация, показывает поле `oauth_client_enabled` в объекте бота: параметры в `oauth_client` могут прийти и у бота с выключенной авторизацией. + +Скриншоты для витрины загружают так же, как вложения сообщений, методом [Получение подписи, ключа и других параметров](POST /uploads), а их `key` передают в `promo.promo_images`. diff --git a/apps/docs/content/guides/permissions.mdx b/apps/docs/content/guides/permissions.mdx index db835bbdb..dadf45a9c 100644 --- a/apps/docs/content/guides/permissions.mdx +++ b/apps/docs/content/guides/permissions.mdx @@ -13,7 +13,7 @@ related: У API почти нет собственной логики доступа. Он работает по тем же правилам, что и интерфейс Пачки: токен видит ровно то, что видит выдавший его сотрудник, и может ровно то же, что может он. Если сотрудник не состоит в закрытом канале, то и его токен не получит оттуда ни сообщений, ни списка участников. -Исключения из правила есть, и все они описаны ниже: гости и мульти-гости не работают с API вовсе, а Владелец пространства может получить перечень всех чатов и всех ботов, состав участников любого чата и выгрузить переписку всего пространства. +Исключения из правила есть, и все они описаны ниже: гости не работают с API вовсе, а Владелец пространства может получить перечень всех чатов и всех ботов, состав участников любого чата и выгрузить переписку всего пространства. [Скоупы](/api/authorization#skoupy) работают поверх этих правил и только сужают доступ. Скоуп открывает методы, но не расширяет видимость: с `chats:read` вы получите те же чаты, что видны в интерфейсе, и ни одним больше. @@ -44,19 +44,33 @@ related: **Владелец не выделен отдельным значением роли.** В поле `role` у него `admin`, как и у остальных администраторов, и определить Владельца по объекту сотрудника нельзя. Редактировать его чужим токеном нельзя вообще: [Редактирование сотрудника](PUT /users/{id}), [Загрузка аватара сотрудника](PUT /users/{user_id}/avatar) и [Удаление сотрудника](DELETE /users/{id}) возвращают для Владельца `403`. Своим токеном он меняет собственный профиль, но не может сменить себе роль и не может себя деактивировать. -**Гости и мульти-гости не работают с API.** Создать токен они не могут: для этого нужно право на работу с API, а гостевым ролям оно не выдаётся. Если токен был получен до смены роли, любой запрос вернёт `403`. Ограничение касается только их собственных токенов: сами гости остаются полноценными участниками чатов, куда их добавили, и другие токены видят их как обычных участников. +**Гости не работают с API.** Создать токен, войти в CLI или авторизовать бота гость не может: права на работу с API у этой роли нет. Если токен был получен до смены роли, любой запрос вернёт `403`. Ограничение касается только его собственных токенов: сам гость остаётся полноценным участником чата, куда его пригласили, и другие токены видят его как обычного участника. + +**Мульти-гость работает с API наравне с сотрудником**, но видит через него ровно то же, что в интерфейсе. Он создаёт персональные токены, входит в CLI и авторизует ботов, а создавать и настраивать ботов не может. Подробнее — в разделе [Мульти-гость в API](#multi-gost-v-api). ### Что доступно только Владельцу и Администратору -Большинство скоупов доступно всем ролям, кроме гостевых. Исключения стоит знать заранее, потому что при создании токена такие скоупы просто не появятся в списке: +Большинство скоупов доступно всем ролям, кроме гостя. Исключения стоит знать заранее, потому что при создании токена такие скоупы просто не появятся в списке: - **Только Владелец** — `chat_exports:read`, `chat_exports:write` для [экспорта сообщений](/guides/export), `audit_events:read` для [журнала аудита](/guides/audit-events), `company_chats:read` для метода [Список чатов пространства](GET /company/chats) и `company_bots:read` для метода [Список ботов пространства](GET /company/bots). Все они доступны на тарифе **Корпорация**. - **Владелец и Администратор** — `users:create`, `users:update`, `users:delete`, `user_status:write`, `user_avatar:write`, `group_tags:write` для [тегов](/guides/tags). - **Только токен бота** — `bot_self:write` и `bot_self:webhook:write` для самоуправления бота. Персональному токену они недоступны при любой роли. -- **Только персональный токен** — `bots:read` и `bots:write` для [управления ботами](/guides/bots/overview) и `drafts:read`, `drafts:write` для черновиков и отложенных сообщений — [Новый черновик](POST /drafts) и соседние методы. Роль здесь ни при чём: эти скоупы есть у любого негостевого сотрудника, но токену бота их не выдать, и с ним метод отвечает `403`. То есть бот не может ни завести другого бота, ни написать черновик. +- **Только персональный токен** — `bots:read` и `bots:write` для [управления ботами](/guides/bots/overview) и `drafts:read`, `drafts:write` для черновиков и отложенных сообщений — [Новый черновик](POST /drafts) и соседние методы. Скоупы ботов есть у Владельца, Администраторов и Сотрудников, скоупы черновиков — ещё и у мульти-гостя, а токену бота их не выдать вовсе: с ним метод отвечает `403`. То есть бот не может ни завести другого бота, ни написать черновик. Полная таблица скоупов по ролям — в разделе [Авторизация](/api/authorization#dostupnye-skoupy). +### Мульти-гость в API + +Мульти-гость видит в интерфейсе только чаты, куда его добавили, и их участников. API отдаёт ему ровно столько же: + +- **Сотрудники** — [Список сотрудников](GET /users), [Информация о сотруднике](GET /users/{id}) и [Статус сотрудника](GET /users/{user_id}/status) отдают его самого, участников общих с ним чатов вместе с ботами и публичных ботов. Треды и архивные чаты общими не считаются, на остальных сотрудников методы отвечают `404`. У чужих сотрудников `list_tags` приходит пустым, а почта и телефон — `null`. +- **Чаты** — [Список чатов](GET /chats) с `availability=public` отдаёт только открытые чаты, где он участник. Создать беседу или канал он не может, как и выйти из чата: методы [Новый чат](POST /chats) и [Выход из чата](DELETE /chats/{id}/leave) отвечают `403`, как и в интерфейсе. +- **Напоминания** — [Список напоминаний](GET /tasks) с `chat_ids` отдаёт напоминания только тех чатов, где он участник, и доступных ему тредов: открытые чаты, куда он не вступал, не учитываются. +- **Теги** — [Список тегов](GET /group_tags) и [Информация о теге](GET /group_tags/{id}) отдают только теги активных бесед и каналов, где он участник. [Список сотрудников тега](GET /group_tags/{id}/users) ему закрыт и отвечает `403`. +- **Упоминания** — `<@id>` в методах [Новое сообщение](POST /messages) и [Редактирование сообщения](PUT /messages/{id}) превращается в упоминание только для доступных ему сотрудников, остальные остаются в тексте как есть. +- **Черновики** — черновики и отложенные сообщения доступны ему, как сотруднику: скоупы `drafts:read` и `drafts:write` выдаются и мульти-гостю. +- **Боты** — скоупы `bots:read` и `bots:write` ему не выдаются, поэтому создавать и настраивать ботов он не может. Авторизовать бота и подключить его из [витрины](/guides/bots/showcase) — может. Добавлять ботов в чаты он не может ни при какой настройке бота. + ## Токен и смена роли Права токена сверяются с текущей ролью владельца **при каждом запросе**, а не только в момент создания ключа. Поэтому изменения роли отражаются на токене сразу и пересоздавать его не нужно. @@ -129,7 +143,7 @@ related: - **Личные сообщения** — доступны только собеседникам. - **Треды** — доступны участникам родительского чата и тем, кого добавили в сам тред. В треде открытого чата — всем сотрудникам пространства. Подробнее — в разделе [Треды](/guides/threads). -Гости и мульти-гости видят только те чаты, в которые их добавили. Открытые чаты пространства им недоступны. +Гости и мульти-гости видят только те чаты, в которые их добавили. Открытые чаты пространства им недоступны. Как это правило действует в API для мульти-гостя — в разделе [Мульти-гость в API](#multi-gost-v-api). ### Что доступно Владельцу пространства сверх остальных @@ -206,6 +220,8 @@ GET /api/shared/v1/company/chats Видимость бота определяется правом на его редактирование, а не участием в чатах. [Список ботов](GET /bots) возвращает только тех ботов, которых вам разрешено редактировать: созданных вами и тех, чьи настройки открывают вам доступ. Это правило действует для всех ролей, включая Администратора пространства. +Имя бота, его токены, авторизация от имени сотрудника, страница в витрине и удаление бота доступны только создателю и Администраторам, если настройки бота открывают им доступ. Руководителю чата с ботом эти методы отвечают `403`, даже когда остальные настройки ему открыты. Что из этого доступно вам, показывает поле `permissions` в объекте бота. + ### Инвентаризация ботов пространства Полный перечень ботов пространства отдаёт [Список ботов пространства](GET /company/bots): @@ -214,7 +230,7 @@ GET /api/shared/v1/company/chats GET /api/shared/v1/company/bots ``` -Нужен тариф **Корпорация**, скоуп `company_bots:read` и роль Владельца — Администратору метод отвечает `403`. У ботов, недоступных вам для редактирования, приходят только имя и никнейм, а остальные настройки вебхука — `null`: адрес исходящего вебхука, события, команды, скоупы и права на редактирование не раскрываются. Форма объекта при этом та же, что у доступных ботов. Каждый запрос попадает в [журнал аудита](/guides/audit-events) как событие `company_bots_accessed`. +Нужен тариф **Корпорация**, скоуп `company_bots:read` и роль Владельца — Администратору метод отвечает `403`. У ботов, недоступных вам для редактирования, приходят только имя и никнейм, а остальные настройки вебхука и `oauth_client` — `null`: адрес исходящего вебхука, события, команды, скоупы и права на редактирование не раскрываются. Форма объекта при этом та же, что у доступных ботов. Каждый запрос попадает в [журнал аудита](/guides/audit-events) как событие `company_bots_accessed`. Лимит тот же, что у инвентаризации чатов, — около 30 запросов в минуту на токен, он общий на оба метода. diff --git a/apps/docs/content/guides/quickstart.mdx b/apps/docs/content/guides/quickstart.mdx index 711f9f402..a9ccc7581 100644 --- a/apps/docs/content/guides/quickstart.mdx +++ b/apps/docs/content/guides/quickstart.mdx @@ -22,10 +22,10 @@ related: Для работы с API вам нужен токен доступа. Есть два способа его получить: - - **Персональный токен** — в интерфейсе Пачки: **Автоматизации** > **API** (доступно администраторам) - - **Токен бота** — создайте бота в **Автоматизации** > **Интеграции** > **Чат-боты и Вебхуки** или программно методом [Новый бот](POST /bots) + - **Персональный токен** — в интерфейсе Пачки: **Интеграции** > **API**. Кому доступна эта страница, решает владелец пространства + - **Токен бота** — создайте бота в **Интеграции** > **Боты** и выпустите токен на вкладке **API** его карточки, или программно методом [Новый бот](POST /bots) - Подробнее о типах токенов и скоупах — в разделе [Авторизация](/api/authorization). + Подробнее о типах токенов и скоупах — в разделе [Авторизация](/api/authorization). Если бот должен работать с данными сотрудников их правами, используйте [авторизацию от имени сотрудника](/guides/oauth/overview). diff --git a/apps/docs/content/guides/sdk/csharp.mdx b/apps/docs/content/guides/sdk/csharp.mdx index 0d1357173..51bc1b1b9 100644 --- a/apps/docs/content/guides/sdk/csharp.mdx +++ b/apps/docs/content/guides/sdk/csharp.mdx @@ -27,7 +27,7 @@ dotnet add package Pachca.Sdk -Получите API-токен в интерфейсе Пачки: **Настройки** > **Автоматизации** > **API** (подробнее — [Авторизация](/api/authorization)). +Получите API-токен в интерфейсе Пачки: **Интеграции** > **API** (подробнее — [Авторизация](/api/authorization)). diff --git a/apps/docs/content/guides/sdk/go.mdx b/apps/docs/content/guides/sdk/go.mdx index e0c282aa6..79073a4f7 100644 --- a/apps/docs/content/guides/sdk/go.mdx +++ b/apps/docs/content/guides/sdk/go.mdx @@ -27,7 +27,7 @@ go get github.com/pachca/openapi/sdk/go/generated -Получите API-токен в интерфейсе Пачки: **Настройки** > **Автоматизации** > **API** (подробнее — [Авторизация](/api/authorization)). +Получите API-токен в интерфейсе Пачки: **Интеграции** > **API** (подробнее — [Авторизация](/api/authorization)). diff --git a/apps/docs/content/guides/sdk/kotlin.mdx b/apps/docs/content/guides/sdk/kotlin.mdx index 64e9b3de8..ea5558b1c 100644 --- a/apps/docs/content/guides/sdk/kotlin.mdx +++ b/apps/docs/content/guides/sdk/kotlin.mdx @@ -31,7 +31,7 @@ dependencies { -Получите API-токен в интерфейсе Пачки: **Настройки** > **Автоматизации** > **API** (подробнее — [Авторизация](/api/authorization)). +Получите API-токен в интерфейсе Пачки: **Интеграции** > **API** (подробнее — [Авторизация](/api/authorization)). diff --git a/apps/docs/content/guides/sdk/python.mdx b/apps/docs/content/guides/sdk/python.mdx index 70b0e1be1..ea622f657 100644 --- a/apps/docs/content/guides/sdk/python.mdx +++ b/apps/docs/content/guides/sdk/python.mdx @@ -27,7 +27,7 @@ pip install pachca-sdk -Получите API-токен в интерфейсе Пачки: **Настройки** > **Автоматизации** > **API** (подробнее — [Авторизация](/api/authorization)). +Получите API-токен в интерфейсе Пачки: **Интеграции** > **API** (подробнее — [Авторизация](/api/authorization)). diff --git a/apps/docs/content/guides/sdk/swift.mdx b/apps/docs/content/guides/sdk/swift.mdx index f69bb9cbf..6315a334f 100644 --- a/apps/docs/content/guides/sdk/swift.mdx +++ b/apps/docs/content/guides/sdk/swift.mdx @@ -33,7 +33,7 @@ dependencies: [ -Получите API-токен в интерфейсе Пачки: **Настройки** > **Автоматизации** > **API** (подробнее — [Авторизация](/api/authorization)). +Получите API-токен в интерфейсе Пачки: **Интеграции** > **API** (подробнее — [Авторизация](/api/authorization)). diff --git a/apps/docs/content/guides/sdk/typescript.mdx b/apps/docs/content/guides/sdk/typescript.mdx index bafe55e9e..91f127616 100644 --- a/apps/docs/content/guides/sdk/typescript.mdx +++ b/apps/docs/content/guides/sdk/typescript.mdx @@ -27,7 +27,7 @@ npm install @pachca/sdk -Получите API-токен в интерфейсе Пачки: **Настройки** > **Автоматизации** > **API** (подробнее — [Авторизация](/api/authorization)). +Получите API-токен в интерфейсе Пачки: **Интеграции** > **API** (подробнее — [Авторизация](/api/authorization)). diff --git a/apps/docs/content/guides/webhook/events.mdx b/apps/docs/content/guides/webhook/events.mdx index 413de2b72..e53f35c2c 100644 --- a/apps/docs/content/guides/webhook/events.mdx +++ b/apps/docs/content/guides/webhook/events.mdx @@ -9,25 +9,25 @@ related: # Настройка и типы событий -Все настройки исходящего вебхука собраны на вкладке **Исходящий Webhook** в настройках бота. +Все настройки исходящего вебхука собраны на вкладке **Исходящий вебхук** в карточке бота. Пока вебхук выключен, на вкладке одна кнопка **Включить**: она спрашивает URL вашего сервера, а остальные настройки появляются после включения. - + ## Общие настройки - **Webhook URL** — адрес, на который Пачка отправляет события -- **Signing secret** — секрет для проверки подписи запроса. Подробнее — в разделе [Безопасность и обработчик](/guides/webhook/handler). +- **Signing secret** — ключ HMAC-SHA256 для проверки подписи из заголовка `Pachca-Signature`. Появляется после включения вебхука. Подробнее — в разделе [Безопасность и обработчик](/guides/webhook/handler). - **Сохранять историю событий** — бот сохраняет все исходящие вебхуки в очередь, и их можно получить через API. Поле `events_history_enabled`. Подробнее — в разделе [Поллинг](/guides/webhook/polling). - **Игнорировать свои сообщения** — не получать вебхуки о сообщениях, отправленных самим ботом. Поле `ignore_self_messages`. Предотвращает зацикливание, когда бот реагирует на собственные сообщения. Нажатия кнопок обрабатываются всегда, вне зависимости от этой настройки. -Обе настройки задаются не только в интерфейсе, но и через API — методами [Новый бот](POST /bots) и [Редактирование бота](PUT /bots/{id}), и возвращаются в объекте бота. +История событий и «Игнорировать свои сообщения» задаются не только в интерфейсе, но и через API — методами [Новый бот](POST /bots) и [Редактирование бота](PUT /bots/{id}), и возвращаются в объекте бота. **Webhook URL** можно задать не только здесь, но и программно — это удобно для автоматизации (например, [n8n](/guides/n8n/trigger) регистрирует свой адрес сам): -- метод [Редактирование бота](PUT /bots/{id}) — токеном администратора (скоуп `bots:write` и доступ редактора к боту) можно прописать `URL` любому боту; -- метод [Саморегистрация вебхука бота](PUT /bot/webhook) — бот прописывает свой `URL` собственным токеном (скоуп `bot_self:webhook:write`), без участия администратора. +- метод [Редактирование бота](PUT /bots/{id}) — персональным токеном со скоупом `bots:write` можно прописать `URL` боту, настройки которого вам доступны; +- метод [Саморегистрация вебхука бота](PUT /bot/webhook) — бот прописывает свой `URL` собственным токеном (скоуп `bot_self:webhook:write`), без участия администратора. Боту с включённым [разворачиванием ссылок](/guides/link-previews) адрес меняет только администратор или владелец, и саморегистрация вернёт ошибку. -Чтобы отключить вебхук, передайте пустую строку в `outgoing_url`. +Чтобы отключить вебхук, передайте пустую строку в `outgoing_url`. В интерфейсе для этого есть кнопка **Удалить вебхук** внизу вкладки: события перестают доставляться, а настройки и подпись удаляются, и для работы вебхук придётся включить заново. ## Сообщения @@ -38,10 +38,12 @@ related: Для новых сообщений доступны два режима отслеживания: -- **О любых сообщениях** — все новые сообщения, включая треды -- **Сообщения, начинающиеся с команд** — только сообщения, начинающиеся с указанных команд (например, `/help`, `/deploy`). Команды начинаются с `/` и пишутся на английском. Полезно, если вы не хотите получать поток событий, а вам нужно вызвать сценарий только по требованию пользователя. +- **Любые сообщения** — все новые сообщения, включая треды +- **Начинающиеся с команд** — только сообщения, начинающиеся с указанных команд (например, `/help`, `/deploy`). Команды перечисляются через запятую, начинаются с `/` и пишутся на английском. Полезно, если вы не хотите получать поток событий, а вам нужно вызвать сценарий только по требованию пользователя. -Режим «О любых сообщениях» присылает событие и для сообщений без текста, например только с файлом или картинкой. Режим «Сообщения, начинающиеся с команд» для них не сработает, потому что команда определяется по первому слову текста, которого в таком сообщении нет. +Режим «Любые сообщения» присылает событие и для сообщений без текста, например только с файлом или картинкой. Режим «Начинающиеся с команд» для них не сработает, потому что команда определяется по первому слову текста, которого в таком сообщении нет. + +Новый бот стоит в режиме «Начинающиеся с команд» с пустым списком команд и о новых сообщениях не узнаёт. Так у ботов, созданных и в интерфейсе, и методом [Новый бот](POST /bots) без `trigger_on`. Выберите режим «Любые сообщения» или перечислите команды. Подробнее — в разделе [Первый диалог с ботом](/guides/bots/first-contact). @@ -77,6 +79,8 @@ related: Вебхук отправляется при изменении состава участников чатов, где состоит бот, и в тредах этих чатов. +Когда сотрудник впервые открывает личную переписку с ботом, события нет — ни об изменении участников, ни о новом чате. Бот узнаёт о сотруднике из его первого сообщения. + Payload содержит только идентификаторы. Полные данные сотрудников получите методом [Информация о сотруднике](GET /users/{id}) по каждому `user_id`, а сам чат — методом [Информация о чате](GET /chats/{id}) по `chat_id`. @@ -91,7 +95,7 @@ related: ## Отправка ссылок -Вебхук отправляется при появлении ссылки на один из доменов, указанных в настройках Unfurl-бота. Для получения таких событий необходимо создать специального Unfurl-бота. После получения вы можете воспользоваться методом [Unfurl (разворачивание ссылок)](POST /messages/{id}/link_previews) и создать предпросмотр ссылки в сообщении. Подробнее — в разделе [Разворачивание ссылок](/guides/link-previews). +Вебхук отправляется при появлении в сообщении ссылки на один из доменов бота — из любого чата пространства, добавлять бота в чаты не нужно. Событие **Отправка ссылок в сообщении (unfurl)** и его домены (до 5, через запятую) включает только администратор или владелец пространства. После получения вы можете воспользоваться методом [Unfurl (разворачивание ссылок)](POST /messages/{id}/link_previews) и создать предпросмотр ссылки в сообщении. Подробнее — в разделе [Разворачивание ссылок](/guides/link-previews). diff --git a/apps/docs/content/guides/webhook/handler.mdx b/apps/docs/content/guides/webhook/handler.mdx index 0112ca993..c24223bb4 100644 --- a/apps/docs/content/guides/webhook/handler.mdx +++ b/apps/docs/content/guides/webhook/handler.mdx @@ -42,10 +42,10 @@ content-length: 358 - Для проверки подписи необходимо вычислить её самостоятельно, используя секрет вебхука `Signing secret`, который доступен в настройках бота во вкладке «Исходящий webhook». Рекомендуется использовать сырой (raw) контент тела запроса для вычисления хеша, так как при JSON-парсинге содержимое может быть изменено. + Для проверки подписи необходимо вычислить её самостоятельно, используя секрет вебхука `Signing secret` с вкладки «Исходящий вебхук» в карточке бота. Рекомендуется использовать сырой (raw) контент тела запроса для вычисления хеша, так как при JSON-парсинге содержимое может быть изменено. ```javascript title="Вычисление и сравнение подписи" - // WEBHOOK_SECRET - значение поля Signing secret во вкладке «Исходящий webhook» в настройках бота + // WEBHOOK_SECRET - значение поля Signing secret на вкладке «Исходящий вебхук» в карточке бота const signature = crypto.createHmac("sha256", WEBHOOK_SECRET).update(rawBody).digest("hex"); if (signature !== request.headers['pachca-signature']) { @@ -71,7 +71,7 @@ content-length: 358 import express from "express" import crypto from "crypto" -const SIGNING_SECRET = "your_signing_secret" // Из настроек бота → Исходящий Webhook → Signing Secret +const SIGNING_SECRET = "your_signing_secret" // Карточка бота → Исходящий вебхук → Signing secret const app = express() // Важно: используем express.raw для получения сырого тела запроса (для корректной проверки HMAC) @@ -125,7 +125,7 @@ app.listen(3000) import hmac, hashlib, json, time from flask import Flask, request, abort -SIGNING_SECRET = "your_signing_secret" # Из настроек бота → Исходящий Webhook → Signing Secret +SIGNING_SECRET = "your_signing_secret" # Карточка бота → Исходящий вебхук → Signing secret app = Flask(__name__) @app.route("/webhook", methods=["POST"]) diff --git a/apps/docs/content/guides/webhook/overview.mdx b/apps/docs/content/guides/webhook/overview.mdx index 96a1c35c0..0a831a4d3 100644 --- a/apps/docs/content/guides/webhook/overview.mdx +++ b/apps/docs/content/guides/webhook/overview.mdx @@ -1,6 +1,6 @@ --- title: Обзор -description: "Исходящие вебхуки в Пачке: что это, как настроить и какие настройки доступны на вкладке Исходящий Webhook в боте" +description: "Исходящие вебхуки в Пачке: что это, как включить и какие настройки доступны на вкладке «Исходящий вебхук» в карточке бота" --- # Исходящие вебхуки @@ -17,16 +17,16 @@ description: "Исходящие вебхуки в Пачке: что это, к - Перейдите в **Автоматизации** > **Интеграции** > **Чат-боты и Вебхуки** и создайте бота. Подробнее — в разделе [Боты](/guides/bots/overview). + Откройте **Интеграции** > **Боты** и нажмите **Создать бота**. Подробнее — в разделе [Боты](/guides/bots/overview). - - В настройках бота перейдите на вкладку **Исходящий Webhook** и укажите URL вашего сервера, на который Пачка будет отправлять события. + + В карточке бота на вкладке **Исходящий вебхук** нажмите **Включить** и укажите URL вашего сервера, на который Пачка будет отправлять события. Отметьте события, которые вас интересуют: новые сообщения, реакции, нажатия кнопок и другие. Подробнее — в разделе [Типы событий](/guides/webhook/events). - Большинство событий приходят только из чатов, в которых состоит бот. Глобальные события (например, изменение состава участников пространства) не требуют добавления в чат. + Большинство событий приходят только из чатов, в которых состоит бот. Глобальные события — изменение участников пространства и ссылки на домены бота — не требуют добавления в чат. @@ -43,7 +43,7 @@ description: "Исходящие вебхуки в Пачке: что это, к ## Разделы - Все настройки на вкладке Исходящий Webhook и список доступных типов событий с payload'ом + Все настройки на вкладке «Исходящий вебхук» и список доступных типов событий с payload'ом Проверка подписи, защита от replay-атак, примеры обработчика на TypeScript и Python Получение событий через API, когда принимать входящие HTTP-запросы нельзя diff --git a/apps/docs/content/guides/webhook/polling.mdx b/apps/docs/content/guides/webhook/polling.mdx index e2b39ebff..0c562236b 100644 --- a/apps/docs/content/guides/webhook/polling.mdx +++ b/apps/docs/content/guides/webhook/polling.mdx @@ -11,7 +11,7 @@ related: Если у вас нет возможности принимать входящие HTTP-запросы (локальная разработка, жёсткие firewall-правила), используйте **поллинг** — получение событий через API или готовые helpers в SDK. -Включите настройку **Сохранять историю событий** на вкладке **Исходящий Webhook** в настройках бота (подробнее — в разделе [Настройка и типы событий](/guides/webhook/events#obschie-nastroyki)), чтобы получать события через метод [История событий](GET /webhooks/events). Без неё метод отдаёт пустой список. Включить настройку можно и программно — полем `events_history_enabled` в методах [Новый бот](POST /bots) и [Редактирование бота](PUT /bots/{id}). +Включите настройку **Сохранять историю событий** на вкладке **Исходящий вебхук** в карточке бота (подробнее — в разделе [Настройка и типы событий](/guides/webhook/events#obschie-nastroyki)), чтобы получать события через метод [История событий](GET /webhooks/events). Без неё метод отдаёт пустой список. В интерфейсе настройка появляется только после включения вебхука, то есть когда указан URL. Если принимать запросы нельзя совсем, включите историю программно — полем `events_history_enabled` в методах [Новый бот](POST /bots) и [Редактирование бота](PUT /bots/{id}): адрес вебхука для этого не нужен. SDK helpers по умолчанию начинают читать только события, созданные после запуска воркера, и дедуплицируют уже обработанные delivery ID в памяти. diff --git a/apps/docs/content/home.mdx b/apps/docs/content/home.mdx index 4bb544915..2ab2a2310 100644 --- a/apps/docs/content/home.mdx +++ b/apps/docs/content/home.mdx @@ -25,12 +25,15 @@ hideTableOfContents: true ## Боты и автоматизации -Создавайте ботов, обрабатывайте команды, добавляйте кнопки и формы в сообщения, получайте события через вебхуки. +Создавайте ботов, обрабатывайте команды, добавляйте кнопки и формы в сообщения, получайте события через вебхуки и работайте с данными сотрудников их правами. Создание и настройка ботов + + Бот работает правами сотрудника + Ссылки и действия в сообщениях diff --git a/apps/docs/content/updates/2026-10-01.md b/apps/docs/content/updates/2026-10-01.md new file mode 100644 index 000000000..48aa05ded --- /dev/null +++ b/apps/docs/content/updates/2026-10-01.md @@ -0,0 +1,77 @@ +--- +date: '2026-10-01' +title: 'Раздел «Интеграции», API ботов, авторизация от имени сотрудника и мульти-гость' +--- + +В Пачке обновился раздел **Интеграции**: боты пространства и их карточки с +настройками, токенами и вебхуками, витрина ботов и страница **API** с +персональными токенами, входами в CLI и авторизациями. Документация ботов +собрана заново под этот раздел: [Обзор](/guides/bots/overview), +[Создание бота](/guides/bots/setup), [Настройки бота](/guides/bots/settings), +[Токены бота](/guides/bots/tokens), +[Первый диалог с ботом](/guides/bots/first-contact) и +[Витрина](/guides/bots/showcase). + +В документации появился новый раздел +[Авторизация от имени сотрудника](/guides/oauth/overview). Он про ботов, +которые работают с данными сотрудника его правами: сотрудник один раз +соглашается на экране согласия, и дальше бот действует от его имени в Пачке и +в связке с другими сервисами. Раздел описывает +[настройку авторизации](/guides/oauth/setup), [получение токена](/guides/oauth/flow), +[согласие и отзыв доступа](/guides/oauth/consent), а в +[чек-листе запуска](/guides/oauth/checklist) собрано всё, что должно быть +включено у бота. + +Публичный API ботов теперь умеет всё, что раздел **Интеграции**: бота можно +создать пустым, как в интерфейсе, выпустить ему несколько токенов со своими +правами, включить авторизацию от имени сотрудника и заполнить страницу в +витрине. Действия с токенами и авторизацией попадают в журнал аудита. +Подробнее — в разделах [Токены бота](/guides/bots/tokens#tokeny-cherez-api) и +[Настройка авторизации](/guides/oauth/setup#cherez-api). + +Были добавлены новые методы: + +- [Список токенов бота](GET /bots/{id}/tokens) +- [Новый токен бота](POST /bots/{id}/tokens) +- [Изменение токена бота](PUT /bots/{id}/tokens/{token_id}) +- [Перевыпуск токена бота](POST /bots/{id}/tokens/{token_id}/reissue) +- [Удаление токена бота](DELETE /bots/{id}/tokens/{token_id}) +- [Каталог прав бота](GET /bots/{id}/scopes) +- [Ротация секрета клиента](POST /bots/{id}/rotate_client_secret) + +Ещё один новый метод, [Отметка чата непрочитанным](PUT /chats/{id}/unread), +помечает чат непрочитанным для владельца токена, как одноимённое действие в +интерфейсе. + +Мульти-гость теперь работает с API наравне с сотрудником: создаёт +персональные токены, входит в CLI и авторизует ботов. Через API он видит то +же, что в интерфейсе, — подробнее в разделе +[Мульти-гость в API](/guides/permissions#multi-gost-v-api). + +Поиск по сотрудникам, чатам и сообщениям и поиск в списке сотрудников отвечают +отдельной ошибкой, если запрос не уложился по времени. Голосовое сообщение +длиннее 30 минут отклоняется. В вебхуке о ссылке появились тип чата, его +идентификатор и тред — как в вебхуке о новом сообщении. В формах у +радиокнопок и чекбоксов теперь до 20 вариантов. + +Были обновлены следующие методы: + +- [Новый бот](POST /bots) +- [Редактирование бота](PUT /bots/{id}) +- [Информация о боте](GET /bots/{id}) +- [Список ботов](GET /bots) +- [Список ботов пространства](GET /company/bots) +- [Журнал аудита событий](GET /audit_events) +- [Добавление пользователей](POST /chats/{id}/members) +- [Новый чат](POST /chats) +- [Редактирование сотрудника](PUT /users/{id}) +- [Список сотрудников](GET /users) +- [Список тегов](GET /group_tags) +- [Поиск сотрудников](GET /search/users) +- [Поиск чатов](GET /search/chats) +- [Поиск сообщений](GET /search/messages) +- [Новое сообщение](POST /messages) +- [Редактирование сообщения](PUT /messages/{id}) +- [Открытие представления](POST /views/open) +- [Новый черновик](POST /drafts) +- [Редактирование черновика](PUT /drafts/{id}) diff --git a/apps/docs/data/releases.json b/apps/docs/data/releases.json index 3c972b984..339cec5af 100644 --- a/apps/docs/data/releases.json +++ b/apps/docs/data/releases.json @@ -1,4 +1,161 @@ [ + { + "product": "n8n", + "version": "2.1.4", + "date": "2026-10-01", + "changes": [ + { + "type": "+", + "description": "`Bot`: операции `Get Many Tokens`, `Create Token`, `Update Token`, `Reissue Token` и `Delete Token` — у бота может быть несколько токенов, у каждого своё имя и права. Операция `Get Scopes` отдаёт каталог прав, которые можно выдать боту." + }, + { + "type": "+", + "description": "`Bot`: операция `Rotate Client Secret` — новый `client_secret` для авторизации от имени сотрудника" + }, + { + "type": "+", + "description": "`Bot`: у `Create` и `Update` появились поля `OAuth Client` и `Promo` — авторизация от имени сотрудника и страница бота в витрине, а также `Kind` и `Unfurl Domains`. У `Create` — `Empty` для бота без токена, у `Update` — `Single Chat`." + }, + { + "type": "+", + "description": "`Chat`: операция `Mark Unread` — отметка чата непрочитанным для владельца токена" + }, + { + "type": "+", + "description": "`Security`: фильтр событий пополнился пятью событиями ботов — выпуск, изменение и перевыпуск токена, обновление секрета клиента и выключение авторизации" + }, + { + "type": "+", + "description": "`Trigger`: событие о ссылке приносит `entity_type`, `entity_id` и `thread`, как событие о новом сообщении" + }, + { + "type": "-", + "description": "README: где взять токен бота и персональный токен — теперь раздел «Интеграции»: «Боты» для бота, «API» для персонального" + }, + { + "type": "-", + "description": "`Bot`: значение `Anyone` поля `Who Can Add` описано как публичный бот, которого гости и мульти-гости не добавляют" + }, + { + "type": "-", + "description": "`Message` и `Task`: подсказки к полю `Content` и к фильтру `Chat IDs` описывают, что меняется для мульти-гостя" + }, + { + "type": "-", + "description": "`Message`: подсказка к полю `Parent Message ID` описывает ответ с цитатой в любом чате, в том числе в треде: ответ отправляют в тот же чат или тред, где лежит исходное сообщение" + } + ] + }, + { + "product": "cli", + "version": "2026.10.0", + "date": "2026-10-01", + "changes": [ + { + "type": "+", + "description": "`pachca bots list-tokens`, `create-token`, `update-token`, `reissue-token` и `delete-token` — токены бота, у каждого своё имя и права. `pachca bots list-scopes` — каталог прав, которые можно выдать боту." + }, + { + "type": "+", + "description": "`pachca bots rotate-client-secret` — новый `client_secret` для авторизации от имени сотрудника" + }, + { + "type": "+", + "description": "`pachca bots create` и `bots update`: флаги `--oauth-client` и `--promo` для авторизации от имени сотрудника и страницы бота в витрине, `--kind` и `--unfurl-domains`. У `bots create` — `--empty` для бота без токена, у `bots update` — `--single-chat`." + }, + { + "type": "+", + "description": "`pachca chats mark-unread` — отметка чата непрочитанным" + }, + { + "type": "+", + "description": "`pachca security list` — флаг `--event-key` принимает пять новых событий ботов: `bot_token_created`, `bot_token_updated`, `bot_token_reissued`, `bot_oauth_client_secret_rotated` и `bot_oauth_client_disabled`" + }, + { + "type": "-", + "description": "`pachca search users`, `search chats`, `search messages` и `users list`: в справке описан ответ `504` с кодом `timeout`, если поиск не уложился по времени, а у файлов в `messages create`, `messages update` и `drafts` — предел голосового в 30 минут" + }, + { + "type": "+", + "description": "`pachca auth login` — вход через браузер передаёт имя устройства, по которому вход узнаётся в списке токенов CLI" + }, + { + "type": "-", + "description": "`pachca guide`: сценарии разворачивания ссылок и поллинга описывают раздел «Интеграции» — событие ссылок с доменами и история событий без Webhook URL" + }, + { + "type": "-", + "description": "`pachca messages create`, `messages update` и `tasks list`: подсказки к `--content` и `--chat-ids` описывают, что меняется для мульти-гостя" + }, + { + "type": "-", + "description": "`pachca messages create`: подсказка к `--parent-message-id` описывает ответ с цитатой в любом чате, в том числе в треде. В описаниях тредов сказано, какой идентификатор куда передавать: `id` — чтобы написать в тред, `chat_id` — чтобы прочитать его сообщения." + }, + { + "type": "~", + "description": "После ответа `401` CLI подсказывает, что делать дальше: войти заново, если вход через браузер отозван или завершён, или сохранить новый токен. В подсказку подставлен профиль, с которым запускалась команда." + }, + { + "type": "-", + "description": "`pachca views open`: в справке у блоков `radio` и `checkbox` до 20 вариантов" + } + ] + }, + { + "product": "sdk", + "version": "1.5.0", + "date": "2026-10-01", + "changes": [ + { + "type": "~", + "description": "Методы самого бота `Саморегистрация вебхука бота` (`PUT /bot/webhook`) и `Ротация собственного токена бота` (`POST /bot/recreate_token`) отвечают своими моделями `BotSelfResponse` и `BotSelfTokenResponse`: кроме `id` и настроек вебхука, в них есть `oauth_client`" + }, + { + "type": "~", + "description": "Поле `access_token` в ответе `Новый бот` (`POST /bots`) стало необязательным: у бота, созданного с `empty: true`, токена нет. Объект `webhook` в запросе `Редактирование бота` (`PUT /bots/{id}`) тоже больше не обязателен." + }, + { + "type": "+", + "description": "Методы `Список токенов бота` (`GET /bots/{id}/tokens`), `Новый токен бота` (`POST /bots/{id}/tokens`), `Изменение токена бота` (`PUT /bots/{id}/tokens/{token_id}`), `Перевыпуск токена бота` (`POST /bots/{id}/tokens/{token_id}/reissue`), `Удаление токена бота` (`DELETE /bots/{id}/tokens/{token_id}`) и `Каталог прав бота` (`GET /bots/{id}/scopes`)" + }, + { + "type": "+", + "description": "Метод `Ротация секрета клиента` (`POST /bots/{id}/rotate_client_secret`)" + }, + { + "type": "+", + "description": "Авторизация от имени сотрудника в `Новый бот` (`POST /bots`) и `Редактирование бота` (`PUT /bots/{id}`): поля `oauth_client` и `promo` в запросе, `oauth_client`, `oauth_client_enabled`, `promo` и `client_secret` в ответе, а также поле `empty` для пустого бота" + }, + { + "type": "+", + "description": "В объекте бота — `name`, `nickname`, `avatar_url`, `creator_id`, `created_at`, `authorized_users_count`, `last_used_at` и `permissions`, у вебхука — `kind`, `unfurl_domains` и `last_request_at`. `kind`, `unfurl_domains` и `single_chat` принимаются и при редактировании." + }, + { + "type": "+", + "description": "Поле `oauth_client` у ботов в `Список ботов пространства` (`GET /company/bots`)" + }, + { + "type": "+", + "description": "Метод `Отметка чата непрочитанным` (`PUT /chats/{id}/unread`) и скоуп `chats:mark_unread`" + }, + { + "type": "+", + "description": "Типы аудит-событий `bot_token_created`, `bot_token_updated`, `bot_token_reissued`, `bot_oauth_client_secret_rotated` и `bot_oauth_client_disabled` и модели их деталей. У деталей `bot_scopes_updated`, `bot_webhook_settings_updated` и `bot_oauth_client_updated` появились `bot_id` и `actor_id`." + }, + { + "type": "+", + "description": "Значение `bot_add_denied` в `ValidationErrorCode` — так `Добавление пользователей` (`POST /chats/{id}/members`) и `Новый чат` (`POST /chats`) отвечают на бота, которого вам не разрешает добавить его настройка «Кто может добавлять бота в чаты»" + }, + { + "type": "+", + "description": "Код ошибки `timeout` и ответ `504` у `Поиск сотрудников` (`GET /search/users`), `Поиск чатов` (`GET /search/chats`), `Поиск сообщений` (`GET /search/messages`) и `Список сотрудников` (`GET /users`) — поиск не уложился по времени" + }, + { + "type": "+", + "description": "Поля `entity_type`, `entity_id` и `thread` в вебхуке о ссылке (`LinkSharedWebhookPayload`)" + } + ] + }, { "product": "n8n", "version": "2.1.3", diff --git a/apps/docs/lib/mdx-expander.ts b/apps/docs/lib/mdx-expander.ts index b34578309..928e87853 100644 --- a/apps/docs/lib/mdx-expander.ts +++ b/apps/docs/lib/mdx-expander.ts @@ -286,7 +286,7 @@ export async function expandMdxComponents(content: string): Promise { if (apiError) { errorSchemaMarkdown += formatSchemaWithTitle( apiError, - 'ApiError (400, 402, 403, 404, 409, 410, 422)' + 'ApiError (400, 402, 403, 404, 409, 410, 422, 429, 503, 504)' ); errorSchemaMarkdown += '\n'; } @@ -826,9 +826,10 @@ export async function expandMdxComponents(content: string): Promise { owner: 'Владелец', admin: 'Администратор', user: 'Сотрудник', + multi_guest: 'Мульти-гость', bot: 'Бот', }; - const ALL_ROLES = ['owner', 'admin', 'user', 'bot']; + const ALL_ROLES = ['owner', 'admin', 'user', 'multi_guest', 'bot']; let md = '| Скоуп | Описание | Роли |\n'; md += '|-------|----------|------|\n'; diff --git a/apps/docs/lib/openapi/mapper.ts b/apps/docs/lib/openapi/mapper.ts index a75e7a5fd..852c3cf26 100644 --- a/apps/docs/lib/openapi/mapper.ts +++ b/apps/docs/lib/openapi/mapper.ts @@ -23,6 +23,15 @@ const OPERATION_OVERRIDES: Record = { 'GET /company/bots': '/api/bots/list-company', // Ответ на отправку формы: без пина POST даёт префикс add, и команда читается как создание. 'POST /views/{view_id}/submit_response': '/api/views/submit-response', + // Токены, каталог прав и секрет клиента бота: вложенные пути под /bots/{id} дали бы безликие слаги. + 'GET /bots/{id}/tokens': '/api/bots/list-tokens', + 'POST /bots/{id}/tokens': '/api/bots/create-token', + 'PUT /bots/{id}/tokens/{token_id}': '/api/bots/update-token', + 'POST /bots/{id}/tokens/{token_id}/reissue': '/api/bots/reissue-token', + 'DELETE /bots/{id}/tokens/{token_id}': '/api/bots/delete-token', + 'GET /bots/{id}/scopes': '/api/bots/list-scopes', + 'POST /bots/{id}/rotate_client_secret': '/api/bots/rotate-client-secret', + 'PUT /chats/{id}/unread': '/api/chats/mark-unread', }; export function generateUrlFromOperation(endpoint: Endpoint): string { diff --git a/apps/docs/lib/schemas/guide-schemas.ts b/apps/docs/lib/schemas/guide-schemas.ts index 8543bbc12..96c650b57 100644 --- a/apps/docs/lib/schemas/guide-schemas.ts +++ b/apps/docs/lib/schemas/guide-schemas.ts @@ -163,6 +163,7 @@ export const HTTP_CODES = [ { code: '500, 502, 503, 504', message: 'Server Errors', - description: 'Что-то пошло не так на сервере Пачки (это редкость)', + description: + 'Что-то пошло не так на сервере Пачки (это редкость). Исключение — 504 у поиска: запрос не уложился по времени, его стоит сузить', }, ]; diff --git a/apps/docs/lib/tabs-config.ts b/apps/docs/lib/tabs-config.ts index e62fb8055..4799c9e2f 100644 --- a/apps/docs/lib/tabs-config.ts +++ b/apps/docs/lib/tabs-config.ts @@ -116,11 +116,26 @@ export const GUIDE_SECTIONS: SidebarSection[] = [ path: '/guides/bots/overview', children: [ { title: 'Обзор', path: '/guides/bots/overview' }, - { title: 'Создание и настройка', path: '/guides/bots/setup' }, + { title: 'Создание бота', path: '/guides/bots/setup' }, + { title: 'Настройки бота', path: '/guides/bots/settings' }, + { title: 'Токены бота', path: '/guides/bots/tokens' }, + { title: 'Первый диалог с ботом', path: '/guides/bots/first-contact' }, { title: 'Доступы к чатам и сообщениям', path: '/guides/bots/access' }, + { title: 'Витрина', path: '/guides/bots/showcase' }, { title: 'Готовые примеры', path: '/guides/bots/examples' }, ], }, + { + title: 'Авторизация от имени сотрудника', + path: '/guides/oauth/overview', + children: [ + { title: 'Обзор', path: '/guides/oauth/overview' }, + { title: 'Чек-лист запуска', path: '/guides/oauth/checklist' }, + { title: 'Настройка авторизации', path: '/guides/oauth/setup' }, + { title: 'Получение токена', path: '/guides/oauth/flow' }, + { title: 'Согласие и отзыв', path: '/guides/oauth/consent' }, + ], + }, { title: 'Входящие вебхуки', path: '/guides/incoming-webhooks' }, { title: 'Исходящие вебхуки', diff --git a/apps/docs/public/.well-known/agent-skills/index.json b/apps/docs/public/.well-known/agent-skills/index.json index f26e691fc..2e53111c2 100644 --- a/apps/docs/public/.well-known/agent-skills/index.json +++ b/apps/docs/public/.well-known/agent-skills/index.json @@ -6,70 +6,70 @@ "type": "skill-md", "description": "Pachca — МОЙ профиль, МОЙ статус, кастомные поля. Всегда только про себя — без параметров, данные определяются по токену. Используй, когда пользователь хочет получить свой профиль, узнать кто он, установить или убрать свой статус, посмотреть свой email/отдел, или узнать какие кастомные/дополнительные поля существуют (custom_properties). Также для запросов «кто я», «мой аккаунт», «мой email». НЕ для управления другими сотрудниками, НЕ для изменения статуса другого сотрудника, НЕ для информации о токене и его скоупах (используй pachca-oauth).", "url": "/.well-known/skills/pachca-profile/SKILL.md", - "digest": "sha256:9d9732cac0703d48bbec753effd351aa1e8986ad95df213cac55204f3c4cd538" + "digest": "sha256:863e2e76d46683d32e1de189acb4fd96e3ed5a9df3b53ced5e2ca1864e9aca90" }, { "name": "pachca-oauth", "type": "skill-md", "description": "Pachca — информация о текущем OAuth-токене: его скоупы (права доступа), даты создания и последнего использования, тип владельца (пользователь или бот). Используй, когда пользователь хочет проверить токен, узнать какие у токена скоупы/права, чей это токен, когда токен создан или последний раз использовался. НЕ для управления своим профилем или статусом (используй pachca-profile), НЕ для выпуска или ротации токенов ботов (используй pachca-bots).", "url": "/.well-known/skills/pachca-oauth/SKILL.md", - "digest": "sha256:1af3e43a5aacbe508570e6ed8f8387730f0d219c46fcdd0c10631f99fded5903" + "digest": "sha256:54025274a6c14e5f4e08da45d15105fd2c2e9f0e756ef3dfed1daaa7db9d4746" }, { "name": "pachca-users", "type": "skill-md", "description": "Pachca — управление сотрудниками (участниками пространства) и тегами (группами). Используй, когда пользователь хочет вывести список сотрудников, создать, обновить, заблокировать или удалить сотрудника, установить статус другому сотруднику по ID, управлять тегами/группами, назначить теги или провести онбординг/оффбординг. НЕ для своего профиля или своего статуса (используй pachca-profile), НЕ для поиска сотрудника по имени (используй pachca-search).", "url": "/.well-known/skills/pachca-users/SKILL.md", - "digest": "sha256:e80e9152810ca305b395b4fcad2cf26d2700f83dc2280f078b33426316231b71" + "digest": "sha256:028ef4166b25561e078e24db297e28baabe70aef0bc668c1aa6b6bbcc74f4da6" }, { "name": "pachca-chats", "type": "skill-md", "description": "Pachca — управление чатами, каналами и беседами. Используй этот скилл, когда пользователь хочет создать канал, создать беседу, вывести или архивировать чаты, добавить или удалить участников, изменить роли участников, экспортировать историю чата или проверить настройки чата. НЕ для отправки сообщений или ответов в тред.", "url": "/.well-known/skills/pachca-chats/SKILL.md", - "digest": "sha256:bc30e071ef976e2d9fc86506f11eeb8906d225a7cc2e5d0646e451fcfb2645d9" + "digest": "sha256:5dad5a45c3113adb5dae9ef61f40918775514fb5e234fbc1c22646681bd1c691" }, { "name": "pachca-messages", "type": "skill-md", "description": "Pachca — сообщения: отправка, редактирование, удаление. Используй этот скилл, когда пользователь хочет отправить сообщение, написать в чат или в личку, ответить в тред, прикрепить файл, поставить реакцию, закрепить сообщение, получить историю сообщений, изменить или удалить сообщение, узнать кто прочитал или отправить сообщение с кнопками. Сюда же черновики и отложенные сообщения: написать заранее, отправить позже, повторять по расписанию, отменить отложенное. Также для упоминаний (@), уведомлений и подписки на тред. НЕ для создания каналов, управления участниками или настройки ботов.", "url": "/.well-known/skills/pachca-messages/SKILL.md", - "digest": "sha256:ac4fcfeea3eed71724c6166a2059736e641e0d47505883e117b2f04be7f79c50" + "digest": "sha256:384b96d4134bc54e1d00bfe98c085bc7eb9e42d21c4881c814cb3479950dd3f0" }, { "name": "pachca-bots", "type": "skill-md", "description": "Pachca — управление ботами и вебхуки. Используй этот скилл, когда пользователь хочет настроить бота, создать бота, настроить вебхуки, обработать вебхук, проверить подпись вебхука (X-Signature), обработать callback нажатия кнопки или создать дайджест-бота. НЕ для отправки обычных сообщений, показа форм или модальных окон. Разворачивание ссылок (unfurl) — в pachca-messages.", "url": "/.well-known/skills/pachca-bots/SKILL.md", - "digest": "sha256:6e8884d513e2bfb3a25a85bc696e802ade8963bad7156e264e839eb0f70527fe" + "digest": "sha256:eb249a86c53d5dee29fdc5d83f161dd9f87210122f7020b3375a64db5fcffbdc" }, { "name": "pachca-forms", "type": "skill-md", "description": "Pachca — интерактивные формы и модальные окна для ботов. Создание форм, модальных окон, опросов, анкет и заявок с полями ввода, выпадающими списками, чекбоксами, выбором даты/времени, загрузкой файлов. Используй, когда пользователь хочет показать форму, открыть модальное окно, создать опрос или анкету, обработать отправку формы (view_submission) или валидацию полей. Также для trigger_id и dropdown/select. Требует токен бота. НЕ для инлайн-кнопок в сообщениях или настройки вебхуков.", "url": "/.well-known/skills/pachca-forms/SKILL.md", - "digest": "sha256:96d5995cf0dc926218b99b5d5edc148047ee4aee78a38e6b83f490c5bbd0bf95" + "digest": "sha256:7815d307e302c1f9e88f97f2ed441e386bd8c94fb4dd71524a9f69414e13072b" }, { "name": "pachca-tasks", "type": "skill-md", "description": "Pachca — задачи и напоминания: создание, список, обновление, выполнение, удаление. Используй этот скилл, когда пользователь хочет создать задачу или напоминание, вывести список задач, отметить задачу как выполненную, обновить задачу, управлять дополнительными полями задач или установить дедлайн. Также для еженедельных напоминаний и серии напоминаний. НЕ для отправки сообщений или управления чатами.", "url": "/.well-known/skills/pachca-tasks/SKILL.md", - "digest": "sha256:9c99796a1778ab944ea887db3f25e75dc8b8098f972907b3632d70a69f51fca5" + "digest": "sha256:787657098fd8bdda5667cbcf6917960e32f073d35e715de1a293d931bfb9cead" }, { "name": "pachca-search", "type": "skill-md", "description": "Pachca — полнотекстовый поиск по сотрудникам, чатам и сообщениям. Используй этот скилл, когда пользователь хочет найти что-то — найти сотрудника по имени, найти сообщение по тексту, найти чат по названию или узнать где обсуждали тему. Также когда пользователь спрашивает «найди сотрудника», «где обсуждали X», «найди сообщения про Y» или любой запрос с поиском/нахождением контента. НЕ для вывода всех сотрудников, всех чатов или отправки сообщений.", "url": "/.well-known/skills/pachca-search/SKILL.md", - "digest": "sha256:80358daa33cf103253c1ceeabbf6a29377467e39cddd9eb2421d38ef11b348ca" + "digest": "sha256:8b61badcceff9c733a05c1e1d0646c909a7f7d25a2580e42eca9b6702a64bc17" }, { "name": "pachca-security", "type": "skill-md", "description": "Pachca — журнал безопасности: отслеживание входов, действий пользователей, изменений сообщений и нарушений DLP. Требуется тариф «Корпорация». Используй этот скилл, когда пользователь хочет посмотреть события безопасности, журнал аудита, историю входов, подозрительную активность, узнать кто что делал, экспортировать логи безопасности или отслеживать нарушения DLP. НЕ для отправки сообщений или управления сотрудниками.", "url": "/.well-known/skills/pachca-security/SKILL.md", - "digest": "sha256:6f90f928089b52aeef6a5717bb334dae7db3d0b38c2b299a8109d39a861f53d1" + "digest": "sha256:e06c0ffac37896202663539c875315c816ede15bdd5cba6058549f9bff1ffdfe" }, { "name": "pachca", diff --git a/apps/docs/public/.well-known/skills/index.json b/apps/docs/public/.well-known/skills/index.json index f26e691fc..2e53111c2 100644 --- a/apps/docs/public/.well-known/skills/index.json +++ b/apps/docs/public/.well-known/skills/index.json @@ -6,70 +6,70 @@ "type": "skill-md", "description": "Pachca — МОЙ профиль, МОЙ статус, кастомные поля. Всегда только про себя — без параметров, данные определяются по токену. Используй, когда пользователь хочет получить свой профиль, узнать кто он, установить или убрать свой статус, посмотреть свой email/отдел, или узнать какие кастомные/дополнительные поля существуют (custom_properties). Также для запросов «кто я», «мой аккаунт», «мой email». НЕ для управления другими сотрудниками, НЕ для изменения статуса другого сотрудника, НЕ для информации о токене и его скоупах (используй pachca-oauth).", "url": "/.well-known/skills/pachca-profile/SKILL.md", - "digest": "sha256:9d9732cac0703d48bbec753effd351aa1e8986ad95df213cac55204f3c4cd538" + "digest": "sha256:863e2e76d46683d32e1de189acb4fd96e3ed5a9df3b53ced5e2ca1864e9aca90" }, { "name": "pachca-oauth", "type": "skill-md", "description": "Pachca — информация о текущем OAuth-токене: его скоупы (права доступа), даты создания и последнего использования, тип владельца (пользователь или бот). Используй, когда пользователь хочет проверить токен, узнать какие у токена скоупы/права, чей это токен, когда токен создан или последний раз использовался. НЕ для управления своим профилем или статусом (используй pachca-profile), НЕ для выпуска или ротации токенов ботов (используй pachca-bots).", "url": "/.well-known/skills/pachca-oauth/SKILL.md", - "digest": "sha256:1af3e43a5aacbe508570e6ed8f8387730f0d219c46fcdd0c10631f99fded5903" + "digest": "sha256:54025274a6c14e5f4e08da45d15105fd2c2e9f0e756ef3dfed1daaa7db9d4746" }, { "name": "pachca-users", "type": "skill-md", "description": "Pachca — управление сотрудниками (участниками пространства) и тегами (группами). Используй, когда пользователь хочет вывести список сотрудников, создать, обновить, заблокировать или удалить сотрудника, установить статус другому сотруднику по ID, управлять тегами/группами, назначить теги или провести онбординг/оффбординг. НЕ для своего профиля или своего статуса (используй pachca-profile), НЕ для поиска сотрудника по имени (используй pachca-search).", "url": "/.well-known/skills/pachca-users/SKILL.md", - "digest": "sha256:e80e9152810ca305b395b4fcad2cf26d2700f83dc2280f078b33426316231b71" + "digest": "sha256:028ef4166b25561e078e24db297e28baabe70aef0bc668c1aa6b6bbcc74f4da6" }, { "name": "pachca-chats", "type": "skill-md", "description": "Pachca — управление чатами, каналами и беседами. Используй этот скилл, когда пользователь хочет создать канал, создать беседу, вывести или архивировать чаты, добавить или удалить участников, изменить роли участников, экспортировать историю чата или проверить настройки чата. НЕ для отправки сообщений или ответов в тред.", "url": "/.well-known/skills/pachca-chats/SKILL.md", - "digest": "sha256:bc30e071ef976e2d9fc86506f11eeb8906d225a7cc2e5d0646e451fcfb2645d9" + "digest": "sha256:5dad5a45c3113adb5dae9ef61f40918775514fb5e234fbc1c22646681bd1c691" }, { "name": "pachca-messages", "type": "skill-md", "description": "Pachca — сообщения: отправка, редактирование, удаление. Используй этот скилл, когда пользователь хочет отправить сообщение, написать в чат или в личку, ответить в тред, прикрепить файл, поставить реакцию, закрепить сообщение, получить историю сообщений, изменить или удалить сообщение, узнать кто прочитал или отправить сообщение с кнопками. Сюда же черновики и отложенные сообщения: написать заранее, отправить позже, повторять по расписанию, отменить отложенное. Также для упоминаний (@), уведомлений и подписки на тред. НЕ для создания каналов, управления участниками или настройки ботов.", "url": "/.well-known/skills/pachca-messages/SKILL.md", - "digest": "sha256:ac4fcfeea3eed71724c6166a2059736e641e0d47505883e117b2f04be7f79c50" + "digest": "sha256:384b96d4134bc54e1d00bfe98c085bc7eb9e42d21c4881c814cb3479950dd3f0" }, { "name": "pachca-bots", "type": "skill-md", "description": "Pachca — управление ботами и вебхуки. Используй этот скилл, когда пользователь хочет настроить бота, создать бота, настроить вебхуки, обработать вебхук, проверить подпись вебхука (X-Signature), обработать callback нажатия кнопки или создать дайджест-бота. НЕ для отправки обычных сообщений, показа форм или модальных окон. Разворачивание ссылок (unfurl) — в pachca-messages.", "url": "/.well-known/skills/pachca-bots/SKILL.md", - "digest": "sha256:6e8884d513e2bfb3a25a85bc696e802ade8963bad7156e264e839eb0f70527fe" + "digest": "sha256:eb249a86c53d5dee29fdc5d83f161dd9f87210122f7020b3375a64db5fcffbdc" }, { "name": "pachca-forms", "type": "skill-md", "description": "Pachca — интерактивные формы и модальные окна для ботов. Создание форм, модальных окон, опросов, анкет и заявок с полями ввода, выпадающими списками, чекбоксами, выбором даты/времени, загрузкой файлов. Используй, когда пользователь хочет показать форму, открыть модальное окно, создать опрос или анкету, обработать отправку формы (view_submission) или валидацию полей. Также для trigger_id и dropdown/select. Требует токен бота. НЕ для инлайн-кнопок в сообщениях или настройки вебхуков.", "url": "/.well-known/skills/pachca-forms/SKILL.md", - "digest": "sha256:96d5995cf0dc926218b99b5d5edc148047ee4aee78a38e6b83f490c5bbd0bf95" + "digest": "sha256:7815d307e302c1f9e88f97f2ed441e386bd8c94fb4dd71524a9f69414e13072b" }, { "name": "pachca-tasks", "type": "skill-md", "description": "Pachca — задачи и напоминания: создание, список, обновление, выполнение, удаление. Используй этот скилл, когда пользователь хочет создать задачу или напоминание, вывести список задач, отметить задачу как выполненную, обновить задачу, управлять дополнительными полями задач или установить дедлайн. Также для еженедельных напоминаний и серии напоминаний. НЕ для отправки сообщений или управления чатами.", "url": "/.well-known/skills/pachca-tasks/SKILL.md", - "digest": "sha256:9c99796a1778ab944ea887db3f25e75dc8b8098f972907b3632d70a69f51fca5" + "digest": "sha256:787657098fd8bdda5667cbcf6917960e32f073d35e715de1a293d931bfb9cead" }, { "name": "pachca-search", "type": "skill-md", "description": "Pachca — полнотекстовый поиск по сотрудникам, чатам и сообщениям. Используй этот скилл, когда пользователь хочет найти что-то — найти сотрудника по имени, найти сообщение по тексту, найти чат по названию или узнать где обсуждали тему. Также когда пользователь спрашивает «найди сотрудника», «где обсуждали X», «найди сообщения про Y» или любой запрос с поиском/нахождением контента. НЕ для вывода всех сотрудников, всех чатов или отправки сообщений.", "url": "/.well-known/skills/pachca-search/SKILL.md", - "digest": "sha256:80358daa33cf103253c1ceeabbf6a29377467e39cddd9eb2421d38ef11b348ca" + "digest": "sha256:8b61badcceff9c733a05c1e1d0646c909a7f7d25a2580e42eca9b6702a64bc17" }, { "name": "pachca-security", "type": "skill-md", "description": "Pachca — журнал безопасности: отслеживание входов, действий пользователей, изменений сообщений и нарушений DLP. Требуется тариф «Корпорация». Используй этот скилл, когда пользователь хочет посмотреть события безопасности, журнал аудита, историю входов, подозрительную активность, узнать кто что делал, экспортировать логи безопасности или отслеживать нарушения DLP. НЕ для отправки сообщений или управления сотрудниками.", "url": "/.well-known/skills/pachca-security/SKILL.md", - "digest": "sha256:6f90f928089b52aeef6a5717bb334dae7db3d0b38c2b299a8109d39a861f53d1" + "digest": "sha256:e06c0ffac37896202663539c875315c816ede15bdd5cba6058549f9bff1ffdfe" }, { "name": "pachca", diff --git a/apps/docs/public/.well-known/skills/pachca-bots/SKILL.md b/apps/docs/public/.well-known/skills/pachca-bots/SKILL.md index 3d675b9ec..9a4129799 100644 --- a/apps/docs/public/.well-known/skills/pachca-bots/SKILL.md +++ b/apps/docs/public/.well-known/skills/pachca-bots/SKILL.md @@ -17,7 +17,7 @@ allowed-tools: Bash(npx:*), Bash(pachca:*), Bash(which:*), Bash(npm:*) ## Quick start -Ask the user for a Pachca token (bot: Automations → Integrations → API, user: Automations → API). +Ask the user for a Pachca token (bot: the API tab of the bot in Integrations → Bots, user: Integrations → API). Run commands via `npx -y @pachca/cli` with the `--token` flag: @@ -59,7 +59,7 @@ Help: `npx -y @pachca/cli --help` | Workflows: `npx -y @pachca/cli guide` 3. В ответе также придёт `id` бота (его `user_id`) — он нужен для дальнейших вызовов, например чтобы добавить бота в чат -> Создавать ботов можно только пользовательским токеном — токеном бота нельзя. `access_token` отдаётся один раз при создании, дальше его можно посмотреть и скопировать в интерфейсе. +> Создавать ботов можно только пользовательским токеном — токеном бота нельзя. `access_token` отдаётся один раз при создании, увидеть его снова нельзя, только перевыпустить. С флагом `--empty` бот создаётся без токена и входящего вебхука, как в интерфейсе, а токены ему выпускает `pachca bots create-token`. ### Настроить бота с исходящим вебхуком @@ -94,19 +94,58 @@ Help: `npx -y @pachca/cli --help` | Workflows: `npx -y @pachca/cli guide` ### Ротация токена бота -1. Пользовательским токеном (администратор, владелец компании или создатель бота) — перевыпусти токен по `id` бота. Прежний токен инвалидируется сразу: +1. Пользовательским токеном (создатель бота или администратор, если бот открыт администраторам) — перевыпусти основной токен по `id` бота: тот, что без имени, а если такого нет, самый старый. Прежнее значение инвалидируется сразу: ```bash pachca bots recreate-token ``` -2. Или: бот перевыпускает собственный токен своим же токеном (скоуп `bot_self:write`). Токен, которым выполнен запрос, инвалидируется сразу — обязательно сохрани новый `access_token` из ответа, иначе бот потеряет доступ к API: +2. Или: бот перевыпускает свой основной токен сам (скоуп `bot_self:write`). Если запрос сделан основным токеном, он инвалидируется сразу — обязательно сохрани новый `access_token` из ответа, иначе бот потеряет доступ к API: ```bash pachca bots recreate-token-self ``` -3. Сохрани новый `access_token` из ответа — он возвращается единственный раз. Обнови секрет в CI или хранилище секретов +3. Отдельный токен бота перевыпускай по его `id` из `pachca bots list-tokens`: значение меняется, имя и права остаются: + ```bash + pachca bots reissue-token + ``` + +4. Сохрани новый `access_token` из ответа — он возвращается единственный раз. Обнови секрет в CI или хранилище секретов + +> Новое значение возвращается один раз. Self-путь (`POST /bot/recreate_token`) перевыпускает основной токен бота — если бот ходит им, захвати новый токен из ответа в той же операции. + + +### Выпустить боту отдельный токен + +1. Пользовательским токеном (создатель бота или администратор, если бот открыт администраторам) получи каталог прав, которые можно выдать этому боту: + ```bash + pachca bots list-scopes + ``` + +2. Выпусти токен с именем и правами из каталога. Без `--scopes` токен выпускается без прав, право не из каталога отклоняется с `400`: + ```bash + pachca bots create-token --name="Сервер уведомлений" --scopes='["messages:create"]' + ``` + +3. Сохрани `token` из ответа — полное значение возвращается единственный раз. Дальше в списке `pachca bots list-tokens` он приходит замаскированным + +> Отдельный токен удобен на каждый сервис, который работает от имени бота: его отзывают командой `pachca bots delete-token`, не трогая остальные. Права меняет `pachca bots update-token` — они действуют сразу, перевыпускать токен не нужно. + + +### Включить боту авторизацию от имени сотрудника + +1. Пользовательским токеном (создатель бота или администратор, если бот открыт администраторам) включи авторизацию: где хранится секрет, адреса возврата и права, которые бот попросит у сотрудника. Права бери из `pachca bots list-scopes`: + ```bash + pachca bots update --oauth-client='{"confidential":true,"redirect_uris":["https://example.com/oauth/callback"],"scopes":["messages:read","messages:create"]}' + ``` + +2. Сохрани `client_secret` из ответа серверного клиента — он возвращается единственный раз. `client_id` приходит в `oauth_client` и не секретный + +3. Чтобы бот появился в витрине, добавь описание и опубликуй страницу: + ```bash + pachca bots update --promo='{"description":"Собирает сводку по задачам","published":true}' + ``` -> Новый токен возвращается один раз. Self-путь (`POST /bot/recreate_token`) инвалидирует именно тот токен, которым выполнен запрос, — захвати новый токен из ответа в той же операции. +> Включена ли авторизация, показывает `oauth_client_enabled`: `oauth_client` может прийти и у бота с выключенной авторизацией. `--oauth-client=null` выключает её и отзывает выданные сотрудниками авторизации, новый секрет выпускает `pachca bots rotate-client-secret`. ### Найти и удалить бота @@ -116,7 +155,7 @@ Help: `npx -y @pachca/cli --help` | Workflows: `npx -y @pachca/cli guide` pachca bots list --query="задач" ``` -2. Возьми `id` нужного бота из списка и удали его (скоуп `bots:write`). Доступно администратору, владельцу компании или создателю бота — владельцы чатов удалять бота не могут. Прежний токен инвалидируется сразу, бот исключается из всех чатов, его исходящий вебхук удаляется: +2. Возьми `id` нужного бота из списка и удали его (скоуп `bots:write`). Доступно создателю бота и администратору, если бот открыт администраторам, — владельцы чатов удалять бота не могут. Все токены бота инвалидируются сразу, бот исключается из всех чатов, его вебхуки удаляются: ```bash pachca bots delete ``` @@ -159,7 +198,9 @@ Help: `npx -y @pachca/cli --help` | Workflows: `npx -y @pachca/cli guide` - `webhook.nickname`: max 255 characters - `webhook.trigger_on`: allowed values — `commands` (Только на команды (триггер-слова) из commands), `all_messages` (На все сообщения в чатах, где есть бот), `unfurl` (На развёртывание ссылок (link previews)) - `webhook.template_engine`: allowed values — `liquid` (Liquid — условия, циклы и фильтры), `mustache` (Mustache — простая подстановка без логики) -- `webhook.who_can_add`: allowed values — `creator` (Только создатель бота), `creator_admin` (Создатель и администраторы компании), `creator_admin_user` (Создатель, администраторы и участники компании), `anyone` (Любой пользователь, в том числе гости) +- `webhook.who_can_add`: allowed values — `creator` (Только создатель бота), `creator_admin` (Создатель и администраторы компании), `creator_admin_user` (Создатель, администраторы и участники компании), `anyone` (Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей) +- `webhook.kind`: allowed values — `simple` (Свой формат: сообщение собирается из тела запроса по шаблону бота), `gitlab` (GitLab: Пачка сама разбирает запрос и собирает сообщение), `grafana` (Grafana: Пачка сама разбирает запрос и собирает сообщение) +- `name`: max 255 characters - `limit`: max 50 - Pagination: cursor-based (limit + cursor) @@ -175,6 +216,13 @@ Help: `npx -y @pachca/cli --help` | Workflows: `npx -y @pachca/cli guide` | PUT | /bots/{id} | Редактирование бота | | DELETE | /bots/{id} | Удаление бота | | POST | /bots/{id}/recreate_token | Ротация токена бота | +| POST | /bots/{id}/rotate_client_secret | Ротация секрета клиента | +| GET | /bots/{id}/scopes | Каталог прав бота | +| GET | /bots/{id}/tokens | Список токенов бота | +| POST | /bots/{id}/tokens | Новый токен бота | +| PUT | /bots/{id}/tokens/{token_id} | Изменение токена бота | +| DELETE | /bots/{id}/tokens/{token_id} | Удаление токена бота | +| POST | /bots/{id}/tokens/{token_id}/reissue | Перевыпуск токена бота | | GET | /company/bots | Список ботов пространства | | GET | /webhooks/events | История событий | | DELETE | /webhooks/events/{id} | Удаление события | diff --git a/apps/docs/public/.well-known/skills/pachca-bots/references/link-unfurling.md b/apps/docs/public/.well-known/skills/pachca-bots/references/link-unfurling.md index c9362b6a6..f26663263 100644 --- a/apps/docs/public/.well-known/skills/pachca-bots/references/link-unfurling.md +++ b/apps/docs/public/.well-known/skills/pachca-bots/references/link-unfurling.md @@ -1,6 +1,6 @@ ### Разворачивание ссылок (unfurling) -1. Создай специального Unfurl-бота и укажи отслеживаемые домены +1. В карточке бота на вкладке «Исходящий вебхук» включи событие «Отправка ссылок в сообщении (unfurl)» и укажи до 5 доменов — это может только администратор или владелец пространства 2. При появлении ссылки бот получает вебхук `"event": "link_shared"` с массивом `links`. Каждый объект содержит `url`, `domain` и `skip: boolean` — если `skip` равен `true`, автор скрыл превью и бот должен пропустить эту ссылку @@ -11,5 +11,5 @@ pachca messages unfurl --link-previews='{"https://example.com":{"title":"Example","description":"Description"}}' ``` -> Эндпоинт привязан к конкретному сообщению. Необходим специальный Unfurl-бот с указанными доменами. +> Эндпоинт привязан к конкретному сообщению. Боту нужно событие разворачивания ссылок с доменами: ссылки приходят из всех чатов пространства, добавлять бота в чаты не нужно. diff --git a/apps/docs/public/.well-known/skills/pachca-bots/references/process-events-via-history-polling.md b/apps/docs/public/.well-known/skills/pachca-bots/references/process-events-via-history-polling.md index 6e2c6f7bd..50fc75e31 100644 --- a/apps/docs/public/.well-known/skills/pachca-bots/references/process-events-via-history-polling.md +++ b/apps/docs/public/.well-known/skills/pachca-bots/references/process-events-via-history-polling.md @@ -1,6 +1,9 @@ ### Обработка событий через историю (polling) -1. В настройках бота включи «Сохранять историю событий». Webhook URL указывать не обязательно. +1. Включи историю событий флагом `--events-history-enabled` (Webhook URL для этого не нужен) или настройкой «Сохранять историю событий» на вкладке «Исходящий вебхук» — в интерфейсе она появляется после включения вебхука: + ```bash + pachca bots update --events-history-enabled + ``` 2. Получи накопленные события: ```bash diff --git a/apps/docs/public/.well-known/skills/pachca-chats/SKILL.md b/apps/docs/public/.well-known/skills/pachca-chats/SKILL.md index cd8e10be7..c0c0fd7b2 100644 --- a/apps/docs/public/.well-known/skills/pachca-chats/SKILL.md +++ b/apps/docs/public/.well-known/skills/pachca-chats/SKILL.md @@ -17,7 +17,7 @@ allowed-tools: Bash(npx:*), Bash(pachca:*), Bash(which:*), Bash(npm:*) ## Quick start -Ask the user for a Pachca token (bot: Automations → Integrations → API, user: Automations → API). +Ask the user for a Pachca token (bot: the API tab of the bot in Integrations → Bots, user: Integrations → API). Run commands via `npx -y @pachca/cli` with the `--token` flag: @@ -158,6 +158,7 @@ Help: `npx -y @pachca/cli --help` | Workflows: `npx -y @pachca/cli guide` | DELETE | /chats/{id}/members/{user_id} | Исключение пользователя | | PUT | /chats/{id}/members/{user_id} | Редактирование роли | | PUT | /chats/{id}/unarchive | Разархивация чата | +| PUT | /chats/{id}/unread | Отметка чата непрочитанным | | GET | /company/chats | Список чатов пространства | ## Advanced workflows diff --git a/apps/docs/public/.well-known/skills/pachca-forms/SKILL.md b/apps/docs/public/.well-known/skills/pachca-forms/SKILL.md index 18a698638..c49e52d6b 100644 --- a/apps/docs/public/.well-known/skills/pachca-forms/SKILL.md +++ b/apps/docs/public/.well-known/skills/pachca-forms/SKILL.md @@ -19,7 +19,7 @@ allowed-tools: Bash(npx:*), Bash(pachca:*), Bash(which:*), Bash(npm:*) ## Quick start -Ask the user for a Pachca token (bot: Automations → Integrations → API, user: Automations → API). +Ask the user for a Pachca token (bot: the API tab of the bot in Integrations → Bots, user: Integrations → API). **Bot token only** — user tokens will not work. Run commands via `npx -y @pachca/cli` with the `--token` flag: diff --git a/apps/docs/public/.well-known/skills/pachca-messages/SKILL.md b/apps/docs/public/.well-known/skills/pachca-messages/SKILL.md index 2d2d6bc8a..808ce56a6 100644 --- a/apps/docs/public/.well-known/skills/pachca-messages/SKILL.md +++ b/apps/docs/public/.well-known/skills/pachca-messages/SKILL.md @@ -24,7 +24,7 @@ allowed-tools: Bash(npx:*), Bash(pachca:*), Bash(which:*), Bash(npm:*) ## Quick start -Ask the user for a Pachca token (bot: Automations → Integrations → API, user: Automations → API). +Ask the user for a Pachca token (bot: the API tab of the bot in Integrations → Bots, user: Integrations → API). Run commands via `npx -y @pachca/cli` with the `--token` flag: diff --git a/apps/docs/public/.well-known/skills/pachca-oauth/SKILL.md b/apps/docs/public/.well-known/skills/pachca-oauth/SKILL.md index a6a27dc18..5c433bda5 100644 --- a/apps/docs/public/.well-known/skills/pachca-oauth/SKILL.md +++ b/apps/docs/public/.well-known/skills/pachca-oauth/SKILL.md @@ -17,7 +17,7 @@ allowed-tools: Bash(npx:*), Bash(pachca:*), Bash(which:*), Bash(npm:*) ## Quick start -Ask the user for a Pachca token (bot: Automations → Integrations → API, user: Automations → API). +Ask the user for a Pachca token (bot: the API tab of the bot in Integrations → Bots, user: Integrations → API). Run commands via `npx -y @pachca/cli` with the `--token` flag: diff --git a/apps/docs/public/.well-known/skills/pachca-profile/SKILL.md b/apps/docs/public/.well-known/skills/pachca-profile/SKILL.md index 6c36a8c42..c0dc234ae 100644 --- a/apps/docs/public/.well-known/skills/pachca-profile/SKILL.md +++ b/apps/docs/public/.well-known/skills/pachca-profile/SKILL.md @@ -19,7 +19,7 @@ allowed-tools: Bash(npx:*), Bash(pachca:*), Bash(which:*), Bash(npm:*) ## Quick start -Ask the user for a Pachca token (bot: Automations → Integrations → API, user: Automations → API). +Ask the user for a Pachca token (bot: the API tab of the bot in Integrations → Bots, user: Integrations → API). Run commands via `npx -y @pachca/cli` with the `--token` flag: diff --git a/apps/docs/public/.well-known/skills/pachca-search/SKILL.md b/apps/docs/public/.well-known/skills/pachca-search/SKILL.md index 63f86f4db..12dc47c26 100644 --- a/apps/docs/public/.well-known/skills/pachca-search/SKILL.md +++ b/apps/docs/public/.well-known/skills/pachca-search/SKILL.md @@ -17,7 +17,7 @@ allowed-tools: Bash(npx:*), Bash(pachca:*), Bash(which:*), Bash(npm:*) ## Quick start -Ask the user for a Pachca token (bot: Automations → Integrations → API, user: Automations → API). +Ask the user for a Pachca token (bot: the API tab of the bot in Integrations → Bots, user: Integrations → API). Run commands via `npx -y @pachca/cli` with the `--token` flag: diff --git a/apps/docs/public/.well-known/skills/pachca-security/SKILL.md b/apps/docs/public/.well-known/skills/pachca-security/SKILL.md index b775783f1..2bb071c76 100644 --- a/apps/docs/public/.well-known/skills/pachca-security/SKILL.md +++ b/apps/docs/public/.well-known/skills/pachca-security/SKILL.md @@ -17,7 +17,7 @@ allowed-tools: Bash(npx:*), Bash(pachca:*), Bash(which:*), Bash(npm:*) ## Quick start -Ask the user for a Pachca token (bot: Automations → Integrations → API, user: Automations → API). +Ask the user for a Pachca token (bot: the API tab of the bot in Integrations → Bots, user: Integrations → API). Run commands via `npx -y @pachca/cli` with the `--token` flag: diff --git a/apps/docs/public/.well-known/skills/pachca-tasks/SKILL.md b/apps/docs/public/.well-known/skills/pachca-tasks/SKILL.md index e4e9ac229..31fdeb4a9 100644 --- a/apps/docs/public/.well-known/skills/pachca-tasks/SKILL.md +++ b/apps/docs/public/.well-known/skills/pachca-tasks/SKILL.md @@ -17,7 +17,7 @@ allowed-tools: Bash(npx:*), Bash(pachca:*), Bash(which:*), Bash(npm:*) ## Quick start -Ask the user for a Pachca token (bot: Automations → Integrations → API, user: Automations → API). +Ask the user for a Pachca token (bot: the API tab of the bot in Integrations → Bots, user: Integrations → API). Run commands via `npx -y @pachca/cli` with the `--token` flag: diff --git a/apps/docs/public/.well-known/skills/pachca-users/SKILL.md b/apps/docs/public/.well-known/skills/pachca-users/SKILL.md index 4861a8f9a..0a4e2f210 100644 --- a/apps/docs/public/.well-known/skills/pachca-users/SKILL.md +++ b/apps/docs/public/.well-known/skills/pachca-users/SKILL.md @@ -20,7 +20,7 @@ allowed-tools: Bash(npx:*), Bash(pachca:*), Bash(which:*), Bash(npm:*) ## Quick start -Ask the user for a Pachca token (bot: Automations → Integrations → API, user: Automations → API). +Ask the user for a Pachca token (bot: the API tab of the bot in Integrations → Bots, user: Integrations → API). Run commands via `npx -y @pachca/cli` with the `--token` flag: diff --git a/apps/docs/public/api/authorization.md b/apps/docs/public/api/authorization.md index 420045aca..1352563fc 100644 --- a/apps/docs/public/api/authorization.md +++ b/apps/docs/public/api/authorization.md @@ -25,11 +25,11 @@ | | Токен в интерфейсе | Вход через CLI | |---|---|---| -| Как выдаётся | **Автоматизации** > **API**, руками | `pachca auth login`, подтверждение в браузере | +| Как выдаётся | **Интеграции** > **API**, руками | `pachca auth login`, подтверждение в браузере | | Кто выбирает права | вы, при выпуске | не выбираются: берётся весь каталог, урезанный вашей ролью на момент входа | | Срок | бессрочный | час, продлевается автоматически | | Значение токена | показывается один раз, копируется | в терминал не выводится | -| Как прекратить доступ | удалить токен в **Автоматизации** > **API** | `pachca auth logout` — токен гасится на сервере сразу | +| Как прекратить доступ | удалить токен на странице **Интеграции** > **API** | `pachca auth logout` или **Отозвать** в списке **Токены CLI** — токен гасится на сервере сразу | | Когда подходит | унести в автоматизацию или CI, передать коллеге | работа руками и агентом на своей машине | Разница не только в удобстве. Токен из интерфейса вы держите в руках: он бессрочный, его можно скопировать в чужую систему или передать другому сотруднику — вместе со своими правами. Токен входа через CLI короткоживущий и привязан к машине, где выполнен вход, поэтому переносить его бессмысленно. @@ -45,6 +45,10 @@ > [Скоупы](#skoupy) определяют только **какие методы** можно вызывать — расширить круг данных за пределы границ типа токена они не могут. +### Токен по авторизации + +Персональный токен, который сотрудник выдал боту на экране согласия. Действует от имени сотрудника и видит то же, что он, а хранится в сервисе бота — по токену на каждого сотрудника. Права берутся из настроек бота и дополнительно ограничены ролью сотрудника, а отозвать доступ сотрудник может в любой момент. Подходит ботам, которым нужны данные самого сотрудника: его задачи, его чаты. Подробнее — в разделе [Авторизация от имени сотрудника](/guides/oauth/overview). + ### Какой токен выбрать Выберите тип по задаче, которую решает интеграция: @@ -55,34 +59,33 @@ | Скрипт или утилита от вашего имени, личная автоматизация, разовая выгрузка данных | Персональный | [Создание персонального токена](#sozdanie-personalnogo-tokena) | | Чат-бот, уведомления из внешних систем, обработка вебхуков, интерактивные формы | Бот | [Боты](/guides/bots/overview) | | Агент или headless-интеграция без участия сотрудника (CI, сервер, облачный воркер) | Бот | [Агенты и headless-интеграции](#agenty-i-headless-integratsii) | +| Бот, которому нужны данные сотрудника: его задачи, его чаты | По авторизации | [Авторизация от имени сотрудника](/guides/oauth/overview) | ## Кто может создавать токены -Владелец пространства может ограничить, кто может создавать токены и работать с API. Настройки находятся в разделе **Настройки пространства**: +Владелец или администратор пространства может ограничить, кто может создавать токены и получать доступ к API. Настройки находятся в разделе **Настройки пространства**: -- **Кто может создавать интеграции** *(токены ботов)* — «Только администраторы» или «Администраторы и сотрудники» -- **Кто может работать с API** *(персональные токены)* — «Только администраторы» (сотрудники не смогут создавать и использовать персональные токены) или «Все сотрудники» +- **Кто может создавать интеграции** *(боты и их токены)* — «Только администраторы» или «Администраторы и сотрудники». По умолчанию — «Администраторы и сотрудники». +- **Кто может создавать персональные токены** — «Только администраторы» или «Все сотрудники». По умолчанию — «Только администраторы»: сотрудники не могут создавать персональные токены, входить в CLI и выдавать доступ ботам на экране согласия. Настройка закрывает только новый доступ: персональные токены, входы в CLI и доступы ботов, выданные до её смены, продолжают работать. Свои персональные токены и входы в CLI сотрудник и после смены настройки видит на странице **API** и может отозвать, а новые создать не может. ![Настройки доступа к API](/images/authorization/token_access.webp) *Настройки доступа к API* -> **Внимание:** Гости и мульти-гости не могут создавать токены любого типа вне зависимости от настроек пространства. +> **Внимание:** Гости не могут создавать токены любого типа вне зависимости от настроек пространства. Мульти-гость создаёт персональные токены, входит в CLI и авторизует ботов на тех же условиях, что и сотрудник, а ботов и их токенов не создаёт. Что он видит через API — в разделе [Права и роли](/guides/permissions#multi-gost-v-api). ## Создание персонального токена -Создать персональный токен можно в разделе **Автоматизации** > **API**. +Персональные токены создаются на странице **Интеграции** > **API**. На ней указан ваш `user_id` и собраны три списка: персональные токены, токены CLI и авторизации. -На странице отображается список персональных токенов: название, дата создания и дата последнего использования. +![Страница «API» в разделе «Интеграции»: user_id и список персональных токенов](/images/authorization/user_tokens_list.webp) -![Список токенов](/images/authorization/user_tokens_list.webp) +*Страница «API»* -*Список токенов* - -Нажмите **«Создать новый токен»** — откроется диалог, в котором нужно задать название токена и выбрать разрешения (скоупы). +Нажмите **Создать токен** — откроется диалог, в котором нужно задать название токена и выбрать разрешения (скоупы). ![Создание API токена](/images/authorization/create_user_token_modal.webp) @@ -92,14 +95,23 @@ > **Внимание:** Токен показывается только один раз сразу после создания. Скопируйте и сохраните его в надёжном месте — после закрытия диалога восстановить его будет невозможно. +В списке у каждого токена видны дата создания и последнего использования. Меню токена позволяет посмотреть выданные разрешения, изменить название и разрешения или удалить токен. Если токеном пользовались недавно, диалог удаления предупредит об этом: всё, что на нём работает, сломается сразу. + +### Токены CLI и авторизации + +Ниже на той же странице — доступы, которые вы выдали без ручного создания токена: + +- **Токены CLI** — по строке на каждое устройство, где выполнен `pachca auth login`: имя устройства, время входа и последнего вызова. Токены продлеваются сами, а права ограничены вашей ролью. **Отозвать** завершает вход на выбранном устройстве, остальные входы продолжают работать. Подробнее — в разделе [CLI: авторизация](/guides/cli/authentication). +- **Авторизации** — боты, которым вы разрешили действовать от вашего имени на экране согласия. Для каждого видно, когда он подключён и когда использовался, и какие разрешения выданы. **Отозвать доступ** сразу отключает все токены этого бота, выданные вам. + ## Получение токена бота Бот виден в пространстве как отдельный участник со своим именем и аватаром. Получить его `access_token` можно двумя способами: -- **В интерфейсе** — во вкладке **API** в настройках бота. -- **Через API** — методом [Новый бот](/api/bots/create): он создаёт бота и сразу возвращает `access_token`. Сохраните токен из ответа: посмотреть его повторно можно только в интерфейсе, а перевыпустить — методом [Ротация токена бота](/api/bots/recreate-token). +- **В интерфейсе** — на вкладке **API** в карточке бота: кнопка **Создать токен**, название и права. Токенов у бота может быть несколько, значение каждого показывается один раз. +- **Через API** — методом [Новый бот](/api/bots/create): он создаёт бота и сразу возвращает `access_token`. Сохраните токен из ответа: повторно значение не показывается, а перевыпустить токен можно методом [Ротация токена бота](/api/bots/recreate-token) или кнопкой **Перевыпустить** в карточке бота. Ещё токены выпускает метод [Новый токен бота](/api/bots/create-token), у каждого своё имя и права. -Подробнее о создании и настройке бота — в разделе [Боты](/guides/bots/overview). +Несколько токенов у одного бота, их права, перевыпуск и что делать при утечке — в разделе [Токены бота](/guides/bots/tokens). ### Методы, требующие токен бота @@ -110,7 +122,7 @@ - [Unfurl (разворачивание ссылок)](/api/messages/unfurl) — создание предпросмотров ссылок в сообщениях - [Открытие представления](/api/views/open) — открытие модального окна с формой для пользователя -Также при отправке сообщений ([Новое сообщение](/api/messages/create), [Новый тред](/api/threads/add)) поля `icon_url` и `name` для кастомного аватара и имени отправителя работают только с токеном бота. +Также только с токеном бота работают поля `display_name` и `display_avatar_url` — своё имя и аватар отправителя у отдельного сообщения — в методах [Новое сообщение](/api/messages/create) и [Редактирование сообщения](/api/messages/update). С другим токеном запрос с ними вернёт `403`. Подробнее — в разделе [Подмена имени и аватара отправителя](/guides/bots/overview#podmena-imeni-i-avatara-otpravitelya). ## Заголовок авторизации @@ -131,25 +143,26 @@ Authorization: Bearer YOUR_ACCESS_TOKEN Скоупы определяют, к каким методам API имеет доступ токен. Разные типы токенов получают скоупы по-разному: - **Персональный токен** — вы выбираете скоупы вручную при создании и можете изменить их позже в настройках токена. Токен получит только запрошенные разрешения. -- **Токен бота** — скоупы можно выбрать при создании или редактировании бота (параметр `scopes` в методах [Новый бот](/api/bots/create) и [Редактирование бота](/api/bots/update)). Если скоупы не указаны, бот получает набор по умолчанию. +- **Токен бота** — права задаются на каждый токен при его создании и редактировании на вкладке **API** карточки бота. Через API — в методах [Новый токен бота](/api/bots/create-token) и [Изменение токена бота](/api/bots/update-token), а права основного токена — параметром `scopes` в методах [Новый бот](/api/bots/create) и [Редактирование бота](/api/bots/update). Если скоупы основного токена не указаны, бот получает набор по умолчанию. Какие права можно выдать боту, отдаёт [Каталог прав бота](/api/bots/list-scopes). Боту доступны и собственные скоупы самоуправления, недоступные персональным токенам: `bot_self:webhook:write` — бот сам меняет `URL` своего исходящего вебхука методом [Саморегистрация вебхука бота](/api/bots/update-webhook), и `bot_self:write` — самостоятельное управление настройками бота. -Бывает и наоборот: `bots:read` и `bots:write` для управления ботами, `drafts:read` и `drafts:write` для черновиков и отложенных сообщений выдаются только персональным токенам. Роль здесь ни при чём — эти скоупы есть у любого негостевого сотрудника, но токену бота их не получить, и с ним метод отвечает `403`. +Бывает и наоборот: `bots:read` и `bots:write` для управления ботами, `drafts:read` и `drafts:write` для черновиков и отложенных сообщений выдаются только персональным токенам. Скоупы ботов есть у Владельца, Администраторов и Сотрудников, скоупы черновиков — ещё и у мульти-гостя, а токену бота их не получить: с ним метод отвечает `403`. Проверить скоупы текущего токена можно методом [Информация о токене](/api/oauth/token-info). ### Доступные скоупы -При создании персонального токена в интерфейсе Пачки отображаются только те скоупы, которые доступны вашей роли. Токены ботов получают скоупы автоматически. +При создании персонального токена в интерфейсе Пачки отображаются только те скоупы, которые доступны вашей роли. Токену бота права выбираются при создании в его карточке, а через API — параметром `scopes` при выпуске токена. | Скоуп | Описание | Роли | |-------|----------|------| | `chats:read` | Просмотр чатов и списка чатов | Все | -| `chats:create` | Создание новых чатов | Все | +| `chats:create` | Создание новых чатов | Владелец, Администратор, Сотрудник, Бот | | `chats:update` | Изменение настроек чата | Все | +| `chats:mark_unread` | Отметка чатов непрочитанными | Все | | `chats:archive` | Архивация и разархивация чатов | Все | -| `chats:leave` | Выход из чатов | Все | +| `chats:leave` | Выход из чатов | Владелец, Администратор, Сотрудник, Бот | | `chat_members:read` | Просмотр участников чата | Все | | `chat_members:write` | Добавление, изменение и удаление участников чата | Все | | `chat_exports:read` | Скачивание экспортов чата | Владелец | @@ -163,7 +176,7 @@ Authorization: Bearer YOUR_ACCESS_TOKEN | `pins:write` | Закрепление и открепление сообщений | Все | | `threads:read` | Просмотр тредов (комментариев) | Все | | `threads:create` | Создание тредов (комментариев) | Все | -| `link_previews:write` | Unfurl (разворачивание ссылок) | Все | +| `link_previews:write` | Unfurl (разворачивание ссылок) | Владелец, Администратор, Сотрудник, Бот | | `users:read` | Просмотр информации о сотрудниках и списка сотрудников | Все | | `users:create` | Создание новых сотрудников | Владелец, Администратор | | `users:update` | Редактирование данных сотрудника | Владелец, Администратор | @@ -190,18 +203,18 @@ Authorization: Bearer YOUR_ACCESS_TOKEN | `tasks:update` | Изменение задачи | Все | | `tasks:delete` | Удаление задачи | Все | | `files:read` | Скачивание файлов | Все | -| `files:write` | Загрузка файлов | Все | +| `files:write` | Загрузка файлов | Владелец, Администратор, Сотрудник, Бот | | `uploads:write` | Получение данных для загрузки файлов | Все | | `views:write` | Открытие форм (представлений) | Все | -| `webhooks:read` | Просмотр вебхуков | Все | -| `webhooks:write` | Создание и управление вебхуками | Все | -| `webhooks:events:read` | Просмотр лога вебхуков | Все | -| `webhooks:events:delete` | Удаление записи в логе вебхука | Все | +| `webhooks:read` | Просмотр вебхуков | Владелец, Администратор, Сотрудник, Бот | +| `webhooks:write` | Создание и управление вебхуками | Владелец, Администратор, Сотрудник, Бот | +| `webhooks:events:read` | Просмотр лога вебхуков | Владелец, Администратор, Сотрудник, Бот | +| `webhooks:events:delete` | Удаление записи в логе вебхука | Владелец, Администратор, Сотрудник, Бот | | `search:users` | Поиск сотрудников | Все | | `search:chats` | Поиск чатов | Все | | `search:messages` | Поиск сообщений | Все | -| `drafts:read` | Просмотр черновиков и отложенных сообщений | Владелец, Администратор, Сотрудник | -| `drafts:write` | Создание, изменение и удаление черновиков и отложенных сообщений | Владелец, Администратор, Сотрудник | +| `drafts:read` | Просмотр черновиков и отложенных сообщений | Владелец, Администратор, Сотрудник, Мульти-гость | +| `drafts:write` | Создание, изменение и удаление черновиков и отложенных сообщений | Владелец, Администратор, Сотрудник, Мульти-гость | ## Ошибки авторизации diff --git a/apps/docs/public/api/bots/create-token.md b/apps/docs/public/api/bots/create-token.md new file mode 100644 index 000000000..8a33733db --- /dev/null +++ b/apps/docs/public/api/bots/create-token.md @@ -0,0 +1,247 @@ +> Расположение: Методы API → Боты и Webhook +> Краткое содержание: Выпускает боту ещё один токен со своим именем и правами +> Это Markdown-версия конкретной страницы. Для контекста за её пределами (правила API, полный перечень методов, авторизация) ОБЯЗАТЕЛЬНО открой [llms.txt](https://dev.pachca.com/llms.txt) перед ответом — это сэкономит токены и предотвратит неполный ответ. + +# Новый токен бота + +**Метод**: `POST` + +**Путь**: `/bots/{id}/tokens` + +> **Скоуп:** `bots:write` + +Выпускает боту ещё один токен со своим именем и правами. Токенов у бота может быть несколько: например, отдельный на каждый сервис, чтобы отзывать их по одному. + +Значение токена приходит в ответе один раз — сохраните его сразу. Токен бессрочный и работает, пока его не удалят. + +Права выбирают из тех, что можно выдать боту: их перечисляет [Каталог прав бота](/api/bots/list-scopes). На право не из каталога метод отвечает `400`. Без `scopes` токен выпускается без прав. + +Работать с токенами бота могут только его создатель и администратор пространства, если настройки бота открывают администраторам доступ к редактированию. Владельцу чата с ботом метод отвечает `403`, даже когда остальные настройки бота ему открыты. + +## Параметры + +### Path параметры + +- `id: integer, int32` (required) — Идентификатор бота + + +## Тело запроса + +**Обязательно** + +Формат: `application/json` + +### Схема + +- `name: string` (required, max length: 255) — Имя токена: по нему токены различают в списке. Пример: `"Сервер уведомлений"` +- `scopes: array of string` — Права токена. Доступны только права, которые можно выдать боту. Если не передать, токен выпускается без прав. Пример: `["messages:create","chats:read"]` + +### Пример + +```json +{ + "name": "Сервер уведомлений", + "scopes": [ + "messages:create", + "chats:read" + ] +} +``` + +## Пример запроса + +```bash +curl "https://api.pachca.com/api/shared/v1/bots/1738816/tokens" \ + -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ + -H "Content-Type: application/json" \ + -d '{ + "name": "Сервер уведомлений", + "scopes": [ + "messages:create", + "chats:read" + ] +}' +``` + +## Ответы + +### 201: The request has succeeded and a new resource has been created as a result. + +**Схема ответа:** + +- `data: object` (required) — Токен бота + - `id: integer, int64` (required) — Идентификатор токена. Пример: `4827` + - `token: string` (required) — Токен в маскированном виде (видны первые 8 и последние 4 символа). Полное значение приходит один раз: при выпуске и перевыпуске токена. Пример: `"cH5kR9mN...x7Qp"` + - `name: string` (required, nullable) — Имя токена. `null` у токена, выпущенного без имени. Пример: `"Сервер уведомлений"` + - `user_id: integer, int64` (required) — Идентификатор бота, которому принадлежит токен. Пример: `1738816` + - `scopes: array of string` (required) — Права токена. Пример: `["messages:create","chats:read"]` + - `created_at: date-time` (required) — Дата и время выпуска токена (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2025-01-15T10:30:00.000Z"` + - `revoked_at: date-time` (required, nullable) — Дата отзыва токена. Всегда `null`: отозванные токены в ответ не попадают. Пример: `null` + - `expires_in: integer, int32` (required, nullable) — Время жизни токена в секундах. У токенов бота `null`: они бессрочные. Пример: `null` + - `last_used_at: date-time` (required, nullable) — Дата последнего использования токена. `null`, пока по токену не было ни одного запроса. Обновляется не чаще раза в час, поэтому может отставать. Пример: `"2025-02-24T14:20:00.000Z"` + - `authorized_at: date-time` (required, nullable) — Дата авторизации. У токенов бота `null`. Пример: `null` + +**Пример ответа:** + +```json +{ + "data": { + "id": 4827, + "token": "bm90X2FfcmVhbF90b2tlbg", + "name": "Сервер уведомлений", + "user_id": 1738816, + "scopes": [ + "messages:create", + "chats:read" + ], + "created_at": "2025-01-15T10:30:00.000Z", + "revoked_at": null, + "expires_in": null, + "last_used_at": null, + "authorized_at": null + } +} +``` + +### 400: The server could not understand the request due to invalid syntax. + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + +### 401: Access is unauthorized. + +**Схема ответа при ошибке:** + +- `error: string` (required) — Код ошибки. Пример: `"invalid_token"` +- `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` + +**Пример ответа:** + +```json +{ + "error": "invalid_token", + "error_description": "Access token is missing" +} +``` + +### 402: Client error + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + +### 403: Access is forbidden. + +**Схема ответа при ошибке:** + +**anyOf** - один из вариантов: + +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) + - `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` +- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403) + - `error: string` (required) — Код ошибки. Пример: `"invalid_token"` + - `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + +### 404: The server cannot find the requested resource. + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + diff --git a/apps/docs/public/api/bots/create.md b/apps/docs/public/api/bots/create.md index 44fd282d4..ddbcfcdd6 100644 --- a/apps/docs/public/api/bots/create.md +++ b/apps/docs/public/api/bots/create.md @@ -1,5 +1,5 @@ > Расположение: Методы API → Боты и Webhook -> Краткое содержание: Создаёт бота в пространстве и сразу отдаёт его accesstoken +> Краткое содержание: Создаёт бота в пространстве > Это Markdown-версия конкретной страницы. Для контекста за её пределами (правила API, полный перечень методов, авторизация) ОБЯЗАТЕЛЬНО открой [llms.txt](https://dev.pachca.com/llms.txt) перед ответом — это сэкономит токены и предотвратит неполный ответ. # Новый бот @@ -10,13 +10,17 @@ > **Скоуп:** `bots:write` -Создаёт бота в пространстве и сразу отдаёт его `access_token`. Сохраните токен при создании: тот же самый повторно не показывают, останется перевыпустить его методом [Ротация токена бота](/api/bots/recreate-token). +Создаёт бота в пространстве. По умолчанию бот получает входящий вебхук в своём формате и сразу отдаёт свой `access_token`. Сохраните токен при создании: тот же самый повторно не показывают, останется перевыпустить его методом [Ротация токена бота](/api/bots/recreate-token). + +С `empty: true` создаётся пустой бот, как в интерфейсе: только имя и ник, без токена и без входящего вебхука. Токены ему выпускают методом [Новый токен бота](/api/bots/create-token), а входящий вебхук включают полем `kind` в объекте `webhook`. Созданный бот ещё никуда не пишет. В беседу и канал он пишет только как участник, а добавляют его как сотрудника — методом [Добавление пользователей](/api/members/add), передав `id` бота. В канале бот получает роль редактора. Личные сообщения и треды в открытых чатах членства не требуют. Входящий вебхук бота отправляет сообщение сразу во все беседы и каналы, где бот состоит, поэтому набор его чатов и решает, куда оно попадёт. Токен для этого не нужен, достаточно адреса вебхука. Чтобы написать в один конкретный чат, берите метод [Новое сообщение](/api/messages/create) — вот там токен уже нужен. -Ник обязан заканчиваться на `_bot` и быть свободным в пространстве. Ограничение `single_chat` задаётся только здесь: при редактировании бота оно уже не меняется. +Авторизацию от имени сотрудника можно включить сразу, передав `oauth_client`, а страницу в витрине заполнить в `promo`. У серверного клиента секрет приходит в `client_secret` один раз. Подробнее — в разделе [Настройка авторизации](/guides/oauth/setup). + +Ник обязан заканчиваться на `_bot` и быть свободным в пространстве. ## Тело запроса @@ -26,6 +30,7 @@ ### Схема +- `empty: boolean` (default: false) — Создать пустого бота: без токена и без входящего вебхука. Без этого поля бот создаётся с входящим вебхуком в своём формате, а его токен приходит в `access_token`. Пример: `false` - `webhook: object` (required) — Объект параметров вебхука создаваемого бота - `name: string` (required, max length: 255) — Имя бота. Пример: `"Бот задач"` - `nickname: string` (max length: 255) — Никнейм бота. Должен заканчиваться на `_bot`. Пример: `"tasks_bot"` @@ -43,9 +48,20 @@ - `ignore_self_messages: boolean` (default: false) — Игнорировать входящие сообщения, отправленные самим ботом. Пример: `false` - `events_history_enabled: boolean` (default: false) — Сохранять историю событий бота для последующего получения через метод истории событий. Пример: `false` - `who_can_add: string` — Кто может добавлять бота в чаты - Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Любой пользователь, в том числе гости + Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей - `can_edit: array of string` — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `["admin"]` - - `single_chat: boolean` (default: false) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Задаётся только при создании, при редактировании не меняется. Пример: `false` + - `single_chat: boolean` (default: false) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false` + - `kind: string` — Источник входящего вебхука. Без `empty` по умолчанию `simple`, а у пустого бота входящий вебхук включается только этим полем. + Значения: `simple` — Свой формат: сообщение собирается из тела запроса по шаблону бота, `gitlab` — GitLab: Пачка сама разбирает запрос и собирает сообщение, `grafana` — Grafana: Пачка сама разбирает запрос и собирает сообщение + - `unfurl_domains: array of string` — Домены, ссылки на которые бот разворачивает, не больше 5. Работают вместе с событием `message_link_shared`. Пример: `["example.com"]` +- `oauth_client: object` — Включить авторизацию от имени сотрудника сразу при создании + - `confidential: boolean` — Где хранится секрет: `true` — серверное приложение хранит `client_secret` и обменивает код у себя, `false` — приложение без секрета (браузер, мобильное, CLI) обменивает код по PKCE. Если не передать, значение не меняется, а у нового клиента — `true`. Пример: `true` + - `redirect_uris: array of string` — Адреса возврата после согласия. HTTPS обязателен, кроме адресов на этом же компьютере (`localhost`, `127.0.0.1`). Адрес в ссылке авторизации должен совпадать с одним из списка точно, у `localhost` и `127.0.0.1` порт не сравнивается. При включении передайте хотя бы один адрес. Список заменяется целиком. Пример: `["https://example.com/oauth/callback"]` + - `scopes: array of string` — Права, которые бот запрашивает у сотрудника на экране согласия. Доступны только права, которые можно выдать самому боту. Если при включении поле не передать, запрашиваются все права бота. Список заменяется целиком. Пример: `["messages:read","messages:create"]` +- `promo: object` — Страница бота в витрине. Задаётся только вместе с `oauth_client`: без авторизации страницы у бота нет. + - `description: string` — Описание: чем бот занимается и зачем его подключать. Без описания бота нельзя опубликовать. Пример: `"Собирает сводку по задачам Jira и присылает её в чат"` + - `published: boolean` — Опубликовать бота в витрине: он появится карточкой на вкладке «Обзор». Публикация требует описания. Пример: `true` + - `promo_images: array of string` — Скриншоты страницы бота, не больше 5: ключи загруженных изображений (`key` из [Получение подписи, ключа и других параметров](/api/files/uploads)). Список заменяется целиком, порядок сохраняется. Пример: `["attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"]` ### Пример @@ -65,6 +81,16 @@ "scopes": [ "messages:create" ] + }, + "oauth_client": { + "confidential": true, + "redirect_uris": [ + "https://example.com/oauth/callback" + ], + "scopes": [ + "messages:read", + "messages:create" + ] } } ``` @@ -90,6 +116,16 @@ curl "https://api.pachca.com/api/shared/v1/bots" \ "scopes": [ "messages:create" ] + }, + "oauth_client": { + "confidential": true, + "redirect_uris": [ + "https://example.com/oauth/callback" + ], + "scopes": [ + "messages:read", + "messages:create" + ] } }' ``` @@ -102,6 +138,13 @@ curl "https://api.pachca.com/api/shared/v1/bots" \ - `data: object` (required) — Параметры созданного бота - `id: integer, int32` (required) — Идентификатор бота (совпадает с `user_id` бота). Пример: `1738816` + - `name: string` (required) — Имя бота. Пример: `"Бот задач"` + - `nickname: string` (required) — Никнейм бота. Пример: `"tasks_bot"` + - `avatar_url: string` (required, nullable) — Ссылка на аватар бота. `null`, если аватар не задан. Пример: `"https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg"` + - `creator_id: integer, int32` (required, nullable) — Идентификатор сотрудника, создавшего бота. `null`, если создатель не записан. Пример: `12` + - `created_at: date-time` (required) — Дата и время создания бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2025-05-15T14:30:00.000Z"` + - `authorized_users_count: integer, int32` (required) — Сколько сотрудников авторизовали бота. Пример: `3` + - `last_used_at: date-time` (required, nullable) — Дата и время, когда бот последний раз работал (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ: запрос на входящий вебхук или вызов API любым токеном бота, включая токены сотрудников. `null`, если такого не было. Использование токена учитывается не чаще раза в час. Пример: `"2025-05-15T14:30:00.000Z"` - `webhook: object` (required) — Объект параметров вебхука - `name: string` (required, max length: 255) — Имя бота. Пример: `"Бот задач"` - `nickname: string` (required, max length: 255) — Никнейм бота. Пример: `"tasks_bot"` @@ -121,8 +164,30 @@ curl "https://api.pachca.com/api/shared/v1/bots" \ - `single_chat: boolean` (required) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false` - `can_edit: array of string` (required) — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `["admin"]` - `who_can_add: string` (required) — Кто может добавлять бота в чаты - Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Любой пользователь, в том числе гости - - `access_token: string` (required) — Токен доступа бота. Возвращается при создании бота и при ротации токена. Пример: `"bm90X2FfcmVhbF90b2tlbg"` + Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей + - `kind: string` (required) — Источник входящего вебхука. `null`, если входящий вебхук у бота выключен. + Значения: `simple` — Свой формат: сообщение собирается из тела запроса по шаблону бота, `gitlab` — GitLab: Пачка сама разбирает запрос и собирает сообщение, `grafana` — Grafana: Пачка сама разбирает запрос и собирает сообщение + - `unfurl_domains: array of string` (required) — Домены, ссылки на которые бот разворачивает. Пример: `["example.com"]` + - `last_request_at: date-time` (required, nullable) — Дата и время последнего запроса на входящий вебхук бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если запросов не было. Пример: `"2025-05-15T14:30:00.000Z"` + - `oauth_client_enabled: boolean` (required) — Включена ли у бота авторизация от имени сотрудника. Пример: `true` + - `oauth_client: object` (required) — Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией, поэтому включена ли она, смотрите в `oauth_client_enabled`. У бота без токенов может прийти `null`. + - `client_id: string` (required) — Идентификатор клиента для ссылки авторизации. Пример: `"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY"` + - `client_secret_preview: string` (required) — Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета. Пример: `"cH5kR9mN...x7Qp"` + - `confidential: boolean` (required) — Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE. Пример: `true` + - `redirect_uris: array of string` (required) — Адреса возврата после согласия. Пример: `["https://example.com/oauth/callback"]` + - `scopes: array of string` (required) — Права, которые бот запрашивает у сотрудника на экране согласия. Пример: `["messages:read","messages:create"]` + - `promo: object` (required) — Страница бота в витрине. `null`, если авторизация у бота выключена. + - `description: string` (required, nullable) — Описание бота. `null`, если не задано. Пример: `"Собирает сводку по задачам Jira и присылает её в чат"` + - `published: boolean` (required) — Опубликован ли бот в витрине. Пример: `true` + - `promo_images: array of object` (required) — Скриншоты страницы бота + - `key: string` (required) — Ключ изображения. Пример: `"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"` + - `url: string` (required) — Ссылка на изображение. Пример: `"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"` + - `permissions: object` (required) — Что вы можете делать с этим ботом + - `update_oauth_client: boolean` (required) — Менять авторизацию от имени сотрудника, страницу в витрине и имя бота. Пример: `true` + - `recreate_token: boolean` (required) — Выпускать, менять и удалять токены бота и обновлять секрет клиента. Пример: `true` + - `destroy: boolean` (required) — Удалить бота. Пример: `true` + - `client_secret: string` — Секрет клиента. Приходит один раз: при включении серверного клиента, при переходе на него и при ротации секрета. Пример: `"dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA"` + - `access_token: string` — Токен доступа бота. Возвращается при создании бота и при ротации токена. Не приходит, если бот создан с `empty: true`. Пример: `"bm90X2FfcmVhbF90b2tlbg"` **Пример ответа:** @@ -130,6 +195,13 @@ curl "https://api.pachca.com/api/shared/v1/bots" \ { "data": { "id": 1738816, + "name": "Бот задач", + "nickname": "tasks_bot", + "avatar_url": null, + "creator_id": 12, + "created_at": "2025-05-15T14:30:00.000Z", + "authorized_users_count": 0, + "last_used_at": null, "webhook": { "name": "Бот задач", "nickname": "tasks_bot", @@ -154,8 +226,35 @@ curl "https://api.pachca.com/api/shared/v1/bots" \ "can_edit": [ "admin" ], - "who_can_add": "creator" + "who_can_add": "creator", + "kind": "simple", + "unfurl_domains": [], + "last_request_at": null + }, + "oauth_client_enabled": true, + "oauth_client": { + "client_id": "aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY", + "client_secret_preview": "dGhpc19p...ZWNy", + "confidential": true, + "redirect_uris": [ + "https://example.com/oauth/callback" + ], + "scopes": [ + "messages:read", + "messages:create" + ] + }, + "promo": { + "description": null, + "published": false, + "promo_images": [] + }, + "permissions": { + "update_oauth_client": true, + "recreate_token": true, + "destroy": true }, + "client_secret": "dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA", "access_token": "bm90X2FfcmVhbF90b2tlbg" } } @@ -170,7 +269,7 @@ curl "https://api.pachca.com/api/shared/v1/bots" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -216,7 +315,7 @@ curl "https://api.pachca.com/api/shared/v1/bots" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/bots/delete-token.md b/apps/docs/public/api/bots/delete-token.md new file mode 100644 index 000000000..59fe50c22 --- /dev/null +++ b/apps/docs/public/api/bots/delete-token.md @@ -0,0 +1,147 @@ +> Расположение: Методы API → Боты и Webhook +> Краткое содержание: Удаляет токен: запросы с ним сразу перестают проходить +> Это Markdown-версия конкретной страницы. Для контекста за её пределами (правила API, полный перечень методов, авторизация) ОБЯЗАТЕЛЬНО открой [llms.txt](https://dev.pachca.com/llms.txt) перед ответом — это сэкономит токены и предотвратит неполный ответ. + +# Удаление токена бота + +**Метод**: `DELETE` + +**Путь**: `/bots/{id}/tokens/{token_id}` + +> **Скоуп:** `bots:write` + +Удаляет токен: запросы с ним сразу перестают проходить. Остальные токены бота продолжают работать. + +Работать с токенами бота могут только его создатель и администратор пространства, если настройки бота открывают администраторам доступ к редактированию. Владельцу чата с ботом метод отвечает `403`, даже когда остальные настройки бота ему открыты. + +## Параметры + +### Path параметры + +- `id: integer, int32` (required) — Идентификатор бота +- `token_id: integer, int64` (required) — Идентификатор токена + + +## Пример запроса + +```bash +curl -X DELETE "https://api.pachca.com/api/shared/v1/bots/1738816/tokens/4827" \ + -H "Authorization: Bearer YOUR_ACCESS_TOKEN" +``` + +## Ответы + +### 204: There is no content to send for this request, but the headers may be useful. + +### 401: Access is unauthorized. + +**Схема ответа при ошибке:** + +- `error: string` (required) — Код ошибки. Пример: `"invalid_token"` +- `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` + +**Пример ответа:** + +```json +{ + "error": "invalid_token", + "error_description": "Access token is missing" +} +``` + +### 402: Client error + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + +### 403: Access is forbidden. + +**Схема ответа при ошибке:** + +**anyOf** - один из вариантов: + +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) + - `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` +- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403) + - `error: string` (required) — Код ошибки. Пример: `"invalid_token"` + - `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + +### 404: The server cannot find the requested resource. + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + diff --git a/apps/docs/public/api/bots/delete.md b/apps/docs/public/api/bots/delete.md index 142a7abc4..569866cd7 100644 --- a/apps/docs/public/api/bots/delete.md +++ b/apps/docs/public/api/bots/delete.md @@ -10,7 +10,7 @@ > **Скоуп:** `bots:write` -Убирает бота из пространства насовсем. Прежний `access_token` бота сразу инвалидируется, бот исключается из всех чатов, его исходящий вебхук удаляется. +Убирает бота из пространства насовсем. Все токены бота сразу перестают работать, как и авторизации, выданные ему сотрудниками. Бот исключается из всех чатов, его вебхуки удаляются, страница в витрине тоже. Удаление доступно создателю бота, а также администратору пространства, если настройки бота открывают администраторам доступ к редактированию. Владельцы и администраторы чатов удалять бота не могут, даже если им разрешено его редактировать. @@ -57,7 +57,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/bots/1738816" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -103,7 +103,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/bots/1738816" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/bots/get.md b/apps/docs/public/api/bots/get.md index 6c407c95c..fe106e2d2 100644 --- a/apps/docs/public/api/bots/get.md +++ b/apps/docs/public/api/bots/get.md @@ -1,5 +1,5 @@ > Расположение: Методы API → Боты и Webhook -> Краткое содержание: Метод отдаёт только тех ботов, которых вызывающий вправе настраивать: своих, а также чужих, если настройки бота открывают доступ администратору пространства или владельцу чата, где бот состоит +> Краткое содержание: Метод отдаёт только тех ботов, которых вызывающий вправе настраивать: своих, а также чужих, если настройки бота открывают доступ администраторам пространства или руководителям чатов, где бот состоит > Это Markdown-версия конкретной страницы. Для контекста за её пределами (правила API, полный перечень методов, авторизация) ОБЯЗАТЕЛЬНО открой [llms.txt](https://dev.pachca.com/llms.txt) перед ответом — это сэкономит токены и предотвратит неполный ответ. # Информация о боте @@ -10,9 +10,9 @@ > **Скоуп:** `bots:read` -Настройки бота. Токен в ответе не приходит — его показывают один раз при создании бота и при вызове метода [Ротация токена бота](/api/bots/recreate-token). +Настройки бота. Токен в ответе не приходит — его показывают один раз при создании бота и при вызове метода [Ротация токена бота](/api/bots/recreate-token). Токены бота отдаёт [Список токенов бота](/api/bots/list-tokens). -Метод отдаёт только тех ботов, которых вызывающий вправе настраивать: своих, а также чужих, если настройки бота открывают доступ администратору пространства или владельцу чата, где бот состоит. На остальных метод ответит `403`. +Метод отдаёт только тех ботов, которых вызывающий вправе настраивать: своих, а также чужих, если настройки бота открывают доступ администраторам пространства или руководителям чатов, где бот состоит. На остальных метод ответит `403`. Перечень всех ботов пространства, включая чужих, доступен владельцу на тарифе «Корпорация» — [Список ботов пространства](/api/bots/list-company). @@ -38,6 +38,13 @@ curl "https://api.pachca.com/api/shared/v1/bots/1738816" \ - `data: object` (required) — Параметры бота - `id: integer, int32` (required) — Идентификатор бота (совпадает с `user_id` бота). Пример: `1738816` + - `name: string` (required) — Имя бота. Пример: `"Бот задач"` + - `nickname: string` (required) — Никнейм бота. Пример: `"tasks_bot"` + - `avatar_url: string` (required, nullable) — Ссылка на аватар бота. `null`, если аватар не задан. Пример: `"https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg"` + - `creator_id: integer, int32` (required, nullable) — Идентификатор сотрудника, создавшего бота. `null`, если создатель не записан. Пример: `12` + - `created_at: date-time` (required) — Дата и время создания бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2025-05-15T14:30:00.000Z"` + - `authorized_users_count: integer, int32` (required) — Сколько сотрудников авторизовали бота. Пример: `3` + - `last_used_at: date-time` (required, nullable) — Дата и время, когда бот последний раз работал (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ: запрос на входящий вебхук или вызов API любым токеном бота, включая токены сотрудников. `null`, если такого не было. Использование токена учитывается не чаще раза в час. Пример: `"2025-05-15T14:30:00.000Z"` - `webhook: object` (required) — Объект параметров вебхука - `name: string` (required, max length: 255) — Имя бота. Пример: `"Бот задач"` - `nickname: string` (required, max length: 255) — Никнейм бота. Пример: `"tasks_bot"` @@ -57,7 +64,29 @@ curl "https://api.pachca.com/api/shared/v1/bots/1738816" \ - `single_chat: boolean` (required) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false` - `can_edit: array of string` (required) — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `["admin"]` - `who_can_add: string` (required) — Кто может добавлять бота в чаты - Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Любой пользователь, в том числе гости + Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей + - `kind: string` (required) — Источник входящего вебхука. `null`, если входящий вебхук у бота выключен. + Значения: `simple` — Свой формат: сообщение собирается из тела запроса по шаблону бота, `gitlab` — GitLab: Пачка сама разбирает запрос и собирает сообщение, `grafana` — Grafana: Пачка сама разбирает запрос и собирает сообщение + - `unfurl_domains: array of string` (required) — Домены, ссылки на которые бот разворачивает. Пример: `["example.com"]` + - `last_request_at: date-time` (required, nullable) — Дата и время последнего запроса на входящий вебхук бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если запросов не было. Пример: `"2025-05-15T14:30:00.000Z"` + - `oauth_client_enabled: boolean` (required) — Включена ли у бота авторизация от имени сотрудника. Пример: `true` + - `oauth_client: object` (required) — Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией, поэтому включена ли она, смотрите в `oauth_client_enabled`. У бота без токенов может прийти `null`. + - `client_id: string` (required) — Идентификатор клиента для ссылки авторизации. Пример: `"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY"` + - `client_secret_preview: string` (required) — Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета. Пример: `"cH5kR9mN...x7Qp"` + - `confidential: boolean` (required) — Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE. Пример: `true` + - `redirect_uris: array of string` (required) — Адреса возврата после согласия. Пример: `["https://example.com/oauth/callback"]` + - `scopes: array of string` (required) — Права, которые бот запрашивает у сотрудника на экране согласия. Пример: `["messages:read","messages:create"]` + - `promo: object` (required) — Страница бота в витрине. `null`, если авторизация у бота выключена. + - `description: string` (required, nullable) — Описание бота. `null`, если не задано. Пример: `"Собирает сводку по задачам Jira и присылает её в чат"` + - `published: boolean` (required) — Опубликован ли бот в витрине. Пример: `true` + - `promo_images: array of object` (required) — Скриншоты страницы бота + - `key: string` (required) — Ключ изображения. Пример: `"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"` + - `url: string` (required) — Ссылка на изображение. Пример: `"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"` + - `permissions: object` (required) — Что вы можете делать с этим ботом + - `update_oauth_client: boolean` (required) — Менять авторизацию от имени сотрудника, страницу в витрине и имя бота. Пример: `true` + - `recreate_token: boolean` (required) — Выпускать, менять и удалять токены бота и обновлять секрет клиента. Пример: `true` + - `destroy: boolean` (required) — Удалить бота. Пример: `true` + - `client_secret: string` — Секрет клиента. Приходит один раз: при включении серверного клиента, при переходе на него и при ротации секрета. Пример: `"dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA"` **Пример ответа:** @@ -65,6 +94,13 @@ curl "https://api.pachca.com/api/shared/v1/bots/1738816" \ { "data": { "id": 1738816, + "name": "Бот задач", + "nickname": "tasks_bot", + "avatar_url": null, + "creator_id": 12, + "created_at": "2025-05-15T14:30:00.000Z", + "authorized_users_count": 3, + "last_used_at": "2025-05-20T09:15:00.000Z", "webhook": { "name": "Бот задач", "nickname": "tasks_bot", @@ -89,7 +125,33 @@ curl "https://api.pachca.com/api/shared/v1/bots/1738816" \ "can_edit": [ "admin" ], - "who_can_add": "creator" + "who_can_add": "creator", + "kind": "simple", + "unfurl_domains": [], + "last_request_at": "2025-05-20T09:15:00.000Z" + }, + "oauth_client_enabled": true, + "oauth_client": { + "client_id": "aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY", + "client_secret_preview": "dGhpc19p...ZWNy", + "confidential": true, + "redirect_uris": [ + "https://example.com/oauth/callback" + ], + "scopes": [ + "messages:read", + "messages:create" + ] + }, + "promo": { + "description": "Собирает сводку по задачам и присылает её в чат", + "published": true, + "promo_images": [] + }, + "permissions": { + "update_oauth_client": true, + "recreate_token": true, + "destroy": true } } } @@ -120,7 +182,7 @@ curl "https://api.pachca.com/api/shared/v1/bots/1738816" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -166,7 +228,7 @@ curl "https://api.pachca.com/api/shared/v1/bots/1738816" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/bots/list-company.md b/apps/docs/public/api/bots/list-company.md index 036041418..ecd91e1c6 100644 --- a/apps/docs/public/api/bots/list-company.md +++ b/apps/docs/public/api/bots/list-company.md @@ -41,6 +41,12 @@ curl "https://api.pachca.com/api/shared/v1/company/bots?query=задач&limit=1 - `data: array of object` (required) - `id: integer, int32` (required) — Идентификатор бота (совпадает с `user_id` бота). Пример: `1738816` + - `oauth_client: object` (required) — Параметры авторизации от имени сотрудника. `null` у бота, недоступного вам для редактирования. Может прийти и у бота с выключенной авторизацией, а у бота без токенов может прийти `null`. + - `client_id: string` (required) — Идентификатор клиента для ссылки авторизации. Пример: `"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY"` + - `client_secret_preview: string` (required) — Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета. Пример: `"cH5kR9mN...x7Qp"` + - `confidential: boolean` (required) — Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE. Пример: `true` + - `redirect_uris: array of string` (required) — Адреса возврата после согласия. Пример: `["https://example.com/oauth/callback"]` + - `scopes: array of string` (required) — Права, которые бот запрашивает у сотрудника на экране согласия. Пример: `["messages:read","messages:create"]` - `webhook: object` (required) — Объект параметров вебхука - `name: string` (required, max length: 255) — Имя бота. Пример: `"Бот задач"` - `nickname: string` (required, max length: 255) — Никнейм бота. Пример: `"tasks_bot"` @@ -60,7 +66,7 @@ curl "https://api.pachca.com/api/shared/v1/company/bots?query=задач&limit=1 - `single_chat: boolean` (required, nullable) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false` - `can_edit: array of string` (required, nullable) — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `["admin"]` - `who_can_add: string` (required) — Кто может добавлять бота в чаты - Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Любой пользователь, в том числе гости + Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей - `meta: object` (required) — Метаданные пагинации - `paginate: object` (required) — Вспомогательная информация - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `"eyJxZCO2MiwiZGlyIjomSNYjIn3"` @@ -75,6 +81,18 @@ curl "https://api.pachca.com/api/shared/v1/company/bots?query=задач&limit=1 "data": [ { "id": 1738816, + "oauth_client": { + "client_id": "aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY", + "client_secret_preview": "dGhpc19p...ZWNy", + "confidential": true, + "redirect_uris": [ + "https://example.com/oauth/callback" + ], + "scopes": [ + "messages:read", + "messages:create" + ] + }, "webhook": { "name": "Бот задач", "nickname": "tasks_bot", @@ -104,6 +122,7 @@ curl "https://api.pachca.com/api/shared/v1/company/bots?query=задач&limit=1 }, { "id": 1738817, + "oauth_client": null, "webhook": { "name": "Бот релизов", "nickname": "release_bot", @@ -141,7 +160,7 @@ curl "https://api.pachca.com/api/shared/v1/company/bots?query=задач&limit=1 - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -187,7 +206,7 @@ curl "https://api.pachca.com/api/shared/v1/company/bots?query=задач&limit=1 - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -214,13 +233,13 @@ curl "https://api.pachca.com/api/shared/v1/company/bots?query=задач&limit=1 **anyOf** - один из вариантов: -- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422) +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) - `errors: array of object` (required) — Массив ошибок - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/bots/list-events.md b/apps/docs/public/api/bots/list-events.md index 8be0406d7..494bde9fc 100644 --- a/apps/docs/public/api/bots/list-events.md +++ b/apps/docs/public/api/bots/list-events.md @@ -12,7 +12,7 @@ Журнал событий бота: то же самое, что уходит в исходящий вебхук, но забирается запросом. Метод нужен, когда принимать вебхуки на свой адрес нельзя — обработчик недоступен из интернета, поднимается не всегда или пишется прямо сейчас. -Журнал ведётся, только когда в настройках бота включён пункт «Сохранять историю событий» во вкладке «Исходящий webhook». Адрес вебхука при этом можно не указывать вовсе, а если он указан, событие и уедет на него, и ляжет в журнал. +Журнал ведётся, только когда в настройках бота включён пункт «Сохранять историю событий» на вкладке «Исходящий вебхук». Адрес вебхука при этом можно не указывать вовсе, а если он указан, событие и уедет на него, и ляжет в журнал. Метод работает только с токеном бота: у личного токена своего журнала нет. События отдаются от новых к старым, идентификатор события — строка, а не число. @@ -134,6 +134,12 @@ curl "https://api.pachca.com/api/shared/v1/webhooks/events?limit=1" \ - `domain: string` (required) — Домен ссылки. Пример: `"example.com"` - `skip: boolean` (required) — Признак того, что автор сообщения скрыл превью для этой ссылки. Если `true` — бот не должен создавать превью. Пример: `false` - `user_id: integer, int32` (required) — Идентификатор отправителя сообщения. Пример: `2345` + - `entity_type: string` (required) — Тип сущности, к которой относится сообщение со ссылкой + Значения: `discussion` — Беседа или канал, `thread` — Тред, `user` — Пользователь + - `entity_id: integer, int32` (required, nullable) — Идентификатор сущности: беседы или канала, треда. В личной переписке `null`: бот в ней не участвует, и собеседника ему не раскрывают. Пример: `23438` + - `thread: object` (required) — Тред, в котором отправлено сообщение со ссылкой. `null`, если сообщение отправлено не в треде. + - `message_id: integer, int32` (required, nullable) — Идентификатор сообщения, к которому был создан тред. `null` у треда без сообщения-родителя — такие создаёт [Новый самостоятельный тред](/api/threads/create). Пример: `12345` + - `message_chat_id: integer, int32` (required, nullable) — Идентификатор чата сообщения, к которому был создан тред. `null` у треда без сообщения-родителя. Пример: `67890` - `created_at: date-time` (required) — Дата и время создания сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2024-09-18T19:53:14.000Z"` - `webhook_timestamp: integer, int32` (required) — Дата и время отправки вебхука (UTC+0) в формате UNIX. Пример: `1726685594` - **VideoCallWebhookPayload**: Структура исходящего вебхука о видеозвонке @@ -219,7 +225,7 @@ curl "https://api.pachca.com/api/shared/v1/webhooks/events?limit=1" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -265,7 +271,7 @@ curl "https://api.pachca.com/api/shared/v1/webhooks/events?limit=1" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -311,7 +317,7 @@ curl "https://api.pachca.com/api/shared/v1/webhooks/events?limit=1" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/bots/list-scopes.md b/apps/docs/public/api/bots/list-scopes.md new file mode 100644 index 000000000..2448b8813 --- /dev/null +++ b/apps/docs/public/api/bots/list-scopes.md @@ -0,0 +1,195 @@ +> Расположение: Методы API → Боты и Webhook +> Краткое содержание: Права, которые можно выдать этому боту: его токенам и авторизации от имени сотрудника +> Это Markdown-версия конкретной страницы. Для контекста за её пределами (правила API, полный перечень методов, авторизация) ОБЯЗАТЕЛЬНО открой [llms.txt](https://dev.pachca.com/llms.txt) перед ответом — это сэкономит токены и предотвратит неполный ответ. + +# Каталог прав бота + +**Метод**: `GET` + +**Путь**: `/bots/{id}/scopes` + +> **Скоуп:** `bots:read` + +Права, которые можно выдать этому боту: его токенам и авторизации от имени сотрудника. У каждого права есть описание, категория и готовые наборы, в которые оно входит, как при выборе прав в интерфейсе. + +Каталог доступен тем же, кто видит токены бота: создателю бота, а также администратору пространства, если настройки бота открывают администраторам доступ к редактированию. + +## Параметры + +### Path параметры + +- `id: integer, int32` (required) — Идентификатор бота + + +## Пример запроса + +```bash +curl "https://api.pachca.com/api/shared/v1/bots/1738816/scopes" \ + -H "Authorization: Bearer YOUR_ACCESS_TOKEN" +``` + +## Ответы + +### 200: The request has succeeded. + +**Схема ответа:** + +- `scopes: array of object` (required) — Права, доступные боту + - `id: string` (required) — Право. Пример: `"messages:create"` + - `title: string` (required) — Описание права. Пример: `"Отправка сообщений"` + - `group: string` (required) — Категория права, `id` из `groups`. Пример: `"messages"` + - `preset: array of string` (required) — Наборы, в которые входит право, `id` из `presets`. Пример: `["admin"]` +- `groups: array of object` (required) — Категории прав + - `id: string` (required) — Идентификатор категории. Пример: `"messages"` + - `title: string` (required) — Название категории. Пример: `"Сообщения"` + - `description: string` (required) — Описание категории. Пример: `"Работа с сообщениями"` +- `presets: array of object` (required) — Готовые наборы прав + - `id: string` (required) — Идентификатор набора: `read-only` или `admin`. Пример: `"read-only"` + - `title: string` (required) — Название набора. Пример: `"Только чтение"` + +**Пример ответа:** + +```json +{ + "scopes": [ + { + "id": "messages:create", + "title": "Отправка сообщений", + "group": "messages", + "preset": [ + "admin" + ] + } + ], + "groups": [ + { + "id": "messages", + "title": "Сообщения", + "description": "Работа с сообщениями" + } + ], + "presets": [ + { + "id": "read-only", + "title": "Только чтение" + }, + { + "id": "admin", + "title": "Администратор" + } + ] +} +``` + +### 401: Access is unauthorized. + +**Схема ответа при ошибке:** + +- `error: string` (required) — Код ошибки. Пример: `"invalid_token"` +- `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` + +**Пример ответа:** + +```json +{ + "error": "invalid_token", + "error_description": "Access token is missing" +} +``` + +### 402: Client error + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + +### 403: Access is forbidden. + +**Схема ответа при ошибке:** + +**anyOf** - один из вариантов: + +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) + - `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` +- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403) + - `error: string` (required) — Код ошибки. Пример: `"invalid_token"` + - `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + +### 404: The server cannot find the requested resource. + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + diff --git a/apps/docs/public/api/bots/list-tokens.md b/apps/docs/public/api/bots/list-tokens.md new file mode 100644 index 000000000..9036a8f1d --- /dev/null +++ b/apps/docs/public/api/bots/list-tokens.md @@ -0,0 +1,231 @@ +> Расположение: Методы API → Боты и Webhook +> Краткое содержание: Действующие токены бота: основной, выпущенный вместе с ботом, и отдельные — со своим именем и правами +> Это Markdown-версия конкретной страницы. Для контекста за её пределами (правила API, полный перечень методов, авторизация) ОБЯЗАТЕЛЬНО открой [llms.txt](https://dev.pachca.com/llms.txt) перед ответом — это сэкономит токены и предотвратит неполный ответ. + +# Список токенов бота + +**Метод**: `GET` + +**Путь**: `/bots/{id}/tokens` + +> **Скоуп:** `bots:read` + +Действующие токены бота: основной, выпущенный вместе с ботом, и отдельные — со своим именем и правами. Значение токена здесь замаскировано: полностью его показывают один раз, при выпуске и перевыпуске. + +Работать с токенами бота могут только его создатель и администратор пространства, если настройки бота открывают администраторам доступ к редактированию. Владельцу чата с ботом метод отвечает `403`, даже когда остальные настройки бота ему открыты. + +## Параметры + +### Path параметры + +- `id: integer, int32` (required) — Идентификатор бота + +### Query параметры + +- `limit: integer, int32` (default: 50) — Количество возвращаемых сущностей за один запрос +- `cursor: string` — Курсор для пагинации (из `meta.paginate.next_page`) + + +## Пример запроса + +```bash +# Для получения следующей страницы используйте cursor из meta.paginate.next_page +curl "https://api.pachca.com/api/shared/v1/bots/1738816/tokens?limit=1" \ + -H "Authorization: Bearer YOUR_ACCESS_TOKEN" +``` + +## Ответы + +### 200: The request has succeeded. + +**Схема ответа:** + +- `data: array of object` (required) + - `id: integer, int64` (required) — Идентификатор токена. Пример: `4827` + - `token: string` (required) — Токен в маскированном виде (видны первые 8 и последние 4 символа). Полное значение приходит один раз: при выпуске и перевыпуске токена. Пример: `"cH5kR9mN...x7Qp"` + - `name: string` (required, nullable) — Имя токена. `null` у токена, выпущенного без имени. Пример: `"Сервер уведомлений"` + - `user_id: integer, int64` (required) — Идентификатор бота, которому принадлежит токен. Пример: `1738816` + - `scopes: array of string` (required) — Права токена. Пример: `["messages:create","chats:read"]` + - `created_at: date-time` (required) — Дата и время выпуска токена (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2025-01-15T10:30:00.000Z"` + - `revoked_at: date-time` (required, nullable) — Дата отзыва токена. Всегда `null`: отозванные токены в ответ не попадают. Пример: `null` + - `expires_in: integer, int32` (required, nullable) — Время жизни токена в секундах. У токенов бота `null`: они бессрочные. Пример: `null` + - `last_used_at: date-time` (required, nullable) — Дата последнего использования токена. `null`, пока по токену не было ни одного запроса. Обновляется не чаще раза в час, поэтому может отставать. Пример: `"2025-02-24T14:20:00.000Z"` + - `authorized_at: date-time` (required, nullable) — Дата авторизации. У токенов бота `null`. Пример: `null` +- `meta: object` (required) — Метаданные пагинации + - `paginate: object` (required) — Вспомогательная информация + - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `"eyJxZCO2MiwiZGlyIjomSNYjIn3"` + - `prev_page: string` — Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка. Пример: `"eyJxZCO2MiwiZGlyIjoiYXNjIn0"` + - `has_next: boolean` — Есть ли ещё данные на следующей странице. На последней странице — `false`. Пример: `true` + - `has_prev: boolean` — Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`. Пример: `false` + +**Пример ответа:** + +```json +{ + "data": [ + { + "id": 4827, + "token": "cH5kR9mN...x7Qp", + "name": "Сервер уведомлений", + "user_id": 1738816, + "scopes": [ + "messages:create", + "chats:read" + ], + "created_at": "2025-01-15T10:30:00.000Z", + "revoked_at": null, + "expires_in": null, + "last_used_at": "2025-02-24T14:20:00.000Z", + "authorized_at": null + } + ], + "meta": { + "paginate": { + "next_page": "eyJpZCI6NDgyN30" + } + } +} +``` + +### 400: The server could not understand the request due to invalid syntax. + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + +### 401: Access is unauthorized. + +**Схема ответа при ошибке:** + +- `error: string` (required) — Код ошибки. Пример: `"invalid_token"` +- `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` + +**Пример ответа:** + +```json +{ + "error": "invalid_token", + "error_description": "Access token is missing" +} +``` + +### 402: Client error + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + +### 403: Access is forbidden. + +**Схема ответа при ошибке:** + +**anyOf** - один из вариантов: + +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) + - `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` +- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403) + - `error: string` (required) — Код ошибки. Пример: `"invalid_token"` + - `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + +### 404: The server cannot find the requested resource. + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + diff --git a/apps/docs/public/api/bots/list.md b/apps/docs/public/api/bots/list.md index 378dda63e..fc99acc0c 100644 --- a/apps/docs/public/api/bots/list.md +++ b/apps/docs/public/api/bots/list.md @@ -12,7 +12,7 @@ Боты, которых вызывающий вправе настраивать: созданные им самим и те, чьи настройки открывают ему доступ к редактированию. -Параметр `query` отбирает ботов по части имени, без опечаток. Токены ботов в списке не приходят — их показывают один раз при создании и при ротации. +Параметр `query` отбирает ботов по части имени, без опечаток. Токены ботов в списке не приходят: значение токена показывают один раз, а сами токены бота отдаёт [Список токенов бота](/api/bots/list-tokens). Перечень всех ботов пространства, включая чужих, доступен владельцу на тарифе «Корпорация» — [Список ботов пространства](/api/bots/list-company). Там чужие боты приходят с одними лишь именем и ником, остальные настройки скрыты. @@ -41,6 +41,13 @@ curl "https://api.pachca.com/api/shared/v1/bots?query=задач&limit=1" \ - `data: array of object` (required) - `id: integer, int32` (required) — Идентификатор бота (совпадает с `user_id` бота). Пример: `1738816` + - `name: string` (required) — Имя бота. Пример: `"Бот задач"` + - `nickname: string` (required) — Никнейм бота. Пример: `"tasks_bot"` + - `avatar_url: string` (required, nullable) — Ссылка на аватар бота. `null`, если аватар не задан. Пример: `"https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg"` + - `creator_id: integer, int32` (required, nullable) — Идентификатор сотрудника, создавшего бота. `null`, если создатель не записан. Пример: `12` + - `created_at: date-time` (required) — Дата и время создания бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2025-05-15T14:30:00.000Z"` + - `authorized_users_count: integer, int32` (required) — Сколько сотрудников авторизовали бота. Пример: `3` + - `last_used_at: date-time` (required, nullable) — Дата и время, когда бот последний раз работал (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ: запрос на входящий вебхук или вызов API любым токеном бота, включая токены сотрудников. `null`, если такого не было. Использование токена учитывается не чаще раза в час. Пример: `"2025-05-15T14:30:00.000Z"` - `webhook: object` (required) — Объект параметров вебхука - `name: string` (required, max length: 255) — Имя бота. Пример: `"Бот задач"` - `nickname: string` (required, max length: 255) — Никнейм бота. Пример: `"tasks_bot"` @@ -60,7 +67,29 @@ curl "https://api.pachca.com/api/shared/v1/bots?query=задач&limit=1" \ - `single_chat: boolean` (required) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false` - `can_edit: array of string` (required) — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `["admin"]` - `who_can_add: string` (required) — Кто может добавлять бота в чаты - Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Любой пользователь, в том числе гости + Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей + - `kind: string` (required) — Источник входящего вебхука. `null`, если входящий вебхук у бота выключен. + Значения: `simple` — Свой формат: сообщение собирается из тела запроса по шаблону бота, `gitlab` — GitLab: Пачка сама разбирает запрос и собирает сообщение, `grafana` — Grafana: Пачка сама разбирает запрос и собирает сообщение + - `unfurl_domains: array of string` (required) — Домены, ссылки на которые бот разворачивает. Пример: `["example.com"]` + - `last_request_at: date-time` (required, nullable) — Дата и время последнего запроса на входящий вебхук бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если запросов не было. Пример: `"2025-05-15T14:30:00.000Z"` + - `oauth_client_enabled: boolean` (required) — Включена ли у бота авторизация от имени сотрудника. Пример: `true` + - `oauth_client: object` (required) — Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией, поэтому включена ли она, смотрите в `oauth_client_enabled`. У бота без токенов может прийти `null`. + - `client_id: string` (required) — Идентификатор клиента для ссылки авторизации. Пример: `"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY"` + - `client_secret_preview: string` (required) — Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета. Пример: `"cH5kR9mN...x7Qp"` + - `confidential: boolean` (required) — Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE. Пример: `true` + - `redirect_uris: array of string` (required) — Адреса возврата после согласия. Пример: `["https://example.com/oauth/callback"]` + - `scopes: array of string` (required) — Права, которые бот запрашивает у сотрудника на экране согласия. Пример: `["messages:read","messages:create"]` + - `promo: object` (required) — Страница бота в витрине. `null`, если авторизация у бота выключена. + - `description: string` (required, nullable) — Описание бота. `null`, если не задано. Пример: `"Собирает сводку по задачам Jira и присылает её в чат"` + - `published: boolean` (required) — Опубликован ли бот в витрине. Пример: `true` + - `promo_images: array of object` (required) — Скриншоты страницы бота + - `key: string` (required) — Ключ изображения. Пример: `"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"` + - `url: string` (required) — Ссылка на изображение. Пример: `"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"` + - `permissions: object` (required) — Что вы можете делать с этим ботом + - `update_oauth_client: boolean` (required) — Менять авторизацию от имени сотрудника, страницу в витрине и имя бота. Пример: `true` + - `recreate_token: boolean` (required) — Выпускать, менять и удалять токены бота и обновлять секрет клиента. Пример: `true` + - `destroy: boolean` (required) — Удалить бота. Пример: `true` + - `client_secret: string` — Секрет клиента. Приходит один раз: при включении серверного клиента, при переходе на него и при ротации секрета. Пример: `"dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA"` - `meta: object` (required) — Метаданные пагинации - `paginate: object` (required) — Вспомогательная информация - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `"eyJxZCO2MiwiZGlyIjomSNYjIn3"` @@ -75,6 +104,13 @@ curl "https://api.pachca.com/api/shared/v1/bots?query=задач&limit=1" \ "data": [ { "id": 1738816, + "name": "Бот задач", + "nickname": "tasks_bot", + "avatar_url": null, + "creator_id": 12, + "created_at": "2025-05-15T14:30:00.000Z", + "authorized_users_count": 3, + "last_used_at": "2025-05-20T09:15:00.000Z", "webhook": { "name": "Бот задач", "nickname": "tasks_bot", @@ -99,7 +135,33 @@ curl "https://api.pachca.com/api/shared/v1/bots?query=задач&limit=1" \ "can_edit": [ "admin" ], - "who_can_add": "creator" + "who_can_add": "creator", + "kind": "simple", + "unfurl_domains": [], + "last_request_at": "2025-05-20T09:15:00.000Z" + }, + "oauth_client_enabled": true, + "oauth_client": { + "client_id": "aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY", + "client_secret_preview": "dGhpc19p...ZWNy", + "confidential": true, + "redirect_uris": [ + "https://example.com/oauth/callback" + ], + "scopes": [ + "messages:read", + "messages:create" + ] + }, + "promo": { + "description": "Собирает сводку по задачам и присылает её в чат", + "published": true, + "promo_images": [] + }, + "permissions": { + "update_oauth_client": true, + "recreate_token": true, + "destroy": true } } ], @@ -136,7 +198,7 @@ curl "https://api.pachca.com/api/shared/v1/bots?query=задач&limit=1" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/bots/recreate-token-self.md b/apps/docs/public/api/bots/recreate-token-self.md index fb8aff73e..013120943 100644 --- a/apps/docs/public/api/bots/recreate-token-self.md +++ b/apps/docs/public/api/bots/recreate-token-self.md @@ -12,7 +12,7 @@ Метод позволяет боту сгенерировать себе новый `access_token` своим же токеном — без участия администратора и без знания собственного `id`. -Ротируется тот самый токен, которым сделан запрос, и он инвалидируется сразу. +Перевыпускается основной токен бота — тот, что без имени, а если такого нет, самый старый, и он инвалидируется сразу. Если бот ходит отдельным токеном, этот токен остаётся прежним. Новый токен возвращается в ответе один раз — обязательно сохраните его, иначе бот потеряет доступ к API. Скоупы переносятся с прежнего токена. @@ -29,8 +29,14 @@ curl -X POST "https://api.pachca.com/api/shared/v1/bot/recreate_token" \ **Схема ответа:** -- `data: object` (required) — Параметры созданного бота +- `data: object` (required) — Параметры бота с новым токеном - `id: integer, int32` (required) — Идентификатор бота (совпадает с `user_id` бота). Пример: `1738816` + - `oauth_client: object` (required) — Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией. У бота без токенов может прийти `null`. + - `client_id: string` (required) — Идентификатор клиента для ссылки авторизации. Пример: `"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY"` + - `client_secret_preview: string` (required) — Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета. Пример: `"cH5kR9mN...x7Qp"` + - `confidential: boolean` (required) — Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE. Пример: `true` + - `redirect_uris: array of string` (required) — Адреса возврата после согласия. Пример: `["https://example.com/oauth/callback"]` + - `scopes: array of string` (required) — Права, которые бот запрашивает у сотрудника на экране согласия. Пример: `["messages:read","messages:create"]` - `webhook: object` (required) — Объект параметров вебхука - `name: string` (required, max length: 255) — Имя бота. Пример: `"Бот задач"` - `nickname: string` (required, max length: 255) — Никнейм бота. Пример: `"tasks_bot"` @@ -50,8 +56,8 @@ curl -X POST "https://api.pachca.com/api/shared/v1/bot/recreate_token" \ - `single_chat: boolean` (required) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false` - `can_edit: array of string` (required) — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `["admin"]` - `who_can_add: string` (required) — Кто может добавлять бота в чаты - Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Любой пользователь, в том числе гости - - `access_token: string` (required) — Токен доступа бота. Возвращается при создании бота и при ротации токена. Пример: `"bm90X2FfcmVhbF90b2tlbg"` + Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей + - `access_token: string` (required) — Новый токен бота. Возвращается один раз. Пример: `"bm90X2FfcmVhbF90b2tlbg"` **Пример ответа:** @@ -59,6 +65,18 @@ curl -X POST "https://api.pachca.com/api/shared/v1/bot/recreate_token" \ { "data": { "id": 1738816, + "oauth_client": { + "client_id": "aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY", + "client_secret_preview": "dGhpc19p...ZWNy", + "confidential": true, + "redirect_uris": [ + "https://example.com/oauth/callback" + ], + "scopes": [ + "messages:read", + "messages:create" + ] + }, "webhook": { "name": "Бот задач", "nickname": "tasks_bot", @@ -115,7 +133,7 @@ curl -X POST "https://api.pachca.com/api/shared/v1/bot/recreate_token" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -161,7 +179,7 @@ curl -X POST "https://api.pachca.com/api/shared/v1/bot/recreate_token" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/bots/recreate-token.md b/apps/docs/public/api/bots/recreate-token.md index 28c362533..b420eb508 100644 --- a/apps/docs/public/api/bots/recreate-token.md +++ b/apps/docs/public/api/bots/recreate-token.md @@ -12,8 +12,9 @@ Метод генерирует боту новый `access_token` и сразу инвалидирует прежний. Используйте его при компрометации токена или плановой ротации секрета в `CI`. -Новый токен возвращается в ответе только один раз — сохраните его сразу. Права у него те же: скоупы переносятся с прежнего токена. +Перевыпускается основной токен бота — тот, что без имени, а если такого нет, самый старый. Отдельный токен перевыпускает [Перевыпуск токена бота](/api/bots/reissue-token). +Новый токен возвращается в ответе только один раз — сохраните его сразу. Права у него те же: скоупы переносятся с прежнего токена. Ротация доступна создателю бота, а также администратору пространства, если настройки бота открывают администраторам доступ к редактированию. Владелец чата, где состоит бот, ротировать токен не может, даже когда остальные настройки бота ему открыты. @@ -39,6 +40,13 @@ curl -X POST "https://api.pachca.com/api/shared/v1/bots/1738816/recreate_token" - `data: object` (required) — Параметры созданного бота - `id: integer, int32` (required) — Идентификатор бота (совпадает с `user_id` бота). Пример: `1738816` + - `name: string` (required) — Имя бота. Пример: `"Бот задач"` + - `nickname: string` (required) — Никнейм бота. Пример: `"tasks_bot"` + - `avatar_url: string` (required, nullable) — Ссылка на аватар бота. `null`, если аватар не задан. Пример: `"https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg"` + - `creator_id: integer, int32` (required, nullable) — Идентификатор сотрудника, создавшего бота. `null`, если создатель не записан. Пример: `12` + - `created_at: date-time` (required) — Дата и время создания бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2025-05-15T14:30:00.000Z"` + - `authorized_users_count: integer, int32` (required) — Сколько сотрудников авторизовали бота. Пример: `3` + - `last_used_at: date-time` (required, nullable) — Дата и время, когда бот последний раз работал (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ: запрос на входящий вебхук или вызов API любым токеном бота, включая токены сотрудников. `null`, если такого не было. Использование токена учитывается не чаще раза в час. Пример: `"2025-05-15T14:30:00.000Z"` - `webhook: object` (required) — Объект параметров вебхука - `name: string` (required, max length: 255) — Имя бота. Пример: `"Бот задач"` - `nickname: string` (required, max length: 255) — Никнейм бота. Пример: `"tasks_bot"` @@ -58,8 +66,30 @@ curl -X POST "https://api.pachca.com/api/shared/v1/bots/1738816/recreate_token" - `single_chat: boolean` (required) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false` - `can_edit: array of string` (required) — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `["admin"]` - `who_can_add: string` (required) — Кто может добавлять бота в чаты - Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Любой пользователь, в том числе гости - - `access_token: string` (required) — Токен доступа бота. Возвращается при создании бота и при ротации токена. Пример: `"bm90X2FfcmVhbF90b2tlbg"` + Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей + - `kind: string` (required) — Источник входящего вебхука. `null`, если входящий вебхук у бота выключен. + Значения: `simple` — Свой формат: сообщение собирается из тела запроса по шаблону бота, `gitlab` — GitLab: Пачка сама разбирает запрос и собирает сообщение, `grafana` — Grafana: Пачка сама разбирает запрос и собирает сообщение + - `unfurl_domains: array of string` (required) — Домены, ссылки на которые бот разворачивает. Пример: `["example.com"]` + - `last_request_at: date-time` (required, nullable) — Дата и время последнего запроса на входящий вебхук бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если запросов не было. Пример: `"2025-05-15T14:30:00.000Z"` + - `oauth_client_enabled: boolean` (required) — Включена ли у бота авторизация от имени сотрудника. Пример: `true` + - `oauth_client: object` (required) — Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией, поэтому включена ли она, смотрите в `oauth_client_enabled`. У бота без токенов может прийти `null`. + - `client_id: string` (required) — Идентификатор клиента для ссылки авторизации. Пример: `"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY"` + - `client_secret_preview: string` (required) — Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета. Пример: `"cH5kR9mN...x7Qp"` + - `confidential: boolean` (required) — Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE. Пример: `true` + - `redirect_uris: array of string` (required) — Адреса возврата после согласия. Пример: `["https://example.com/oauth/callback"]` + - `scopes: array of string` (required) — Права, которые бот запрашивает у сотрудника на экране согласия. Пример: `["messages:read","messages:create"]` + - `promo: object` (required) — Страница бота в витрине. `null`, если авторизация у бота выключена. + - `description: string` (required, nullable) — Описание бота. `null`, если не задано. Пример: `"Собирает сводку по задачам Jira и присылает её в чат"` + - `published: boolean` (required) — Опубликован ли бот в витрине. Пример: `true` + - `promo_images: array of object` (required) — Скриншоты страницы бота + - `key: string` (required) — Ключ изображения. Пример: `"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"` + - `url: string` (required) — Ссылка на изображение. Пример: `"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"` + - `permissions: object` (required) — Что вы можете делать с этим ботом + - `update_oauth_client: boolean` (required) — Менять авторизацию от имени сотрудника, страницу в витрине и имя бота. Пример: `true` + - `recreate_token: boolean` (required) — Выпускать, менять и удалять токены бота и обновлять секрет клиента. Пример: `true` + - `destroy: boolean` (required) — Удалить бота. Пример: `true` + - `client_secret: string` — Секрет клиента. Приходит один раз: при включении серверного клиента, при переходе на него и при ротации секрета. Пример: `"dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA"` + - `access_token: string` — Токен доступа бота. Возвращается при создании бота и при ротации токена. Не приходит, если бот создан с `empty: true`. Пример: `"bm90X2FfcmVhbF90b2tlbg"` **Пример ответа:** @@ -67,6 +97,13 @@ curl -X POST "https://api.pachca.com/api/shared/v1/bots/1738816/recreate_token" { "data": { "id": 1738816, + "name": "Бот задач", + "nickname": "tasks_bot", + "avatar_url": null, + "creator_id": 12, + "created_at": "2025-05-15T14:30:00.000Z", + "authorized_users_count": 3, + "last_used_at": "2025-05-20T09:15:00.000Z", "webhook": { "name": "Бот задач", "nickname": "tasks_bot", @@ -91,7 +128,33 @@ curl -X POST "https://api.pachca.com/api/shared/v1/bots/1738816/recreate_token" "can_edit": [ "admin" ], - "who_can_add": "creator" + "who_can_add": "creator", + "kind": "simple", + "unfurl_domains": [], + "last_request_at": "2025-05-20T09:15:00.000Z" + }, + "oauth_client_enabled": true, + "oauth_client": { + "client_id": "aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY", + "client_secret_preview": "dGhpc19p...ZWNy", + "confidential": true, + "redirect_uris": [ + "https://example.com/oauth/callback" + ], + "scopes": [ + "messages:read", + "messages:create" + ] + }, + "promo": { + "description": "Собирает сводку по задачам и присылает её в чат", + "published": true, + "promo_images": [] + }, + "permissions": { + "update_oauth_client": true, + "recreate_token": true, + "destroy": true }, "access_token": "bm90X2FfcmVhbF90b2tlbg" } @@ -123,7 +186,7 @@ curl -X POST "https://api.pachca.com/api/shared/v1/bots/1738816/recreate_token" - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -169,7 +232,7 @@ curl -X POST "https://api.pachca.com/api/shared/v1/bots/1738816/recreate_token" - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/bots/reissue-token.md b/apps/docs/public/api/bots/reissue-token.md new file mode 100644 index 000000000..eb33043ab --- /dev/null +++ b/apps/docs/public/api/bots/reissue-token.md @@ -0,0 +1,185 @@ +> Расположение: Методы API → Боты и Webhook +> Краткое содержание: Метод нужен, когда токен утёк или его меняют по плану +> Это Markdown-версия конкретной страницы. Для контекста за её пределами (правила API, полный перечень методов, авторизация) ОБЯЗАТЕЛЬНО открой [llms.txt](https://dev.pachca.com/llms.txt) перед ответом — это сэкономит токены и предотвратит неполный ответ. + +# Перевыпуск токена бота + +**Метод**: `POST` + +**Путь**: `/bots/{id}/tokens/{token_id}/reissue` + +> **Скоуп:** `bots:write` + +Заменяет значение токена новым: прежнее сразу перестаёт работать, имя и права остаются. Новое значение приходит в ответе один раз — сохраните его сразу. + +Метод нужен, когда токен утёк или его меняют по плану. Основной токен бота перевыпускает и [Ротация токена бота](/api/bots/recreate-token). + +Работать с токенами бота могут только его создатель и администратор пространства, если настройки бота открывают администраторам доступ к редактированию. Владельцу чата с ботом метод отвечает `403`, даже когда остальные настройки бота ему открыты. + +## Параметры + +### Path параметры + +- `id: integer, int32` (required) — Идентификатор бота +- `token_id: integer, int64` (required) — Идентификатор токена + + +## Пример запроса + +```bash +curl -X POST "https://api.pachca.com/api/shared/v1/bots/1738816/tokens/4827/reissue" \ + -H "Authorization: Bearer YOUR_ACCESS_TOKEN" +``` + +## Ответы + +### 200: The request has succeeded. + +**Схема ответа:** + +- `data: object` (required) — Токен бота + - `id: integer, int64` (required) — Идентификатор токена. Пример: `4827` + - `token: string` (required) — Токен в маскированном виде (видны первые 8 и последние 4 символа). Полное значение приходит один раз: при выпуске и перевыпуске токена. Пример: `"cH5kR9mN...x7Qp"` + - `name: string` (required, nullable) — Имя токена. `null` у токена, выпущенного без имени. Пример: `"Сервер уведомлений"` + - `user_id: integer, int64` (required) — Идентификатор бота, которому принадлежит токен. Пример: `1738816` + - `scopes: array of string` (required) — Права токена. Пример: `["messages:create","chats:read"]` + - `created_at: date-time` (required) — Дата и время выпуска токена (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2025-01-15T10:30:00.000Z"` + - `revoked_at: date-time` (required, nullable) — Дата отзыва токена. Всегда `null`: отозванные токены в ответ не попадают. Пример: `null` + - `expires_in: integer, int32` (required, nullable) — Время жизни токена в секундах. У токенов бота `null`: они бессрочные. Пример: `null` + - `last_used_at: date-time` (required, nullable) — Дата последнего использования токена. `null`, пока по токену не было ни одного запроса. Обновляется не чаще раза в час, поэтому может отставать. Пример: `"2025-02-24T14:20:00.000Z"` + - `authorized_at: date-time` (required, nullable) — Дата авторизации. У токенов бота `null`. Пример: `null` + +**Пример ответа:** + +```json +{ + "data": { + "id": 4827, + "token": "bm90X2FfcmVhbF90b2tlbg", + "name": "Сервер уведомлений", + "user_id": 1738816, + "scopes": [ + "messages:create", + "chats:read" + ], + "created_at": "2025-01-15T10:30:00.000Z", + "revoked_at": null, + "expires_in": null, + "last_used_at": "2025-02-24T14:20:00.000Z", + "authorized_at": null + } +} +``` + +### 401: Access is unauthorized. + +**Схема ответа при ошибке:** + +- `error: string` (required) — Код ошибки. Пример: `"invalid_token"` +- `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` + +**Пример ответа:** + +```json +{ + "error": "invalid_token", + "error_description": "Access token is missing" +} +``` + +### 402: Client error + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + +### 403: Access is forbidden. + +**Схема ответа при ошибке:** + +**anyOf** - один из вариантов: + +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) + - `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` +- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403) + - `error: string` (required) — Код ошибки. Пример: `"invalid_token"` + - `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + +### 404: The server cannot find the requested resource. + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + diff --git a/apps/docs/public/api/bots/remove-event.md b/apps/docs/public/api/bots/remove-event.md index a389adbb1..9ff78f6aa 100644 --- a/apps/docs/public/api/bots/remove-event.md +++ b/apps/docs/public/api/bots/remove-event.md @@ -57,7 +57,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/webhooks/events/01KAJZ2XDSS - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -103,7 +103,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/webhooks/events/01KAJZ2XDSS - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/bots/rotate-client-secret.md b/apps/docs/public/api/bots/rotate-client-secret.md new file mode 100644 index 000000000..f5070d8ff --- /dev/null +++ b/apps/docs/public/api/bots/rotate-client-secret.md @@ -0,0 +1,302 @@ +> Расположение: Методы API → Боты и Webhook +> Краткое содержание: Выпускает новый clientsecret для авторизации от имени сотрудника +> Это Markdown-версия конкретной страницы. Для контекста за её пределами (правила API, полный перечень методов, авторизация) ОБЯЗАТЕЛЬНО открой [llms.txt](https://dev.pachca.com/llms.txt) перед ответом — это сэкономит токены и предотвратит неполный ответ. + +# Ротация секрета клиента + +**Метод**: `POST` + +**Путь**: `/bots/{id}/rotate_client_secret` + +> **Скоуп:** `bots:write` + +Выпускает новый `client_secret` для авторизации от имени сотрудника. Прежний секрет перестаёт работать сразу, поэтому сначала подготовьте бота к замене. Уже выданные авторизации и полученные токены продолжают работать. + +Новый секрет приходит в `client_secret` один раз. Метод работает только у бота с включённой авторизацией и серверным клиентом (`confidential: true`), иначе отвечает `400`. + +Ротация доступна создателю бота, а также администратору пространства, если настройки бота открывают администраторам доступ к редактированию. + +## Параметры + +### Path параметры + +- `id: integer, int32` (required) — Идентификатор бота + + +## Пример запроса + +```bash +curl -X POST "https://api.pachca.com/api/shared/v1/bots/1738816/rotate_client_secret" \ + -H "Authorization: Bearer YOUR_ACCESS_TOKEN" +``` + +## Ответы + +### 200: The request has succeeded. + +**Схема ответа:** + +- `data: object` (required) — Параметры бота + - `id: integer, int32` (required) — Идентификатор бота (совпадает с `user_id` бота). Пример: `1738816` + - `name: string` (required) — Имя бота. Пример: `"Бот задач"` + - `nickname: string` (required) — Никнейм бота. Пример: `"tasks_bot"` + - `avatar_url: string` (required, nullable) — Ссылка на аватар бота. `null`, если аватар не задан. Пример: `"https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg"` + - `creator_id: integer, int32` (required, nullable) — Идентификатор сотрудника, создавшего бота. `null`, если создатель не записан. Пример: `12` + - `created_at: date-time` (required) — Дата и время создания бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2025-05-15T14:30:00.000Z"` + - `authorized_users_count: integer, int32` (required) — Сколько сотрудников авторизовали бота. Пример: `3` + - `last_used_at: date-time` (required, nullable) — Дата и время, когда бот последний раз работал (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ: запрос на входящий вебхук или вызов API любым токеном бота, включая токены сотрудников. `null`, если такого не было. Использование токена учитывается не чаще раза в час. Пример: `"2025-05-15T14:30:00.000Z"` + - `webhook: object` (required) — Объект параметров вебхука + - `name: string` (required, max length: 255) — Имя бота. Пример: `"Бот задач"` + - `nickname: string` (required, max length: 255) — Никнейм бота. Пример: `"tasks_bot"` + - `outgoing_url: string` (required, nullable) — URL исходящего вебхука. `null`, если исходящий вебхук у бота не настроен. Пример: `"https://www.website.com/tasks/new"` + - `events: array of string` (required) — События, на которые подписан бот. Пример: `["message_new"]` + - `trigger_on: string` (required) — Условие срабатывания исходящего вебхука + Значения: `commands` — Только на команды (триггер-слова) из commands, `all_messages` — На все сообщения в чатах, где есть бот, `unfurl` — На развёртывание ссылок (link previews) + - `commands: array of string` (required) — Команды бота (триггер-слова). Пример: `["/task"]` + - `scopes: array of string` (required) — Скоупы (права доступа) токена бота. Набор по умолчанию шире того, что можно назначить явно, поэтому здесь могут встречаться значения, недоступные для явной установки. Пример: `["messages:create"]` + - `template: string` (required, nullable) — Шаблон форматирования входящего вебхука. `null`, если не задан. Пример: `"Заказ от {{ client }} на сумму {{ amount }} ₽"` + - `template_engine: string` (required) — Шаблонизатор для обработки шаблона входящего вебхука + Значения: `liquid` — Liquid — условия, циклы и фильтры, `mustache` — Mustache — простая подстановка без логики + - `challenge_key: string` (required, nullable) — Название поля проверки для верификации входящего вебхука. `null`, если не задано. Пример: `"challenge"` + - `link_preview_enabled: boolean` (required) — Показывать превью ссылок в сообщениях входящего вебхука. Пример: `true` + - `ignore_self_messages: boolean` (required) — Игнорировать входящие сообщения, отправленные самим ботом. Пример: `false` + - `events_history_enabled: boolean` (required) — Сохранять историю событий бота для последующего получения через метод истории событий. Пример: `false` + - `single_chat: boolean` (required) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false` + - `can_edit: array of string` (required) — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `["admin"]` + - `who_can_add: string` (required) — Кто может добавлять бота в чаты + Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей + - `kind: string` (required) — Источник входящего вебхука. `null`, если входящий вебхук у бота выключен. + Значения: `simple` — Свой формат: сообщение собирается из тела запроса по шаблону бота, `gitlab` — GitLab: Пачка сама разбирает запрос и собирает сообщение, `grafana` — Grafana: Пачка сама разбирает запрос и собирает сообщение + - `unfurl_domains: array of string` (required) — Домены, ссылки на которые бот разворачивает. Пример: `["example.com"]` + - `last_request_at: date-time` (required, nullable) — Дата и время последнего запроса на входящий вебхук бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если запросов не было. Пример: `"2025-05-15T14:30:00.000Z"` + - `oauth_client_enabled: boolean` (required) — Включена ли у бота авторизация от имени сотрудника. Пример: `true` + - `oauth_client: object` (required) — Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией, поэтому включена ли она, смотрите в `oauth_client_enabled`. У бота без токенов может прийти `null`. + - `client_id: string` (required) — Идентификатор клиента для ссылки авторизации. Пример: `"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY"` + - `client_secret_preview: string` (required) — Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета. Пример: `"cH5kR9mN...x7Qp"` + - `confidential: boolean` (required) — Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE. Пример: `true` + - `redirect_uris: array of string` (required) — Адреса возврата после согласия. Пример: `["https://example.com/oauth/callback"]` + - `scopes: array of string` (required) — Права, которые бот запрашивает у сотрудника на экране согласия. Пример: `["messages:read","messages:create"]` + - `promo: object` (required) — Страница бота в витрине. `null`, если авторизация у бота выключена. + - `description: string` (required, nullable) — Описание бота. `null`, если не задано. Пример: `"Собирает сводку по задачам Jira и присылает её в чат"` + - `published: boolean` (required) — Опубликован ли бот в витрине. Пример: `true` + - `promo_images: array of object` (required) — Скриншоты страницы бота + - `key: string` (required) — Ключ изображения. Пример: `"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"` + - `url: string` (required) — Ссылка на изображение. Пример: `"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"` + - `permissions: object` (required) — Что вы можете делать с этим ботом + - `update_oauth_client: boolean` (required) — Менять авторизацию от имени сотрудника, страницу в витрине и имя бота. Пример: `true` + - `recreate_token: boolean` (required) — Выпускать, менять и удалять токены бота и обновлять секрет клиента. Пример: `true` + - `destroy: boolean` (required) — Удалить бота. Пример: `true` + - `client_secret: string` — Секрет клиента. Приходит один раз: при включении серверного клиента, при переходе на него и при ротации секрета. Пример: `"dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA"` + +**Пример ответа:** + +```json +{ + "data": { + "id": 1738816, + "name": "Бот задач", + "nickname": "tasks_bot", + "avatar_url": null, + "creator_id": 12, + "created_at": "2025-05-15T14:30:00.000Z", + "authorized_users_count": 3, + "last_used_at": "2025-05-20T09:15:00.000Z", + "webhook": { + "name": "Бот задач", + "nickname": "tasks_bot", + "outgoing_url": "https://www.website.com/tasks/new", + "events": [ + "message_new" + ], + "trigger_on": "commands", + "commands": [ + "/task" + ], + "scopes": [ + "messages:create" + ], + "template": "Заказ от {{ client }} на сумму {{ amount }} ₽", + "template_engine": "liquid", + "challenge_key": "challenge", + "link_preview_enabled": true, + "ignore_self_messages": false, + "events_history_enabled": false, + "single_chat": false, + "can_edit": [ + "admin" + ], + "who_can_add": "creator", + "kind": "simple", + "unfurl_domains": [], + "last_request_at": "2025-05-20T09:15:00.000Z" + }, + "oauth_client_enabled": true, + "oauth_client": { + "client_id": "aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY", + "client_secret_preview": "dGhpc19p...ZWNy", + "confidential": true, + "redirect_uris": [ + "https://example.com/oauth/callback" + ], + "scopes": [ + "messages:read", + "messages:create" + ] + }, + "promo": { + "description": "Собирает сводку по задачам и присылает её в чат", + "published": true, + "promo_images": [] + }, + "permissions": { + "update_oauth_client": true, + "recreate_token": true, + "destroy": true + }, + "client_secret": "dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA" + } +} +``` + +### 400: The server could not understand the request due to invalid syntax. + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + +### 401: Access is unauthorized. + +**Схема ответа при ошибке:** + +- `error: string` (required) — Код ошибки. Пример: `"invalid_token"` +- `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` + +**Пример ответа:** + +```json +{ + "error": "invalid_token", + "error_description": "Access token is missing" +} +``` + +### 402: Client error + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + +### 403: Access is forbidden. + +**Схема ответа при ошибке:** + +**anyOf** - один из вариантов: + +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) + - `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` +- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403) + - `error: string` (required) — Код ошибки. Пример: `"invalid_token"` + - `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + +### 404: The server cannot find the requested resource. + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + diff --git a/apps/docs/public/api/bots/update-token.md b/apps/docs/public/api/bots/update-token.md new file mode 100644 index 000000000..595e8fe00 --- /dev/null +++ b/apps/docs/public/api/bots/update-token.md @@ -0,0 +1,244 @@ +> Расположение: Методы API → Боты и Webhook +> Краткое содержание: Меняет имя или права токена +> Это Markdown-версия конкретной страницы. Для контекста за её пределами (правила API, полный перечень методов, авторизация) ОБЯЗАТЕЛЬНО открой [llms.txt](https://dev.pachca.com/llms.txt) перед ответом — это сэкономит токены и предотвратит неполный ответ. + +# Изменение токена бота + +**Метод**: `PUT` + +**Путь**: `/bots/{id}/tokens/{token_id}` + +> **Скоуп:** `bots:write` + +Меняет имя или права токена. Новые права действуют сразу: перевыпускать токен не нужно, его значение остаётся прежним. Права заменяются переданным списком целиком. + +Работать с токенами бота могут только его создатель и администратор пространства, если настройки бота открывают администраторам доступ к редактированию. Владельцу чата с ботом метод отвечает `403`, даже когда остальные настройки бота ему открыты. + +## Параметры + +### Path параметры + +- `id: integer, int32` (required) — Идентификатор бота +- `token_id: integer, int64` (required) — Идентификатор токена + + +## Тело запроса + +**Обязательно** + +Формат: `application/json` + +### Схема + +- `name: string` (max length: 255) — Новое имя токена. Пример: `"Сервер уведомлений"` +- `scopes: array of string` — Новые права токена. Список заменяется целиком и действует сразу, перевыпускать токен не нужно. Пример: `["messages:create","chats:read"]` + +### Пример + +```json +{ + "name": "Сервер уведомлений", + "scopes": [ + "messages:create", + "chats:read" + ] +} +``` + +## Пример запроса + +```bash +curl -X PUT "https://api.pachca.com/api/shared/v1/bots/1738816/tokens/4827" \ + -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ + -H "Content-Type: application/json" \ + -d '{ + "name": "Сервер уведомлений", + "scopes": [ + "messages:create", + "chats:read" + ] +}' +``` + +## Ответы + +### 200: The request has succeeded. + +**Схема ответа:** + +- `data: object` (required) — Токен бота + - `id: integer, int64` (required) — Идентификатор токена. Пример: `4827` + - `token: string` (required) — Токен в маскированном виде (видны первые 8 и последние 4 символа). Полное значение приходит один раз: при выпуске и перевыпуске токена. Пример: `"cH5kR9mN...x7Qp"` + - `name: string` (required, nullable) — Имя токена. `null` у токена, выпущенного без имени. Пример: `"Сервер уведомлений"` + - `user_id: integer, int64` (required) — Идентификатор бота, которому принадлежит токен. Пример: `1738816` + - `scopes: array of string` (required) — Права токена. Пример: `["messages:create","chats:read"]` + - `created_at: date-time` (required) — Дата и время выпуска токена (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2025-01-15T10:30:00.000Z"` + - `revoked_at: date-time` (required, nullable) — Дата отзыва токена. Всегда `null`: отозванные токены в ответ не попадают. Пример: `null` + - `expires_in: integer, int32` (required, nullable) — Время жизни токена в секундах. У токенов бота `null`: они бессрочные. Пример: `null` + - `last_used_at: date-time` (required, nullable) — Дата последнего использования токена. `null`, пока по токену не было ни одного запроса. Обновляется не чаще раза в час, поэтому может отставать. Пример: `"2025-02-24T14:20:00.000Z"` + - `authorized_at: date-time` (required, nullable) — Дата авторизации. У токенов бота `null`. Пример: `null` + +**Пример ответа:** + +```json +{ + "data": { + "id": 4827, + "token": "cH5kR9mN...x7Qp", + "name": "Сервер уведомлений", + "user_id": 1738816, + "scopes": [ + "messages:create", + "chats:read" + ], + "created_at": "2025-01-15T10:30:00.000Z", + "revoked_at": null, + "expires_in": null, + "last_used_at": "2025-02-24T14:20:00.000Z", + "authorized_at": null + } +} +``` + +### 400: The server could not understand the request due to invalid syntax. + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + +### 401: Access is unauthorized. + +**Схема ответа при ошибке:** + +- `error: string` (required) — Код ошибки. Пример: `"invalid_token"` +- `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` + +**Пример ответа:** + +```json +{ + "error": "invalid_token", + "error_description": "Access token is missing" +} +``` + +### 402: Client error + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + +### 403: Access is forbidden. + +**Схема ответа при ошибке:** + +**anyOf** - один из вариантов: + +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) + - `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` +- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403) + - `error: string` (required) — Код ошибки. Пример: `"invalid_token"` + - `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + +### 404: The server cannot find the requested resource. + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + diff --git a/apps/docs/public/api/bots/update-webhook.md b/apps/docs/public/api/bots/update-webhook.md index a8a7c0f84..ab61535a6 100644 --- a/apps/docs/public/api/bots/update-webhook.md +++ b/apps/docs/public/api/bots/update-webhook.md @@ -52,8 +52,14 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/bot/webhook" \ **Схема ответа:** -- `data: object` (required) — Параметры бота +- `data: object` (required) — Параметры бота в ответах методов самого бота - `id: integer, int32` (required) — Идентификатор бота (совпадает с `user_id` бота). Пример: `1738816` + - `oauth_client: object` (required) — Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией. У бота без токенов может прийти `null`. + - `client_id: string` (required) — Идентификатор клиента для ссылки авторизации. Пример: `"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY"` + - `client_secret_preview: string` (required) — Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета. Пример: `"cH5kR9mN...x7Qp"` + - `confidential: boolean` (required) — Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE. Пример: `true` + - `redirect_uris: array of string` (required) — Адреса возврата после согласия. Пример: `["https://example.com/oauth/callback"]` + - `scopes: array of string` (required) — Права, которые бот запрашивает у сотрудника на экране согласия. Пример: `["messages:read","messages:create"]` - `webhook: object` (required) — Объект параметров вебхука - `name: string` (required, max length: 255) — Имя бота. Пример: `"Бот задач"` - `nickname: string` (required, max length: 255) — Никнейм бота. Пример: `"tasks_bot"` @@ -73,7 +79,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/bot/webhook" \ - `single_chat: boolean` (required) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false` - `can_edit: array of string` (required) — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `["admin"]` - `who_can_add: string` (required) — Кто может добавлять бота в чаты - Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Любой пользователь, в том числе гости + Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей **Пример ответа:** @@ -81,6 +87,18 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/bot/webhook" \ { "data": { "id": 1738816, + "oauth_client": { + "client_id": "aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY", + "client_secret_preview": "dGhpc19p...ZWNy", + "confidential": true, + "redirect_uris": [ + "https://example.com/oauth/callback" + ], + "scopes": [ + "messages:read", + "messages:create" + ] + }, "webhook": { "name": "Бот задач", "nickname": "tasks_bot", @@ -120,7 +138,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/bot/webhook" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -166,7 +184,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/bot/webhook" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -212,7 +230,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/bot/webhook" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/bots/update.md b/apps/docs/public/api/bots/update.md index 37fcba4f7..30b824fd2 100644 --- a/apps/docs/public/api/bots/update.md +++ b/apps/docs/public/api/bots/update.md @@ -12,11 +12,13 @@ Меняет настройки бота: перезаписываются только переданные поля. -Поле `single_chat` принимается только при создании бота. В этом методе оно молча игнорируется: ответ приходит успешный, а режим бота не меняется. +Ник обязан заканчиваться на `_bot` и быть свободным в пространстве, иначе метод отвечает ошибкой валидации. Команды и скоупы заменяются переданным списком целиком. Скоупы относятся к основному токену бота — тому, что без имени, а если такого нет, к самому старому — и применяются к нему сразу, перевыпускать его не нужно. Права отдельного токена меняет [Изменение токена бота](/api/bots/update-token). -Ник обязан заканчиваться на `_bot` и быть свободным в пространстве, иначе метод отвечает ошибкой валидации. Команды и скоупы заменяются переданным списком целиком, а новый набор скоупов сразу применяется к действующему токену бота — перевыпускать его не нужно. +Объект `oauth_client` включает авторизацию от имени сотрудника или меняет её настройки, а `null` её выключает: авторизации, выданные сотрудниками, отзываются, страница в витрине удаляется, собственные токены бота продолжают работать. Когда клиент становится серверным, его секрет приходит в `client_secret` один раз. Страницу в витрине задаёт `promo`, пока авторизация включена. -Вы не можете редактировать бота, настройки которого вам недоступны (поле «Кто может редактировать настройки бота» находится во вкладке «Основное» в настройках бота). +Включать событие `message_link_shared`, а у бота с ним менять домены, адрес вебхука и историю событий может только администратор или владелец пространства. + +Имя бота, авторизацию от имени сотрудника и страницу в витрине меняют только его создатель и администратор пространства, если настройки бота открывают администраторам доступ к редактированию. Остальные настройки нельзя менять у бота, настройки которого вам недоступны (поле «Кто может редактировать настройки бота» находится во вкладке «Основное» в настройках бота). ## Параметры @@ -33,7 +35,7 @@ ### Схема -- `webhook: object` (required) — Объект параметров вебхука редактируемого бота +- `webhook: object` — Объект параметров вебхука редактируемого бота - `name: string` (max length: 255) — Имя бота. Пример: `"Бот задач"` - `nickname: string` (max length: 255) — Никнейм бота. Должен заканчиваться на `_bot`. Пример: `"tasks_bot"` - `outgoing_url: string` — URL исходящего вебхука. Пример: `"https://www.website.com/tasks/new"` @@ -50,8 +52,20 @@ - `ignore_self_messages: boolean` (default: false) — Игнорировать входящие сообщения, отправленные самим ботом. Пример: `false` - `events_history_enabled: boolean` (default: false) — Сохранять историю событий бота для последующего получения через метод истории событий. Пример: `false` - `who_can_add: string` — Кто может добавлять бота в чаты - Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Любой пользователь, в том числе гости + Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей - `can_edit: array of string` — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `["admin"]` + - `single_chat: boolean` — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false` + - `kind: string` — Источник входящего вебхука. Если у бота входящего вебхука не было, он включается. + Значения: `simple` — Свой формат: сообщение собирается из тела запроса по шаблону бота, `gitlab` — GitLab: Пачка сама разбирает запрос и собирает сообщение, `grafana` — Grafana: Пачка сама разбирает запрос и собирает сообщение + - `unfurl_domains: array of string` — Домены, ссылки на которые бот разворачивает, не больше 5. Работают вместе с событием `message_link_shared`. Пример: `["example.com"]` +- `oauth_client: object` — Настройки авторизации от имени сотрудника. Если авторизация выключена, объект её включает, а `null` выключает: выданные сотрудниками авторизации отзываются, страница в витрине удаляется. + - `confidential: boolean` — Где хранится секрет: `true` — серверное приложение хранит `client_secret` и обменивает код у себя, `false` — приложение без секрета (браузер, мобильное, CLI) обменивает код по PKCE. Если не передать, значение не меняется, а у нового клиента — `true`. Пример: `true` + - `redirect_uris: array of string` — Адреса возврата после согласия. HTTPS обязателен, кроме адресов на этом же компьютере (`localhost`, `127.0.0.1`). Адрес в ссылке авторизации должен совпадать с одним из списка точно, у `localhost` и `127.0.0.1` порт не сравнивается. При включении передайте хотя бы один адрес. Список заменяется целиком. Пример: `["https://example.com/oauth/callback"]` + - `scopes: array of string` — Права, которые бот запрашивает у сотрудника на экране согласия. Доступны только права, которые можно выдать самому боту. Если при включении поле не передать, запрашиваются все права бота. Список заменяется целиком. Пример: `["messages:read","messages:create"]` +- `promo: object` — Страница бота в витрине. Доступна, только когда у бота включена авторизация. + - `description: string` — Описание: чем бот занимается и зачем его подключать. Без описания бота нельзя опубликовать. Пример: `"Собирает сводку по задачам Jira и присылает её в чат"` + - `published: boolean` — Опубликовать бота в витрине: он появится карточкой на вкладке «Обзор». Публикация требует описания. Пример: `true` + - `promo_images: array of string` — Скриншоты страницы бота, не больше 5: ключи загруженных изображений (`key` из [Получение подписи, ключа и других параметров](/api/files/uploads)). Список заменяется целиком, порядок сохраняется. Пример: `["attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"]` ### Пример @@ -75,6 +89,28 @@ "challenge_key": "challenge", "can_edit": [ "admin" + ], + "single_chat": false, + "kind": "simple", + "unfurl_domains": [ + "example.com" + ] + }, + "oauth_client": { + "confidential": true, + "redirect_uris": [ + "https://example.com/oauth/callback" + ], + "scopes": [ + "messages:read", + "messages:create" + ] + }, + "promo": { + "description": "Собирает сводку по задачам Jira и присылает её в чат", + "published": true, + "promo_images": [ + "attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png" ] } } @@ -105,6 +141,28 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/bots/1738816" \ "challenge_key": "challenge", "can_edit": [ "admin" + ], + "single_chat": false, + "kind": "simple", + "unfurl_domains": [ + "example.com" + ] + }, + "oauth_client": { + "confidential": true, + "redirect_uris": [ + "https://example.com/oauth/callback" + ], + "scopes": [ + "messages:read", + "messages:create" + ] + }, + "promo": { + "description": "Собирает сводку по задачам Jira и присылает её в чат", + "published": true, + "promo_images": [ + "attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png" ] } }' @@ -118,6 +176,13 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/bots/1738816" \ - `data: object` (required) — Параметры бота - `id: integer, int32` (required) — Идентификатор бота (совпадает с `user_id` бота). Пример: `1738816` + - `name: string` (required) — Имя бота. Пример: `"Бот задач"` + - `nickname: string` (required) — Никнейм бота. Пример: `"tasks_bot"` + - `avatar_url: string` (required, nullable) — Ссылка на аватар бота. `null`, если аватар не задан. Пример: `"https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg"` + - `creator_id: integer, int32` (required, nullable) — Идентификатор сотрудника, создавшего бота. `null`, если создатель не записан. Пример: `12` + - `created_at: date-time` (required) — Дата и время создания бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2025-05-15T14:30:00.000Z"` + - `authorized_users_count: integer, int32` (required) — Сколько сотрудников авторизовали бота. Пример: `3` + - `last_used_at: date-time` (required, nullable) — Дата и время, когда бот последний раз работал (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ: запрос на входящий вебхук или вызов API любым токеном бота, включая токены сотрудников. `null`, если такого не было. Использование токена учитывается не чаще раза в час. Пример: `"2025-05-15T14:30:00.000Z"` - `webhook: object` (required) — Объект параметров вебхука - `name: string` (required, max length: 255) — Имя бота. Пример: `"Бот задач"` - `nickname: string` (required, max length: 255) — Никнейм бота. Пример: `"tasks_bot"` @@ -137,7 +202,29 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/bots/1738816" \ - `single_chat: boolean` (required) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false` - `can_edit: array of string` (required) — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `["admin"]` - `who_can_add: string` (required) — Кто может добавлять бота в чаты - Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Любой пользователь, в том числе гости + Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей + - `kind: string` (required) — Источник входящего вебхука. `null`, если входящий вебхук у бота выключен. + Значения: `simple` — Свой формат: сообщение собирается из тела запроса по шаблону бота, `gitlab` — GitLab: Пачка сама разбирает запрос и собирает сообщение, `grafana` — Grafana: Пачка сама разбирает запрос и собирает сообщение + - `unfurl_domains: array of string` (required) — Домены, ссылки на которые бот разворачивает. Пример: `["example.com"]` + - `last_request_at: date-time` (required, nullable) — Дата и время последнего запроса на входящий вебхук бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если запросов не было. Пример: `"2025-05-15T14:30:00.000Z"` + - `oauth_client_enabled: boolean` (required) — Включена ли у бота авторизация от имени сотрудника. Пример: `true` + - `oauth_client: object` (required) — Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией, поэтому включена ли она, смотрите в `oauth_client_enabled`. У бота без токенов может прийти `null`. + - `client_id: string` (required) — Идентификатор клиента для ссылки авторизации. Пример: `"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY"` + - `client_secret_preview: string` (required) — Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета. Пример: `"cH5kR9mN...x7Qp"` + - `confidential: boolean` (required) — Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE. Пример: `true` + - `redirect_uris: array of string` (required) — Адреса возврата после согласия. Пример: `["https://example.com/oauth/callback"]` + - `scopes: array of string` (required) — Права, которые бот запрашивает у сотрудника на экране согласия. Пример: `["messages:read","messages:create"]` + - `promo: object` (required) — Страница бота в витрине. `null`, если авторизация у бота выключена. + - `description: string` (required, nullable) — Описание бота. `null`, если не задано. Пример: `"Собирает сводку по задачам Jira и присылает её в чат"` + - `published: boolean` (required) — Опубликован ли бот в витрине. Пример: `true` + - `promo_images: array of object` (required) — Скриншоты страницы бота + - `key: string` (required) — Ключ изображения. Пример: `"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"` + - `url: string` (required) — Ссылка на изображение. Пример: `"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"` + - `permissions: object` (required) — Что вы можете делать с этим ботом + - `update_oauth_client: boolean` (required) — Менять авторизацию от имени сотрудника, страницу в витрине и имя бота. Пример: `true` + - `recreate_token: boolean` (required) — Выпускать, менять и удалять токены бота и обновлять секрет клиента. Пример: `true` + - `destroy: boolean` (required) — Удалить бота. Пример: `true` + - `client_secret: string` — Секрет клиента. Приходит один раз: при включении серверного клиента, при переходе на него и при ротации секрета. Пример: `"dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA"` **Пример ответа:** @@ -145,6 +232,13 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/bots/1738816" \ { "data": { "id": 1738816, + "name": "Бот задач", + "nickname": "tasks_bot", + "avatar_url": "https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg", + "creator_id": 12, + "created_at": "2025-05-15T14:30:00.000Z", + "authorized_users_count": 3, + "last_used_at": "2025-05-15T14:30:00.000Z", "webhook": { "name": "Бот задач", "nickname": "tasks_bot", @@ -169,8 +263,42 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/bots/1738816" \ "can_edit": [ "admin" ], - "who_can_add": "creator" - } + "who_can_add": "creator", + "kind": "simple", + "unfurl_domains": [ + "example.com" + ], + "last_request_at": "2025-05-15T14:30:00.000Z" + }, + "oauth_client_enabled": true, + "oauth_client": { + "client_id": "aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY", + "client_secret_preview": "cH5kR9mN...x7Qp", + "confidential": true, + "redirect_uris": [ + "https://example.com/oauth/callback" + ], + "scopes": [ + "messages:read", + "messages:create" + ] + }, + "promo": { + "description": "Собирает сводку по задачам Jira и присылает её в чат", + "published": true, + "promo_images": [ + { + "key": "attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png", + "url": "https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png" + } + ] + }, + "permissions": { + "update_oauth_client": true, + "recreate_token": true, + "destroy": true + }, + "client_secret": "dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA" } } ``` @@ -184,7 +312,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/bots/1738816" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -230,7 +358,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/bots/1738816" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -255,15 +383,35 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/bots/1738816" \ **Схема ответа при ошибке:** -- `error: string` (required) — Код ошибки. Пример: `"invalid_token"` -- `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` +**anyOf** - один из вариантов: + +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) + - `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` +- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403) + - `error: string` (required) — Код ошибки. Пример: `"invalid_token"` + - `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` **Пример ответа:** ```json { - "error": "invalid_token", - "error_description": "Access token is missing" + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] } ``` @@ -276,7 +424,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/bots/1738816" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -306,7 +454,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/bots/1738816" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/chats/archive.md b/apps/docs/public/api/chats/archive.md index 82727d4be..01d29acec 100644 --- a/apps/docs/public/api/chats/archive.md +++ b/apps/docs/public/api/chats/archive.md @@ -77,7 +77,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/chats/334/archive" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/chats/create.md b/apps/docs/public/api/chats/create.md index 508092b83..268db1cce 100644 --- a/apps/docs/public/api/chats/create.md +++ b/apps/docs/public/api/chats/create.md @@ -12,9 +12,11 @@ Создаёт беседу или канал. Владелец токена становится владельцем чата, и роль эта в дальнейшем не передаётся. +Мульти-гость, как и в интерфейсе, создавать чаты не может: метод отвечает ему `403`. + Для создания личной переписки 1 на 1 с пользователем пользуйтесь методом [Новое сообщение](/api/messages/create). Чтобы обсудить конкретное сообщение, чат заводить не нужно — под ним заводят тред методом [Новый тред](/api/threads/add). -Участников можно передать сразу: `member_ids` добавляет поимённо, `group_tag_ids` приводит всех, кто состоит в теге, и дальше поддерживает состав сам. Идентификаторы, которых в пространстве нет, а также приостановленные и удалённые сотрудники молча отбрасываются — ответ приходит успешным, а сотрудника в чате не оказывается, поэтому сверяйте состав в ответе. +Участников можно передать сразу: `member_ids` добавляет поимённо, `group_tag_ids` приводит всех, кто состоит в теге, и дальше поддерживает состав сам. Идентификаторы, которых в пространстве нет, а также приостановленные и удалённые сотрудники молча отбрасываются — ответ приходит успешным, а сотрудника в чате не оказывается, поэтому сверяйте состав в ответе. С ботами строже: если настройка бота «Кто может добавлять бота в чаты» не разрешает вам его добавить, чат не создаётся, а метод отвечает `403` с кодом `bot_add_denied` и идентификаторами таких ботов в `value`. ## Тело запроса @@ -128,7 +130,7 @@ curl "https://api.pachca.com/api/shared/v1/chats" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -174,7 +176,7 @@ curl "https://api.pachca.com/api/shared/v1/chats" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -199,15 +201,35 @@ curl "https://api.pachca.com/api/shared/v1/chats" \ **Схема ответа при ошибке:** -- `error: string` (required) — Код ошибки. Пример: `"invalid_token"` -- `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` +**anyOf** - один из вариантов: + +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) + - `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` +- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403) + - `error: string` (required) — Код ошибки. Пример: `"invalid_token"` + - `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` **Пример ответа:** ```json { - "error": "invalid_token", - "error_description": "Access token is missing" + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] } ``` @@ -220,7 +242,7 @@ curl "https://api.pachca.com/api/shared/v1/chats" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/chats/download-export.md b/apps/docs/public/api/chats/download-export.md index 9cb1ad8a7..d4cd4e5f0 100644 --- a/apps/docs/public/api/chats/download-export.md +++ b/apps/docs/public/api/chats/download-export.md @@ -79,7 +79,7 @@ curl "https://api.pachca.com/api/shared/v1/chats/exports/22322" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/chats/get.md b/apps/docs/public/api/chats/get.md index 229f34167..b6a1f947d 100644 --- a/apps/docs/public/api/chats/get.md +++ b/apps/docs/public/api/chats/get.md @@ -102,7 +102,7 @@ curl "https://api.pachca.com/api/shared/v1/chats/334" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -148,7 +148,7 @@ curl "https://api.pachca.com/api/shared/v1/chats/334" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/chats/list-company.md b/apps/docs/public/api/chats/list-company.md index a3e9c3c09..046d1a409 100644 --- a/apps/docs/public/api/chats/list-company.md +++ b/apps/docs/public/api/chats/list-company.md @@ -108,7 +108,7 @@ curl "https://api.pachca.com/api/shared/v1/company/chats?activity=active&limit=1 - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -154,7 +154,7 @@ curl "https://api.pachca.com/api/shared/v1/company/chats?activity=active&limit=1 - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -181,13 +181,13 @@ curl "https://api.pachca.com/api/shared/v1/company/chats?activity=active&limit=1 **anyOf** - один из вариантов: -- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422) +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) - `errors: array of object` (required) — Массив ошибок - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/chats/list.md b/apps/docs/public/api/chats/list.md index a3c260cf3..e7abd5c7e 100644 --- a/apps/docs/public/api/chats/list.md +++ b/apps/docs/public/api/chats/list.md @@ -10,7 +10,7 @@ > **Скоуп:** `chats:read` -По умолчанию — беседы, каналы и личные переписки, где состоит владелец токена. С `availability=public` метод отдаёт вместо этого все открытые чаты пространства, включая те, куда вызывающий не вступал. +По умолчанию — беседы, каналы и личные переписки, где состоит владелец токена. С `availability=public` метод отдаёт вместо этого все открытые чаты пространства, включая те, куда вызывающий не вступал. Мульти-гостю — только открытые чаты, где он участник. Треды в списке не приходят никогда, для них есть [Список тредов](/api/threads/list). @@ -111,7 +111,7 @@ curl "https://api.pachca.com/api/shared/v1/chats?sort=id&order=desc&availability - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -157,7 +157,7 @@ curl "https://api.pachca.com/api/shared/v1/chats?sort=id&order=desc&availability - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -203,7 +203,7 @@ curl "https://api.pachca.com/api/shared/v1/chats?sort=id&order=desc&availability - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/chats/mark-unread.md b/apps/docs/public/api/chats/mark-unread.md new file mode 100644 index 000000000..f4d0a9da7 --- /dev/null +++ b/apps/docs/public/api/chats/mark-unread.md @@ -0,0 +1,200 @@ +> Расположение: Методы API → Чаты +> Краткое содержание: Помечает чат непрочитанным для владельца токена, как «Отметить непрочитанным» в интерфейсе +> Это Markdown-версия конкретной страницы. Для контекста за её пределами (правила API, полный перечень методов, авторизация) ОБЯЗАТЕЛЬНО открой [llms.txt](https://dev.pachca.com/llms.txt) перед ответом — это сэкономит токены и предотвратит неполный ответ. + +# Отметка чата непрочитанным + +**Метод**: `PUT` + +**Путь**: `/chats/{id}/unread` + +> **Скоуп:** `chats:mark_unread` + +Помечает чат непрочитанным для владельца токена, как «Отметить непрочитанным» в интерфейсе. Меняется только его собственный счётчик, остальные участники ничего не замечают. + +Без `message_id` непрочитанным становится последнее сообщение чата, с `message_id` — это сообщение и все после него. Повторный запрос с тем же сообщением ничего не меняет, а в чате без сообщений метод отвечает успехом и ничего не делает. + +Работает в беседах, каналах, личных чатах и тредах, где владелец токена состоит. Скрытый личный чат снова появляется в списке. На чат, где владельца токена нет, и на сообщение из другого чата метод отвечает `404`. + +## Параметры + +### Path параметры + +- `id: integer, int32` (required) — Идентификатор чата или треда + + +## Тело запроса + +**Опционально** + +Формат: `application/json` + +### Схема + +- `message_id: integer, int32` (min: 1) — Идентификатор сообщения, с которого чат становится непрочитанным: оно и все сообщения после него. Если не передать, непрочитанным становится последнее сообщение. Пример: `1194275` + +### Пример + +```json +{ + "message_id": 1194275 +} +``` + +## Пример запроса + +```bash +curl -X PUT "https://api.pachca.com/api/shared/v1/chats/334/unread" \ + -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ + -H "Content-Type: application/json" \ + -d '{ + "message_id": 1194275 +}' +``` + +## Ответы + +### 204: There is no content to send for this request, but the headers may be useful. + +### 400: The server could not understand the request due to invalid syntax. + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + +### 401: Access is unauthorized. + +**Схема ответа при ошибке:** + +- `error: string` (required) — Код ошибки. Пример: `"invalid_token"` +- `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` + +**Пример ответа:** + +```json +{ + "error": "invalid_token", + "error_description": "Access token is missing" +} +``` + +### 402: Client error + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + +### 403: Access is forbidden. + +**Схема ответа при ошибке:** + +**anyOf** - один из вариантов: + +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) + - `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` +- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403) + - `error: string` (required) — Код ошибки. Пример: `"invalid_token"` + - `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + +### 404: The server cannot find the requested resource. + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + diff --git a/apps/docs/public/api/chats/request-export.md b/apps/docs/public/api/chats/request-export.md index d33ab8cf5..d78c0e2e6 100644 --- a/apps/docs/public/api/chats/request-export.md +++ b/apps/docs/public/api/chats/request-export.md @@ -74,7 +74,7 @@ curl "https://api.pachca.com/api/shared/v1/chats/exports" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -117,13 +117,13 @@ curl "https://api.pachca.com/api/shared/v1/chats/exports" \ **anyOf** - один из вариантов: -- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422) +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) - `errors: array of object` (required) — Массив ошибок - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -156,7 +156,7 @@ curl "https://api.pachca.com/api/shared/v1/chats/exports" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/chats/unarchive.md b/apps/docs/public/api/chats/unarchive.md index 135476085..5d76fe273 100644 --- a/apps/docs/public/api/chats/unarchive.md +++ b/apps/docs/public/api/chats/unarchive.md @@ -73,7 +73,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/chats/334/unarchive" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/chats/update.md b/apps/docs/public/api/chats/update.md index 1d71b53ec..abb4a3927 100644 --- a/apps/docs/public/api/chats/update.md +++ b/apps/docs/public/api/chats/update.md @@ -116,7 +116,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/chats/334" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -162,7 +162,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/chats/334" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -208,7 +208,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/chats/334" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -238,7 +238,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/chats/334" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/custom-properties/list.md b/apps/docs/public/api/custom-properties/list.md index ce7d9520a..b659efb4d 100644 --- a/apps/docs/public/api/custom-properties/list.md +++ b/apps/docs/public/api/custom-properties/list.md @@ -66,7 +66,7 @@ curl "https://api.pachca.com/api/shared/v1/custom_properties?entity_type=User" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -112,7 +112,7 @@ curl "https://api.pachca.com/api/shared/v1/custom_properties?entity_type=User" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -158,7 +158,7 @@ curl "https://api.pachca.com/api/shared/v1/custom_properties?entity_type=User" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/drafts/create.md b/apps/docs/public/api/drafts/create.md index ced9d0de9..d4e25bf16 100644 --- a/apps/docs/public/api/drafts/create.md +++ b/apps/docs/public/api/drafts/create.md @@ -43,7 +43,7 @@ - `size: integer, int64` — Размер файла в байтах, отображаемый пользователю. Пример: `12345` - `width: integer, int32` — Ширина изображения в пикселях. Пример: `800` - `height: integer, int32` — Высота изображения в пикселях. Пример: `600` - - `duration_ms: integer, int32` — Длительность в миллисекундах. Обязательна для голосового сообщения (`file_type` — `voice`). Пример: `5400` + - `duration_ms: integer, int32` — Длительность в миллисекундах. Обязательна для голосового сообщения (`file_type` — `voice`). Голосовое сообщение длиннее 30 минут (1 800 000 мс) отклоняется с `422`. Пример: `5400` - `waveform: string` (max length: 256) — Форма волны для визуализации. Обязательна для голосового сообщения (`file_type` — `voice`). Пример: `"4,8,12,20,16,10,6,3"` - `schedule: object` — Расписание отправки. С ним создаётся отложенное сообщение, без него — обычный черновик. - `start_date: date-time` (required) — Первая отправка (ISO-8601). Из неё берутся время суток, число месяца и день недели, по которым дальше строится повтор. Смещение вида `+03:00` учитывается, время без смещения считается UTC. Пример: `"2026-09-17T12:00:00.000Z"` @@ -229,7 +229,7 @@ curl "https://api.pachca.com/api/shared/v1/drafts" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -275,7 +275,7 @@ curl "https://api.pachca.com/api/shared/v1/drafts" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -302,13 +302,13 @@ curl "https://api.pachca.com/api/shared/v1/drafts" \ **anyOf** - один из вариантов: -- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422) +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) - `errors: array of object` (required) — Массив ошибок - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -341,7 +341,7 @@ curl "https://api.pachca.com/api/shared/v1/drafts" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -371,7 +371,7 @@ curl "https://api.pachca.com/api/shared/v1/drafts" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -401,7 +401,7 @@ curl "https://api.pachca.com/api/shared/v1/drafts" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/drafts/delete.md b/apps/docs/public/api/drafts/delete.md index 8803ad5e6..7eb4aeff2 100644 --- a/apps/docs/public/api/drafts/delete.md +++ b/apps/docs/public/api/drafts/delete.md @@ -57,7 +57,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/drafts/4821" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -84,13 +84,13 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/drafts/4821" \ **anyOf** - один из вариантов: -- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422) +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) - `errors: array of object` (required) — Массив ошибок - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -123,7 +123,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/drafts/4821" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/drafts/get.md b/apps/docs/public/api/drafts/get.md index 76c6920f9..ad1fb2ec0 100644 --- a/apps/docs/public/api/drafts/get.md +++ b/apps/docs/public/api/drafts/get.md @@ -138,7 +138,7 @@ curl "https://api.pachca.com/api/shared/v1/drafts/4821" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -165,13 +165,13 @@ curl "https://api.pachca.com/api/shared/v1/drafts/4821" \ **anyOf** - один из вариантов: -- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422) +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) - `errors: array of object` (required) — Массив ошибок - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -204,7 +204,7 @@ curl "https://api.pachca.com/api/shared/v1/drafts/4821" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/drafts/list.md b/apps/docs/public/api/drafts/list.md index cf1c2ef62..46bb6d8fd 100644 --- a/apps/docs/public/api/drafts/list.md +++ b/apps/docs/public/api/drafts/list.md @@ -148,7 +148,7 @@ curl "https://api.pachca.com/api/shared/v1/drafts?type=all&entity_type=discussio - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -194,7 +194,7 @@ curl "https://api.pachca.com/api/shared/v1/drafts?type=all&entity_type=discussio - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -221,13 +221,13 @@ curl "https://api.pachca.com/api/shared/v1/drafts?type=all&entity_type=discussio **anyOf** - один из вариантов: -- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422) +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) - `errors: array of object` (required) — Массив ошибок - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -260,7 +260,7 @@ curl "https://api.pachca.com/api/shared/v1/drafts?type=all&entity_type=discussio - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/drafts/update.md b/apps/docs/public/api/drafts/update.md index d15b44926..aea464984 100644 --- a/apps/docs/public/api/drafts/update.md +++ b/apps/docs/public/api/drafts/update.md @@ -45,7 +45,7 @@ - `size: integer, int64` — Размер файла в байтах, отображаемый пользователю. Пример: `12345` - `width: integer, int32` — Ширина изображения в пикселях. Пример: `800` - `height: integer, int32` — Высота изображения в пикселях. Пример: `600` - - `duration_ms: integer, int32` — Длительность в миллисекундах. Обязательна для голосового сообщения (`file_type` — `voice`). Пример: `5400` + - `duration_ms: integer, int32` — Длительность в миллисекундах. Обязательна для голосового сообщения (`file_type` — `voice`). Голосовое сообщение длиннее 30 минут (1 800 000 мс) отклоняется с `422`. Пример: `5400` - `waveform: string` (max length: 256) — Форма волны для визуализации. Обязательна для голосового сообщения (`file_type` — `voice`). Пример: `"4,8,12,20,16,10,6,3"` - `schedule: object` — Расписание отправки. У обычного черновика оно превращает его в отложенное сообщение. У отложенного расписание можно изменить, но не снять: `null` в ответ даст `422` с кодом `draft_type_change_forbidden`. - `start_date: date-time` (required) — Первая отправка (ISO-8601). Из неё берутся время суток, число месяца и день недели, по которым дальше строится повтор. Смещение вида `+03:00` учитывается, время без смещения считается UTC. Пример: `"2026-09-17T12:00:00.000Z"` @@ -227,7 +227,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/drafts/4821" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -273,7 +273,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/drafts/4821" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -300,13 +300,13 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/drafts/4821" \ **anyOf** - один из вариантов: -- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422) +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) - `errors: array of object` (required) — Массив ошибок - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -339,7 +339,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/drafts/4821" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -369,7 +369,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/drafts/4821" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/errors.md b/apps/docs/public/api/errors.md index aeaaeb040..6ca4ba2ad 100644 --- a/apps/docs/public/api/errors.md +++ b/apps/docs/public/api/errors.md @@ -1,5 +1,5 @@ > Расположение: Основы API -> Краткое содержание: Коды ошибок HTTP в API Пачки и структуры тела ответа: ApiError (400/402/403/404/409/410/422) и OAuthError (401/403) с описанием полей и кодов +> Краткое содержание: Коды ошибок HTTP в API Пачки и структуры тела ответа: ApiError (400/402/403/404/409/410/422/429/503/504) и OAuthError (401/403) с описанием полей и кодов > Это Markdown-версия конкретной страницы. Для контекста за её пределами (правила API, полный перечень методов, авторизация) ОБЯЗАТЕЛЬНО открой [llms.txt](https://dev.pachca.com/llms.txt) перед ответом — это сэкономит токены и предотвратит неполный ответ. @@ -29,14 +29,14 @@ | 410 | Gone | Ресурс больше не доступен (например, истёк срок действия идентификатора события) | | 422 | Unprocessable Entity | С запросом все хорошо, но правила сервиса не позволяют его обработать (например, при попытке создания контакта с уже существующим номером телефона в базе) | | 429 | Too Many Requests | Слишком много запросов слишком быстро попадают в API | -| 500, 502, 503, 504 | Server Errors | Что-то пошло не так на сервере Пачки (это редкость) | +| 500, 502, 503, 504 | Server Errors | Что-то пошло не так на сервере Пачки (это редкость). Исключение — 504 у поиска: запрос не уложился по времени, его стоит сузить | ## Пояснения ошибки В зависимости от типа ошибки вы получите в теле ответа одну из следующих структур: -- **ApiError** — для кодов `400`, `402`, `403`, `404`, `409`, `410`, `422`. Содержит массив `errors` с детальной информацией об ошибках. +- **ApiError** — для кодов `400`, `402`, `403`, `404`, `409`, `410`, `422`, а также `429` при суточном пределе сообщений, `503` и `504`. Содержит массив `errors` с детальной информацией об ошибках. - **OAuthError** — для кодов `401` и `403`. Содержит поля `error` и `error_description` с информацией об ошибке авторизации. > Код `403` может вернуть обе структуры: @@ -44,14 +44,14 @@ > - `OAuthError` с кодом `insufficient_scope`, когда у токена нет нужного скоупа (scope) для вызываемого метода. Такой ответ дополнительно содержит заголовок `WWW-Authenticate` с недостающим скоупом — подробнее в разделе [Авторизация](/api/authorization#oshibki-avtorizatsii). > - `ApiError`, когда бизнес-логика запрещает действие (например, недостаточно прав для управления экспортом). -### ApiError (400, 402, 403, 404, 409, 410, 422) +### ApiError (400, 402, 403, 404, 409, 410, 422, 429, 503, 504) - `errors: array of object` (required) — Массив ошибок - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -65,6 +65,9 @@ > Код `409` возвращается, когда объект с такими данными уже есть: сотрудник с этим адресом почты, тег с этим названием, закрепление у этого сообщения, черновик в этом чате. В `errors[].code` приходит `already_exists`, а в `errors[].key` — конфликтующее поле: например, `email` при повторном адресе почты сотрудника. Если определить поле не удалось, `key` в ошибке не будет. У черновика вдобавок приходит `errors[].payload.draft_id` — номер того, который уже лежит в чате, чтобы дописать его методом [Редактирование черновика](/api/drafts/update). +> Код `504` с `errors[].code` равным `timeout` возвращают методы поиска и [Список сотрудников](/api/users/list) с параметром `query`, когда запрос не уложился по времени. Такой запрос стоит сузить: повтор того же запроса, скорее всего, снова не уложится. + + > Ответ `429 Too Many Requests` приходит в двух видах. Превышение суточного предела сообщений в чат — обычный `ApiError` с кодом `rate_limit`. Превышение лимита на частоту запросов обрабатывается до того, как запрос доходит до метода: тело не `JSON`, а короткий текст с `Content-Type: text/plain`. Разбирайте тело `429` только после проверки `Content-Type`, иначе разбор упадёт. Заголовок `Retry-After` есть в обоих случаях. Подробнее — на странице [Лимиты](/api/limits). diff --git a/apps/docs/public/api/files/get.md b/apps/docs/public/api/files/get.md index 85d8f0eb4..3d6dc5b12 100644 --- a/apps/docs/public/api/files/get.md +++ b/apps/docs/public/api/files/get.md @@ -50,7 +50,7 @@ curl "https://api.pachca.com/api/shared/v1/files/3560?target=thumb" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -96,7 +96,7 @@ curl "https://api.pachca.com/api/shared/v1/files/3560?target=thumb" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -123,13 +123,13 @@ curl "https://api.pachca.com/api/shared/v1/files/3560?target=thumb" \ **anyOf** - один из вариантов: -- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422) +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) - `errors: array of object` (required) — Массив ошибок - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -162,7 +162,7 @@ curl "https://api.pachca.com/api/shared/v1/files/3560?target=thumb" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/files/uploads.md b/apps/docs/public/api/files/uploads.md index e23378e68..d9027ec5d 100644 --- a/apps/docs/public/api/files/uploads.md +++ b/apps/docs/public/api/files/uploads.md @@ -80,7 +80,7 @@ curl -X POST "https://api.pachca.com/api/shared/v1/uploads" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/group-tags/create.md b/apps/docs/public/api/group-tags/create.md index 3ff1d0650..a9bf537ac 100644 --- a/apps/docs/public/api/group-tags/create.md +++ b/apps/docs/public/api/group-tags/create.md @@ -82,7 +82,7 @@ curl "https://api.pachca.com/api/shared/v1/group_tags" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -128,7 +128,7 @@ curl "https://api.pachca.com/api/shared/v1/group_tags" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -174,7 +174,7 @@ curl "https://api.pachca.com/api/shared/v1/group_tags" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -204,7 +204,7 @@ curl "https://api.pachca.com/api/shared/v1/group_tags" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/group-tags/delete.md b/apps/docs/public/api/group-tags/delete.md index d10779b2d..9b5dccd6d 100644 --- a/apps/docs/public/api/group-tags/delete.md +++ b/apps/docs/public/api/group-tags/delete.md @@ -59,7 +59,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/group_tags/9111" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -105,7 +105,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/group_tags/9111" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/group-tags/get.md b/apps/docs/public/api/group-tags/get.md index 8ecb19368..e90c96b96 100644 --- a/apps/docs/public/api/group-tags/get.md +++ b/apps/docs/public/api/group-tags/get.md @@ -14,6 +14,8 @@ В `users_count` считаются только действующие сотрудники: приостановленные в счётчик не попадают, хотя в методе [Список сотрудников тега](/api/group-tags/list-users) остаются. +Мульти-гостю доступны только теги, которые приходят ему в [Список тегов](/api/group-tags/list), а на остальные метод отвечает `404`. + ## Параметры ### Path параметры @@ -76,7 +78,7 @@ curl "https://api.pachca.com/api/shared/v1/group_tags/9111" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -122,7 +124,7 @@ curl "https://api.pachca.com/api/shared/v1/group_tags/9111" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/group-tags/list-users.md b/apps/docs/public/api/group-tags/list-users.md index 603ba74ca..91f160129 100644 --- a/apps/docs/public/api/group-tags/list-users.md +++ b/apps/docs/public/api/group-tags/list-users.md @@ -14,6 +14,8 @@ Состав тега меняют в карточке сотрудника — [Редактирование сотрудника](/api/users/update) с полем `list_tags`, по одному сотруднику за раз. +Мульти-гостю метод отвечает `403`: список сотрудников пространства ему закрыт, как и в интерфейсе. + ## Параметры ### Path параметры @@ -45,8 +47,8 @@ curl "https://api.pachca.com/api/shared/v1/group_tags/9111/users?limit=1" \ - `first_name: string` (required, nullable, max length: 255) — Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`). Пример: `"Олег"` - `last_name: string` (required, nullable, max length: 255) — Фамилия. Если не заполнена, возвращается `null` или пустая строка. Пример: `"Петров"` - `nickname: string` (required, max length: 255) — Имя пользователя. Пример: `"olegpetrov"` - - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `"olegp@example.com"` - - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `"+79001234567"` + - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `"olegp@example.com"` + - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `"+79001234567"` - `department: string` (required, nullable, max length: 255) — Департамент. Если не указан, возвращается `null` или пустая строка. Пример: `"Продукт"` - `title: string` (required, nullable) — Должность. Если не указана, возвращается `null` или пустая строка. Пример: `"CIO"` - `role: string` (required) — Уровень доступа @@ -55,7 +57,7 @@ curl "https://api.pachca.com/api/shared/v1/group_tags/9111/users?limit=1" \ - `invite_status: string` (required) — Статус приглашения Значения: `confirmed` — Принято, `sent` — Отправлено - `inviter_id: integer, int32` (required, nullable) — Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён. Пример: `185` - - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Пример: `["Product","Design"]` + - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Мульти-гостю в чужой карточке приходит пустым. Пример: `["Product","Design"]` - `custom_properties: array of object` (required) — Дополнительные поля сотрудника - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678` - `name: string` (required, max length: 32) — Название поля. Пример: `"Город"` @@ -149,7 +151,7 @@ curl "https://api.pachca.com/api/shared/v1/group_tags/9111/users?limit=1" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -195,7 +197,7 @@ curl "https://api.pachca.com/api/shared/v1/group_tags/9111/users?limit=1" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -241,7 +243,7 @@ curl "https://api.pachca.com/api/shared/v1/group_tags/9111/users?limit=1" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -271,7 +273,7 @@ curl "https://api.pachca.com/api/shared/v1/group_tags/9111/users?limit=1" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/group-tags/list.md b/apps/docs/public/api/group-tags/list.md index b4e769f61..157bea667 100644 --- a/apps/docs/public/api/group-tags/list.md +++ b/apps/docs/public/api/group-tags/list.md @@ -1,5 +1,5 @@ > Расположение: Методы API → Теги -> Краткое содержание: Все теги пространства с числом сотрудников в каждом +> Краткое содержание: Все теги пространства с числом сотрудников в каждом, независимо от того, к каким чатам они привязаны > Это Markdown-версия конкретной страницы. Для контекста за её пределами (правила API, полный перечень методов, авторизация) ОБЯЗАТЕЛЬНО открой [llms.txt](https://dev.pachca.com/llms.txt) перед ответом — это сэкономит токены и предотвратит неполный ответ. # Список тегов @@ -10,9 +10,9 @@ > **Скоуп:** `group_tags:read` -Все теги пространства с числом сотрудников в каждом. Видны они одинаково всем ролям, независимо от того, к каким чатам привязаны. +Все теги пространства с числом сотрудников в каждом, независимо от того, к каким чатам они привязаны. Мульти-гостю приходят только теги активных бесед и каналов, где он участник. -Параметр `names` ищет теги по названиям — это способ получить `id` по имени, известному из интерфейса. За один запрос он принимает не больше 100 имён. +Параметр `names` ищет теги по названиям — это способ получить `id` по имени, известному из интерфейса. За один запрос он принимает не больше 100 имён, на большее число метод отвечает `400` с кодом `too_long`. Кто состоит в конкретном теге, отдаёт [Список сотрудников тега](/api/group-tags/list-users). @@ -81,7 +81,7 @@ curl "https://api.pachca.com/api/shared/v1/group_tags?names[]=Design&names[]=Pro - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -127,7 +127,7 @@ curl "https://api.pachca.com/api/shared/v1/group_tags?names[]=Design&names[]=Pro - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -173,7 +173,7 @@ curl "https://api.pachca.com/api/shared/v1/group_tags?names[]=Design&names[]=Pro - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/group-tags/update.md b/apps/docs/public/api/group-tags/update.md index 9826b29ad..397117cbd 100644 --- a/apps/docs/public/api/group-tags/update.md +++ b/apps/docs/public/api/group-tags/update.md @@ -87,7 +87,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/group_tags/9111" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -133,7 +133,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/group_tags/9111" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -179,7 +179,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/group_tags/9111" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -209,7 +209,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/group_tags/9111" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -239,7 +239,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/group_tags/9111" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/llms.txt b/apps/docs/public/api/llms.txt index 81fbb0c44..5b0b2ddce 100644 --- a/apps/docs/public/api/llms.txt +++ b/apps/docs/public/api/llms.txt @@ -10,7 +10,7 @@ - [Запросы и ответы](https://dev.pachca.com/api/requests-responses.md): Формат запросов и ответов API Пачки: базовый URL, заголовки Authorization и Content-Type, структура JSON-тела, коллекции Postman и Bruno для тестирования - [Пагинация](https://dev.pachca.com/api/pagination.md): Пагинация в API Пачки по курсору: две группы методов (списочные и поиск) с разной структурой meta, поля next_page, prev_page, has_next, has_prev, обход всех записей и polling новых данных через prev_page - [Загрузка файлов](https://dev.pachca.com/api/file-uploads.md): Файлы в API Пачки: трёхшаговая загрузка через presigned URL S3, типы вложений и их поля, ссылка на скачивание и когда она ведёт не в хранилище, а на адрес API -- [Ошибки](https://dev.pachca.com/api/errors.md): Коды ошибок HTTP в API Пачки и структуры тела ответа: ApiError (400/402/403/404/409/410/422) и OAuthError (401/403) с описанием полей и кодов +- [Ошибки](https://dev.pachca.com/api/errors.md): Коды ошибок HTTP в API Пачки и структуры тела ответа: ApiError (400/402/403/404/409/410/422/429/503/504) и OAuthError (401/403) с описанием полей и кодов - [Лимиты](https://dev.pachca.com/api/limits.md): Лимиты запросов (rate limits) в API Пачки: числа по типам операций, поведение ответа 429, заголовок Retry-After, готовые примеры экспоненциального backoff на TypeScript и Python - [Модели](https://dev.pachca.com/api/models.md): Справочник моделей данных Pachca API: свойства и методы, возвращающие каждый объект — сотрудники, чаты, сообщения, черновики, задачи, теги, вебхуки и другие сущности @@ -26,6 +26,7 @@ - [Редактирование чата](https://dev.pachca.com/api/chats/update.md): PUT /chats/{id} - [Архивация чата](https://dev.pachca.com/api/chats/archive.md): PUT /chats/{id}/archive - [Разархивация чата](https://dev.pachca.com/api/chats/unarchive.md): PUT /chats/{id}/unarchive +- [Отметка чата непрочитанным](https://dev.pachca.com/api/chats/mark-unread.md): PUT /chats/{id}/unread - [Список чатов пространства](https://dev.pachca.com/api/chats/list-company.md): GET /company/chats ## Profile @@ -121,6 +122,13 @@ - [Редактирование бота](https://dev.pachca.com/api/bots/update.md): PUT /bots/{id} - [Удаление бота](https://dev.pachca.com/api/bots/delete.md): DELETE /bots/{id} - [Ротация токена бота](https://dev.pachca.com/api/bots/recreate-token.md): POST /bots/{id}/recreate_token +- [Ротация секрета клиента](https://dev.pachca.com/api/bots/rotate-client-secret.md): POST /bots/{id}/rotate_client_secret +- [Каталог прав бота](https://dev.pachca.com/api/bots/list-scopes.md): GET /bots/{id}/scopes +- [Список токенов бота](https://dev.pachca.com/api/bots/list-tokens.md): GET /bots/{id}/tokens +- [Новый токен бота](https://dev.pachca.com/api/bots/create-token.md): POST /bots/{id}/tokens +- [Изменение токена бота](https://dev.pachca.com/api/bots/update-token.md): PUT /bots/{id}/tokens/{token_id} +- [Удаление токена бота](https://dev.pachca.com/api/bots/delete-token.md): DELETE /bots/{id}/tokens/{token_id} +- [Перевыпуск токена бота](https://dev.pachca.com/api/bots/reissue-token.md): POST /bots/{id}/tokens/{token_id}/reissue - [Список ботов пространства](https://dev.pachca.com/api/bots/list-company.md): GET /company/bots - [История событий](https://dev.pachca.com/api/bots/list-events.md): GET /webhooks/events - [Удаление события](https://dev.pachca.com/api/bots/remove-event.md): DELETE /webhooks/events/{id} diff --git a/apps/docs/public/api/members/add-group-tags.md b/apps/docs/public/api/members/add-group-tags.md index eb73e17c0..2931a1ae5 100644 --- a/apps/docs/public/api/members/add-group-tags.md +++ b/apps/docs/public/api/members/add-group-tags.md @@ -73,7 +73,7 @@ curl "https://api.pachca.com/api/shared/v1/chats/334/group_tags" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -135,7 +135,7 @@ curl "https://api.pachca.com/api/shared/v1/chats/334/group_tags" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -165,7 +165,7 @@ curl "https://api.pachca.com/api/shared/v1/chats/334/group_tags" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/members/add.md b/apps/docs/public/api/members/add.md index 0554663c2..a8f166f46 100644 --- a/apps/docs/public/api/members/add.md +++ b/apps/docs/public/api/members/add.md @@ -16,6 +16,8 @@ Тех, кто уже состоит в чате, метод пропускает молча и ошибкой это не считает. А вот неизвестный или неактивный идентификатор останавливает весь запрос: метод отвечает `404` и перечисляет такие значения, никто при этом не добавляется. +Бота добавляет только тот, кому это разрешает настройка бота «Кто может добавлять бота в чаты» — подробнее в разделе [Настройки бота](/guides/bots/settings#kto-mozhet-dobavlyat-bota-v-chaty). Если в `member_ids` есть бот, которого вам добавлять нельзя, метод не добавляет никого и отвечает `403` с кодом `bot_add_denied` и идентификаторами таких ботов в `value`. Если в том же запросе есть и неизвестный идентификатор, ответ — `404` с обеими ошибками. + Добавить сразу целый отдел удобнее тегом — [Добавление тегов](/api/members/add-group-tags): тогда состав чата поддерживается сам. ## Параметры @@ -76,7 +78,7 @@ curl "https://api.pachca.com/api/shared/v1/chats/334/members" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -117,15 +119,35 @@ curl "https://api.pachca.com/api/shared/v1/chats/334/members" \ **Схема ответа при ошибке:** -- `error: string` (required) — Код ошибки. Пример: `"invalid_token"` -- `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` +**anyOf** - один из вариантов: + +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) + - `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` +- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403) + - `error: string` (required) — Код ошибки. Пример: `"invalid_token"` + - `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` **Пример ответа:** ```json { - "error": "invalid_token", - "error_description": "Access token is missing" + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] } ``` @@ -138,7 +160,7 @@ curl "https://api.pachca.com/api/shared/v1/chats/334/members" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -168,7 +190,7 @@ curl "https://api.pachca.com/api/shared/v1/chats/334/members" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/members/leave.md b/apps/docs/public/api/members/leave.md index 6cddbe075..d8b58eadb 100644 --- a/apps/docs/public/api/members/leave.md +++ b/apps/docs/public/api/members/leave.md @@ -43,7 +43,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/chats/334/leave" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -105,7 +105,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/chats/334/leave" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -135,7 +135,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/chats/334/leave" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/members/list.md b/apps/docs/public/api/members/list.md index 5896d2eda..c29e2e06b 100644 --- a/apps/docs/public/api/members/list.md +++ b/apps/docs/public/api/members/list.md @@ -48,8 +48,8 @@ curl "https://api.pachca.com/api/shared/v1/chats/334/members?role=all&limit=1" \ - `first_name: string` (required, nullable, max length: 255) — Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`). Пример: `"Олег"` - `last_name: string` (required, nullable, max length: 255) — Фамилия. Если не заполнена, возвращается `null` или пустая строка. Пример: `"Петров"` - `nickname: string` (required, max length: 255) — Имя пользователя. Пример: `"olegpetrov"` - - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `"olegp@example.com"` - - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `"+79001234567"` + - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `"olegp@example.com"` + - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `"+79001234567"` - `department: string` (required, nullable, max length: 255) — Департамент. Если не указан, возвращается `null` или пустая строка. Пример: `"Продукт"` - `title: string` (required, nullable) — Должность. Если не указана, возвращается `null` или пустая строка. Пример: `"CIO"` - `role: string` (required) — Уровень доступа @@ -58,7 +58,7 @@ curl "https://api.pachca.com/api/shared/v1/chats/334/members?role=all&limit=1" \ - `invite_status: string` (required) — Статус приглашения Значения: `confirmed` — Принято, `sent` — Отправлено - `inviter_id: integer, int32` (required, nullable) — Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён. Пример: `185` - - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Пример: `["Product","Design"]` + - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Мульти-гостю в чужой карточке приходит пустым. Пример: `["Product","Design"]` - `custom_properties: array of object` (required) — Дополнительные поля сотрудника - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678` - `name: string` (required, max length: 32) — Название поля. Пример: `"Город"` @@ -152,7 +152,7 @@ curl "https://api.pachca.com/api/shared/v1/chats/334/members?role=all&limit=1" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -214,7 +214,7 @@ curl "https://api.pachca.com/api/shared/v1/chats/334/members?role=all&limit=1" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -244,7 +244,7 @@ curl "https://api.pachca.com/api/shared/v1/chats/334/members?role=all&limit=1" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/members/remove-group-tag.md b/apps/docs/public/api/members/remove-group-tag.md index 72d32567d..86d8842cf 100644 --- a/apps/docs/public/api/members/remove-group-tag.md +++ b/apps/docs/public/api/members/remove-group-tag.md @@ -76,7 +76,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/chats/334/group_tags/86" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/members/remove.md b/apps/docs/public/api/members/remove.md index a9d535369..0afffdfcb 100644 --- a/apps/docs/public/api/members/remove.md +++ b/apps/docs/public/api/members/remove.md @@ -76,7 +76,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/chats/334/members/186" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/members/update.md b/apps/docs/public/api/members/update.md index 6bc41246c..61cb5c9b6 100644 --- a/apps/docs/public/api/members/update.md +++ b/apps/docs/public/api/members/update.md @@ -67,7 +67,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/chats/334/members/186" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -129,7 +129,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/chats/334/members/186" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -159,7 +159,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/chats/334/members/186" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/messages/create.md b/apps/docs/public/api/messages/create.md index eb6c20ff3..3e82de8fa 100644 --- a/apps/docs/public/api/messages/create.md +++ b/apps/docs/public/api/messages/create.md @@ -16,6 +16,8 @@ Личный чат для этого создавать не требуется: он появится сам, если между вами ещё не было переписки. Между двумя сотрудниками может быть только один личный чат. Со своим собственным идентификатором сообщение уйдёт в чат с самим собой — туда же, куда сотрудник пишет заметки себе. +Чтобы ответить на конкретное сообщение с цитатой, передайте его идентификатор в `parent_message_id`. Так отвечают в любом чате, в том числе в треде: ответ отправляют в тот же чат или тред, где лежит исходное сообщение. + Текст в поле `content` разбирается как markdown: жирный, курсив, зачёркнутый, строчный код, блок кода и ссылки. Списки и таблицы не разбираются — `-`, `1.` и `|` остаются как есть, у цитаты пропадает `>`, а строка с решёткой и пробелом становится жирной. Подробности — в разделе [Форматирование текста](/guides/markdown). `@all` упоминает всех участников чата, `@here` — тех, кто сейчас в сети, а `@` с названием тега без пробелов — сотрудников этого тега. В треде упоминание работает ещё и как приглашение: упомянутого сотрудника, которого в треде нет, Пачка туда добавляет, и он получает доступ к треду и родительскому сообщению. Чтобы этого не происходило, передайте `skip_invite_mentions: true`. В беседе и канале упоминание никого не добавляет, и этот параметр там ничего не меняет. @@ -40,7 +42,7 @@ - `entity_type: string` — Тип сущности. Регистр значения не учитывается. Значение вне списка возвращает `400` с кодом `invalid`. Значения: `discussion` — Беседа или канал, `thread` — Тред, `user` — Пользователь - `entity_id: integer, int32` (required) — Идентификатор того, что названо в `entity_type`: беседы или канала, треда либо сотрудника. Пример: `334` - - `content: string` (required) — Текст сообщения. Поддерживает упоминания: `@nickname` или `<@user_id>` (будет автоматически преобразовано в `@nickname`). Пример: `"Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)"` + - `content: string` (required) — Текст сообщения. Поддерживает упоминания: `@nickname` или `<@user_id>` (будет автоматически преобразовано в `@nickname`). У мульти-гостя `<@user_id>` недоступного ему сотрудника остаётся в тексте как есть. Пример: `"Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)"` - `files: array of object` — Прикрепляемые файлы - `key: string` (required, max length: 1000) — Путь к файлу, полученный в методе [Загрузка файла](/api/files/direct-url). Пример: `"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png"` - `name: string` (required, max length: 255) — Название файла, которое вы хотите отображать пользователю. Расширение должно совпадать с расширением файла в `key`, иначе ответ будет 422 с кодом `wrong_params`. Пример: `"logo.png"` @@ -49,10 +51,10 @@ - `size: integer, int64` (required) — Размер файла в байтах, отображаемый пользователю. Пример: `12345` - `width: integer, int32` — Ширина изображения в px (используется в случае, если file_type указан как image). Пример: `800` - `height: integer, int32` — Высота изображения в px (используется в случае, если file_type указан как image). Пример: `600` - - `duration_ms: integer, int32` (min: 1) — Длительность в миллисекундах. Обязательно для голосовых сообщений (`file_type` — `voice`), для других типов не используется. Пример: `5400` + - `duration_ms: integer, int32` (min: 1) — Длительность в миллисекундах. Обязательно для голосовых сообщений (`file_type` — `voice`), для других типов не используется. Голосовое сообщение длиннее 30 минут (1 800 000 мс) отклоняется с `422`. Пример: `5400` - `waveform: string` (max length: 256) — Форма волны для визуализации голосового сообщения. Обязательно для голосовых сообщений (`file_type` — `voice`), для других типов не используется. Пример: `"4,8,12,20,16,10,6,3"` - `buttons: array of array` (max items: 32) — Массив строк, каждая из которых представлена массивом кнопок. Максимум 100 кнопок у сообщения, до 8 кнопок в строке. Пример: `[[{"text":"Подробнее","url":"https://example.com/details"},{"text":"Отлично!","data":"awesome"}]]` - - `parent_message_id: integer, int32` — Идентификатор сообщения, на которое отвечаете. Ответ появится прямо в ленте чата, а не в треде: для треда отправляйте сообщение с `entity_type: "thread"`. Пример: `194270` + - `parent_message_id: integer, int32` — Идентификатор сообщения, на которое вы отвечаете с цитатой. Ответить можно на сообщение в любом чате, в том числе в треде: ответ отправляют в тот же чат или тред, где лежит это сообщение, иначе запрос вернёт ошибку `422`. Чтобы написать в тред под сообщением, укажите `entity_type: "thread"` и идентификатор треда в `entity_id`. Пример: `194270` - `display_avatar_url: string` (max length: 255) — Ссылка на специальную аватарку отправителя для этого сообщения. Использование этого поля возможно только с access_token бота. Пример: `"https://example.com/avatar.png"` - `display_name: string` (max length: 255) — Полное специальное имя отправителя для этого сообщения. Использование этого поля возможно только с access_token бота. Пример: `"Бот Поддержки"` - `skip_invite_mentions: boolean` (default: false) — Пропуск добавления упоминаемых пользователей в тред. Работает только при отправке сообщения в тред. Пример: `false` @@ -170,8 +172,8 @@ curl "https://api.pachca.com/api/shared/v1/messages" \ - `transcript: string` (required, nullable) — Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна. Пример: `"Привет, посмотри пожалуйста последний отчёт"` - `buttons: array of array` (required, nullable) — Массив строк, каждая из которых представлена массивом кнопок. `null`, если сообщение отправлено без кнопок. - `thread: object` (required, nullable) — Тред, созданный к этому сообщению. `null`, если тред не создан, а также у сообщений, которые сами находятся внутри треда. - - `id: integer, int64` (required) — Идентификатор треда. Пример: `265142` - - `chat_id: integer, int64` (required) — Идентификатор чата треда. Пример: `2637266155` + - `id: integer, int64` (required) — Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](/api/messages/create) с `entity_type: "thread"`. Пример: `265142` + - `chat_id: integer, int64` (required) — Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](/api/messages/list). Пример: `2637266155` - `forwarding: object` (required) — Информация о пересланном сообщении. `null`, если сообщение не является пересланным. - `original_message_id: integer, int32` (required) — Идентификатор оригинального сообщения. Пример: `194275` - `original_chat_id: integer, int32` (required) — Идентификатор чата, в котором находится оригинальное сообщение. Пример: `334` @@ -257,7 +259,7 @@ curl "https://api.pachca.com/api/shared/v1/messages" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -303,7 +305,7 @@ curl "https://api.pachca.com/api/shared/v1/messages" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -349,7 +351,7 @@ curl "https://api.pachca.com/api/shared/v1/messages" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -379,7 +381,7 @@ curl "https://api.pachca.com/api/shared/v1/messages" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/messages/delete.md b/apps/docs/public/api/messages/delete.md index 8ef120490..39a477905 100644 --- a/apps/docs/public/api/messages/delete.md +++ b/apps/docs/public/api/messages/delete.md @@ -59,7 +59,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/messages/194275" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -105,7 +105,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/messages/194275" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/messages/get.md b/apps/docs/public/api/messages/get.md index acefd77ea..80fe641f8 100644 --- a/apps/docs/public/api/messages/get.md +++ b/apps/docs/public/api/messages/get.md @@ -63,8 +63,8 @@ curl "https://api.pachca.com/api/shared/v1/messages/194275" \ - `transcript: string` (required, nullable) — Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна. Пример: `"Привет, посмотри пожалуйста последний отчёт"` - `buttons: array of array` (required, nullable) — Массив строк, каждая из которых представлена массивом кнопок. `null`, если сообщение отправлено без кнопок. - `thread: object` (required, nullable) — Тред, созданный к этому сообщению. `null`, если тред не создан, а также у сообщений, которые сами находятся внутри треда. - - `id: integer, int64` (required) — Идентификатор треда. Пример: `265142` - - `chat_id: integer, int64` (required) — Идентификатор чата треда. Пример: `2637266155` + - `id: integer, int64` (required) — Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](/api/messages/create) с `entity_type: "thread"`. Пример: `265142` + - `chat_id: integer, int64` (required) — Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](/api/messages/list). Пример: `2637266155` - `forwarding: object` (required) — Информация о пересланном сообщении. `null`, если сообщение не является пересланным. - `original_message_id: integer, int32` (required) — Идентификатор оригинального сообщения. Пример: `194275` - `original_chat_id: integer, int32` (required) — Идентификатор чата, в котором находится оригинальное сообщение. Пример: `334` @@ -166,7 +166,7 @@ curl "https://api.pachca.com/api/shared/v1/messages/194275" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -212,7 +212,7 @@ curl "https://api.pachca.com/api/shared/v1/messages/194275" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/messages/list.md b/apps/docs/public/api/messages/list.md index c56ccf04d..74e243c4b 100644 --- a/apps/docs/public/api/messages/list.md +++ b/apps/docs/public/api/messages/list.md @@ -16,7 +16,7 @@ Удалённые сообщения в список не попадают. -Сообщения треда отдаются по `chat_id` самого треда, а не по чату, где висит родительское сообщение. Идентификатор треда приходит в поле `thread` родительского сообщения. +Сообщения треда отдаются по `chat_id` самого треда, а не по чату, где висит родительское сообщение. Этот `chat_id` приходит в поле `thread.chat_id` родительского сообщения. ## Параметры @@ -70,8 +70,8 @@ curl "https://api.pachca.com/api/shared/v1/messages?chat_id=198&sort=id&order=de - `transcript: string` (required, nullable) — Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна. Пример: `"Привет, посмотри пожалуйста последний отчёт"` - `buttons: array of array` (required, nullable) — Массив строк, каждая из которых представлена массивом кнопок. `null`, если сообщение отправлено без кнопок. - `thread: object` (required, nullable) — Тред, созданный к этому сообщению. `null`, если тред не создан, а также у сообщений, которые сами находятся внутри треда. - - `id: integer, int64` (required) — Идентификатор треда. Пример: `265142` - - `chat_id: integer, int64` (required) — Идентификатор чата треда. Пример: `2637266155` + - `id: integer, int64` (required) — Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](/api/messages/create) с `entity_type: "thread"`. Пример: `265142` + - `chat_id: integer, int64` (required) — Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](/api/messages/list). Пример: `2637266155` - `forwarding: object` (required) — Информация о пересланном сообщении. `null`, если сообщение не является пересланным. - `original_message_id: integer, int32` (required) — Идентификатор оригинального сообщения. Пример: `194275` - `original_chat_id: integer, int32` (required) — Идентификатор чата, в котором находится оригинальное сообщение. Пример: `334` @@ -171,7 +171,7 @@ curl "https://api.pachca.com/api/shared/v1/messages?chat_id=198&sort=id&order=de - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -217,7 +217,7 @@ curl "https://api.pachca.com/api/shared/v1/messages?chat_id=198&sort=id&order=de - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -263,7 +263,7 @@ curl "https://api.pachca.com/api/shared/v1/messages?chat_id=198&sort=id&order=de - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -293,7 +293,7 @@ curl "https://api.pachca.com/api/shared/v1/messages?chat_id=198&sort=id&order=de - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/messages/pin.md b/apps/docs/public/api/messages/pin.md index ab9260549..b46dbe417 100644 --- a/apps/docs/public/api/messages/pin.md +++ b/apps/docs/public/api/messages/pin.md @@ -73,7 +73,7 @@ curl -X POST "https://api.pachca.com/api/shared/v1/messages/194275/pin" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -103,7 +103,7 @@ curl -X POST "https://api.pachca.com/api/shared/v1/messages/194275/pin" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/messages/unfurl.md b/apps/docs/public/api/messages/unfurl.md index 257152f21..6384ffbfe 100644 --- a/apps/docs/public/api/messages/unfurl.md +++ b/apps/docs/public/api/messages/unfurl.md @@ -95,7 +95,7 @@ curl "https://api.pachca.com/api/shared/v1/messages/194275/link_previews" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -157,7 +157,7 @@ curl "https://api.pachca.com/api/shared/v1/messages/194275/link_previews" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -187,7 +187,7 @@ curl "https://api.pachca.com/api/shared/v1/messages/194275/link_previews" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/messages/unpin.md b/apps/docs/public/api/messages/unpin.md index 8f65383dc..1f2934fd8 100644 --- a/apps/docs/public/api/messages/unpin.md +++ b/apps/docs/public/api/messages/unpin.md @@ -71,7 +71,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/messages/194275/pin" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/messages/update.md b/apps/docs/public/api/messages/update.md index e5b750960..d4bea3eef 100644 --- a/apps/docs/public/api/messages/update.md +++ b/apps/docs/public/api/messages/update.md @@ -32,7 +32,7 @@ ### Схема - `message: object` (required) — Собранный объект параметров редактируемого сообщения - - `content: string` — Текст сообщения. Поддерживает упоминания: `@nickname` или `<@user_id>` (будет автоматически преобразовано в `@nickname`). Пример: `"Вот попробуйте написать правильно это с первого раза: Будущий, Полощи, Прийти, Грейпфрут, Мозаика, Бюллетень, Дуршлаг, Винегрет."` + - `content: string` — Текст сообщения. Поддерживает упоминания: `@nickname` или `<@user_id>` (будет автоматически преобразовано в `@nickname`). У мульти-гостя `<@user_id>` недоступного ему сотрудника остаётся в тексте как есть. Пример: `"Вот попробуйте написать правильно это с первого раза: Будущий, Полощи, Прийти, Грейпфрут, Мозаика, Бюллетень, Дуршлаг, Винегрет."` - `files: array of object` — Прикрепляемые файлы - `key: string` (required, max length: 1000) — Путь к файлу, полученный в методе [Загрузка файла](/api/files/direct-url). Пример: `"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png"` - `name: string` (required, max length: 255) — Название файла, которое вы хотите отображать пользователю. Расширение должно совпадать с расширением файла в `key`, иначе ответ будет 422 с кодом `wrong_params`. Пример: `"logo.png"` @@ -41,7 +41,7 @@ - `size: integer, int64` — Размер файла в байтах, отображаемый пользователю. Пример: `12345` - `width: integer, int32` — Ширина изображения в px (используется в случае, если file_type указан как image). Пример: `800` - `height: integer, int32` — Высота изображения в px (используется в случае, если file_type указан как image). Пример: `600` - - `duration_ms: integer, int32` (min: 1) — Длительность в миллисекундах. Обязательно для голосовых сообщений (`file_type` — `voice`), для других типов не используется. Пример: `5400` + - `duration_ms: integer, int32` (min: 1) — Длительность в миллисекундах. Обязательно для голосовых сообщений (`file_type` — `voice`), для других типов не используется. Голосовое сообщение длиннее 30 минут (1 800 000 мс) отклоняется с `422`. Пример: `5400` - `waveform: string` (max length: 256) — Форма волны для визуализации голосового сообщения. Без неё запрос с голосовым файлом (`file_type` — `voice`) не пройдёт проверку, но при редактировании присланное значение не сохраняется. Для других типов не используется. Пример: `"4,8,12,20,16,10,6,3"` - `buttons: array of array` (max items: 32) — Массив строк, каждая из которых представлена массивом кнопок. Максимум 100 кнопок у сообщения, до 8 кнопок в строке. Для удаления кнопок пришлите пустой массив. Пример: `[[{"text":"Подробнее","url":"https://example.com/details"}]]` - `display_avatar_url: string` — Ссылка на специальную аватарку отправителя для этого сообщения. Использование этого поля возможно только с access_token бота. Пример: `"https://example.com/avatar.png"` @@ -147,8 +147,8 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/messages/194275" \ - `transcript: string` (required, nullable) — Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна. Пример: `"Привет, посмотри пожалуйста последний отчёт"` - `buttons: array of array` (required, nullable) — Массив строк, каждая из которых представлена массивом кнопок. `null`, если сообщение отправлено без кнопок. - `thread: object` (required, nullable) — Тред, созданный к этому сообщению. `null`, если тред не создан, а также у сообщений, которые сами находятся внутри треда. - - `id: integer, int64` (required) — Идентификатор треда. Пример: `265142` - - `chat_id: integer, int64` (required) — Идентификатор чата треда. Пример: `2637266155` + - `id: integer, int64` (required) — Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](/api/messages/create) с `entity_type: "thread"`. Пример: `265142` + - `chat_id: integer, int64` (required) — Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](/api/messages/list). Пример: `2637266155` - `forwarding: object` (required) — Информация о пересланном сообщении. `null`, если сообщение не является пересланным. - `original_message_id: integer, int32` (required) — Идентификатор оригинального сообщения. Пример: `194275` - `original_chat_id: integer, int32` (required) — Идентификатор чата, в котором находится оригинальное сообщение. Пример: `334` @@ -234,7 +234,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/messages/194275" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -280,7 +280,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/messages/194275" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -326,7 +326,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/messages/194275" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -356,7 +356,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/messages/194275" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/models.md b/apps/docs/public/api/models.md index cd5da5589..078cd1ed4 100644 --- a/apps/docs/public/api/models.md +++ b/apps/docs/public/api/models.md @@ -88,8 +88,8 @@ - `first_name: string` (required, nullable, max length: 255) — Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`). Пример: `"Олег"` - `last_name: string` (required, nullable, max length: 255) — Фамилия. Если не заполнена, возвращается `null` или пустая строка. Пример: `"Петров"` - `nickname: string` (required, max length: 255) — Имя пользователя. Пример: `"olegpetrov"` -- `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `"olegp@example.com"` -- `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `"+79001234567"` +- `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `"olegp@example.com"` +- `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `"+79001234567"` - `department: string` (required, nullable, max length: 255) — Департамент. Если не указан, возвращается `null` или пустая строка. Пример: `"Продукт"` - `title: string` (required, nullable) — Должность. Если не указана, возвращается `null` или пустая строка. Пример: `"CIO"` - `role: string` (required) — Уровень доступа @@ -98,7 +98,7 @@ - `invite_status: string` (required) — Статус приглашения Значения: `confirmed` — Принято, `sent` — Отправлено - `inviter_id: integer, int32` (required, nullable) — Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён. Пример: `185` -- `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Пример: `["Product","Design"]` +- `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Мульти-гостю в чужой карточке приходит пустым. Пример: `["Product","Design"]` - `custom_properties: array of object` (required) — Дополнительные поля сотрудника - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678` - `name: string` (required, max length: 32) — Название поля. Пример: `"Город"` @@ -150,6 +150,7 @@ - [Редактирование чата](/api/chats/update) - [Архивация чата](/api/chats/archive) - [Разархивация чата](/api/chats/unarchive) +- [Отметка чата непрочитанным](/api/chats/mark-unread) - [Редактирование роли](/api/members/update) - [Выход из чата](/api/members/leave) - [Исключение пользователя](/api/members/remove) @@ -179,8 +180,8 @@ Тред -- `id: integer, int64` (required) — Идентификатор созданного треда (в тред пишут методом [Новое сообщение](/api/messages/create)). Пример: `265142` -- `chat_id: integer, int64` (required) — Идентификатор чата треда (по нему пишут в тред методом [Новое сообщение](/api/messages/create) и читают его методом [Список сообщений чата](/api/messages/list)). Пример: `2637266155` +- `id: integer, int64` (required) — Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](/api/messages/create) с `entity_type: "thread"`. Пример: `265142` +- `chat_id: integer, int64` (required) — Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](/api/messages/list) и работают с его участниками. Пример: `2637266155` - `message_id: integer, int64` (required, nullable) — Идентификатор сообщения, к которому был создан тред. `null` для самостоятельного треда, созданного без привязки к сообщению. Пример: `154332686` - `message_chat_id: integer, int64` (required, nullable) — Идентификатор чата сообщения. `null` для самостоятельного треда, созданного без привязки к сообщению. Пример: `2637266154` - `updated_at: date-time` (required) — Дата и время обновления треда (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2023-02-01T19:20:47.204Z"` @@ -227,8 +228,8 @@ - `transcript: string` (required, nullable) — Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна. Пример: `"Привет, посмотри пожалуйста последний отчёт"` - `buttons: array of array` (required, nullable) — Массив строк, каждая из которых представлена массивом кнопок. `null`, если сообщение отправлено без кнопок. - `thread: object` (required, nullable) — Тред, созданный к этому сообщению. `null`, если тред не создан, а также у сообщений, которые сами находятся внутри треда. - - `id: integer, int64` (required) — Идентификатор треда. Пример: `265142` - - `chat_id: integer, int64` (required) — Идентификатор чата треда. Пример: `2637266155` + - `id: integer, int64` (required) — Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](/api/messages/create) с `entity_type: "thread"`. Пример: `265142` + - `chat_id: integer, int64` (required) — Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](/api/messages/list). Пример: `2637266155` - `forwarding: object` (required) — Информация о пересланном сообщении. `null`, если сообщение не является пересланным. - `original_message_id: integer, int32` (required) — Идентификатор оригинального сообщения. Пример: `194275` - `original_chat_id: integer, int32` (required) — Идентификатор чата, в котором находится оригинальное сообщение. Пример: `334` @@ -396,7 +397,7 @@ Значения: `radio` — Для радиокнопок всегда radio - `name: string` (required, max length: 255) — Название, которое будет передано в ваше приложение как ключ указанного пользователем выбора - `label: string` (required, max length: 150) — Подпись к группе радиокнопок - - `options: array of object` (required, max items: 10) — Массив радиокнопок + - `options: array of object` (required, max items: 20) — Массив радиокнопок - `text: string` (required, max length: 75) — Отображаемый текст - `value: string` (required, max length: 255) — Уникальное строковое значение, которое будет передано в ваше приложение при выборе этого пункта - `description: string` (max length: 75) — Пояснение, которое будет указано серым цветом в этом пункте под отображаемым текстом @@ -408,7 +409,7 @@ Значения: `checkbox` — Для чекбоксов всегда checkbox - `name: string` (required, max length: 255) — Название, которое будет передано в ваше приложение как ключ указанного пользователем выбора - `label: string` (required, max length: 150) — Подпись к группе чекбоксов - - `options: array of object` (required, max items: 10) — Массив чекбоксов + - `options: array of object` (required, max items: 20) — Массив чекбоксов - `text: string` (required, max length: 75) — Отображаемый текст - `value: string` (required, max length: 255) — Уникальное строковое значение, которое будет передано в ваше приложение при выборе этого пункта - `description: string` (max length: 75) — Пояснение, которое будет указано серым цветом в этом пункте под отображаемым текстом @@ -449,13 +450,77 @@ - [Информация о боте](/api/bots/get) - [Редактирование бота](/api/bots/update) - [Удаление бота](/api/bots/delete) -- [Саморегистрация вебхука бота](/api/bots/update-webhook) - [Ротация токена бота](/api/bots/recreate-token) -- [Ротация собственного токена бота](/api/bots/recreate-token-self) +- [Ротация секрета клиента](/api/bots/rotate-client-secret) Параметры бота - `id: integer, int32` (required) — Идентификатор бота (совпадает с `user_id` бота). Пример: `1738816` +- `name: string` (required) — Имя бота. Пример: `"Бот задач"` +- `nickname: string` (required) — Никнейм бота. Пример: `"tasks_bot"` +- `avatar_url: string` (required, nullable) — Ссылка на аватар бота. `null`, если аватар не задан. Пример: `"https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg"` +- `creator_id: integer, int32` (required, nullable) — Идентификатор сотрудника, создавшего бота. `null`, если создатель не записан. Пример: `12` +- `created_at: date-time` (required) — Дата и время создания бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2025-05-15T14:30:00.000Z"` +- `authorized_users_count: integer, int32` (required) — Сколько сотрудников авторизовали бота. Пример: `3` +- `last_used_at: date-time` (required, nullable) — Дата и время, когда бот последний раз работал (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ: запрос на входящий вебхук или вызов API любым токеном бота, включая токены сотрудников. `null`, если такого не было. Использование токена учитывается не чаще раза в час. Пример: `"2025-05-15T14:30:00.000Z"` +- `webhook: object` (required) — Объект параметров вебхука + - `name: string` (required, max length: 255) — Имя бота. Пример: `"Бот задач"` + - `nickname: string` (required, max length: 255) — Никнейм бота. Пример: `"tasks_bot"` + - `outgoing_url: string` (required, nullable) — URL исходящего вебхука. `null`, если исходящий вебхук у бота не настроен. Пример: `"https://www.website.com/tasks/new"` + - `events: array of string` (required) — События, на которые подписан бот. Пример: `["message_new"]` + - `trigger_on: string` (required) — Условие срабатывания исходящего вебхука + Значения: `commands` — Только на команды (триггер-слова) из commands, `all_messages` — На все сообщения в чатах, где есть бот, `unfurl` — На развёртывание ссылок (link previews) + - `commands: array of string` (required) — Команды бота (триггер-слова). Пример: `["/task"]` + - `scopes: array of string` (required) — Скоупы (права доступа) токена бота. Набор по умолчанию шире того, что можно назначить явно, поэтому здесь могут встречаться значения, недоступные для явной установки. Пример: `["messages:create"]` + - `template: string` (required, nullable) — Шаблон форматирования входящего вебхука. `null`, если не задан. Пример: `"Заказ от {{ client }} на сумму {{ amount }} ₽"` + - `template_engine: string` (required) — Шаблонизатор для обработки шаблона входящего вебхука + Значения: `liquid` — Liquid — условия, циклы и фильтры, `mustache` — Mustache — простая подстановка без логики + - `challenge_key: string` (required, nullable) — Название поля проверки для верификации входящего вебхука. `null`, если не задано. Пример: `"challenge"` + - `link_preview_enabled: boolean` (required) — Показывать превью ссылок в сообщениях входящего вебхука. Пример: `true` + - `ignore_self_messages: boolean` (required) — Игнорировать входящие сообщения, отправленные самим ботом. Пример: `false` + - `events_history_enabled: boolean` (required) — Сохранять историю событий бота для последующего получения через метод истории событий. Пример: `false` + - `single_chat: boolean` (required) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false` + - `can_edit: array of string` (required) — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `["admin"]` + - `who_can_add: string` (required) — Кто может добавлять бота в чаты + Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей + - `kind: string` (required) — Источник входящего вебхука. `null`, если входящий вебхук у бота выключен. + Значения: `simple` — Свой формат: сообщение собирается из тела запроса по шаблону бота, `gitlab` — GitLab: Пачка сама разбирает запрос и собирает сообщение, `grafana` — Grafana: Пачка сама разбирает запрос и собирает сообщение + - `unfurl_domains: array of string` (required) — Домены, ссылки на которые бот разворачивает. Пример: `["example.com"]` + - `last_request_at: date-time` (required, nullable) — Дата и время последнего запроса на входящий вебхук бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если запросов не было. Пример: `"2025-05-15T14:30:00.000Z"` +- `oauth_client_enabled: boolean` (required) — Включена ли у бота авторизация от имени сотрудника. Пример: `true` +- `oauth_client: object` (required) — Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией, поэтому включена ли она, смотрите в `oauth_client_enabled`. У бота без токенов может прийти `null`. + - `client_id: string` (required) — Идентификатор клиента для ссылки авторизации. Пример: `"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY"` + - `client_secret_preview: string` (required) — Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета. Пример: `"cH5kR9mN...x7Qp"` + - `confidential: boolean` (required) — Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE. Пример: `true` + - `redirect_uris: array of string` (required) — Адреса возврата после согласия. Пример: `["https://example.com/oauth/callback"]` + - `scopes: array of string` (required) — Права, которые бот запрашивает у сотрудника на экране согласия. Пример: `["messages:read","messages:create"]` +- `promo: object` (required) — Страница бота в витрине. `null`, если авторизация у бота выключена. + - `description: string` (required, nullable) — Описание бота. `null`, если не задано. Пример: `"Собирает сводку по задачам Jira и присылает её в чат"` + - `published: boolean` (required) — Опубликован ли бот в витрине. Пример: `true` + - `promo_images: array of object` (required) — Скриншоты страницы бота + - `key: string` (required) — Ключ изображения. Пример: `"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"` + - `url: string` (required) — Ссылка на изображение. Пример: `"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"` +- `permissions: object` (required) — Что вы можете делать с этим ботом + - `update_oauth_client: boolean` (required) — Менять авторизацию от имени сотрудника, страницу в витрине и имя бота. Пример: `true` + - `recreate_token: boolean` (required) — Выпускать, менять и удалять токены бота и обновлять секрет клиента. Пример: `true` + - `destroy: boolean` (required) — Удалить бота. Пример: `true` +- `client_secret: string` — Секрет клиента. Приходит один раз: при включении серверного клиента, при переходе на него и при ротации секрета. Пример: `"dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA"` + + +## Бот в методах самого бота + +- [Саморегистрация вебхука бота](/api/bots/update-webhook) +- [Ротация собственного токена бота](/api/bots/recreate-token-self) + +Параметры бота в ответах методов самого бота + +- `id: integer, int32` (required) — Идентификатор бота (совпадает с `user_id` бота). Пример: `1738816` +- `oauth_client: object` (required) — Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией. У бота без токенов может прийти `null`. + - `client_id: string` (required) — Идентификатор клиента для ссылки авторизации. Пример: `"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY"` + - `client_secret_preview: string` (required) — Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета. Пример: `"cH5kR9mN...x7Qp"` + - `confidential: boolean` (required) — Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE. Пример: `true` + - `redirect_uris: array of string` (required) — Адреса возврата после согласия. Пример: `["https://example.com/oauth/callback"]` + - `scopes: array of string` (required) — Права, которые бот запрашивает у сотрудника на экране согласия. Пример: `["messages:read","messages:create"]` - `webhook: object` (required) — Объект параметров вебхука - `name: string` (required, max length: 255) — Имя бота. Пример: `"Бот задач"` - `nickname: string` (required, max length: 255) — Никнейм бота. Пример: `"tasks_bot"` @@ -475,7 +540,49 @@ - `single_chat: boolean` (required) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false` - `can_edit: array of string` (required) — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `["admin"]` - `who_can_add: string` (required) — Кто может добавлять бота в чаты - Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Любой пользователь, в том числе гости + Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей + + +## Токен бота + +- [Список токенов бота](/api/bots/list-tokens) +- [Новый токен бота](/api/bots/create-token) +- [Изменение токена бота](/api/bots/update-token) +- [Перевыпуск токена бота](/api/bots/reissue-token) +- [Удаление токена бота](/api/bots/delete-token) + +Токен бота + +- `id: integer, int64` (required) — Идентификатор токена. Пример: `4827` +- `token: string` (required) — Токен в маскированном виде (видны первые 8 и последние 4 символа). Полное значение приходит один раз: при выпуске и перевыпуске токена. Пример: `"cH5kR9mN...x7Qp"` +- `name: string` (required, nullable) — Имя токена. `null` у токена, выпущенного без имени. Пример: `"Сервер уведомлений"` +- `user_id: integer, int64` (required) — Идентификатор бота, которому принадлежит токен. Пример: `1738816` +- `scopes: array of string` (required) — Права токена. Пример: `["messages:create","chats:read"]` +- `created_at: date-time` (required) — Дата и время выпуска токена (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2025-01-15T10:30:00.000Z"` +- `revoked_at: date-time` (required, nullable) — Дата отзыва токена. Всегда `null`: отозванные токены в ответ не попадают. Пример: `null` +- `expires_in: integer, int32` (required, nullable) — Время жизни токена в секундах. У токенов бота `null`: они бессрочные. Пример: `null` +- `last_used_at: date-time` (required, nullable) — Дата последнего использования токена. `null`, пока по токену не было ни одного запроса. Обновляется не чаще раза в час, поэтому может отставать. Пример: `"2025-02-24T14:20:00.000Z"` +- `authorized_at: date-time` (required, nullable) — Дата авторизации. У токенов бота `null`. Пример: `null` + + +## Каталог прав бота + +- [Каталог прав бота](/api/bots/list-scopes) + +Каталог прав, которые можно выдать боту + +- `scopes: array of object` (required) — Права, доступные боту + - `id: string` (required) — Право. Пример: `"messages:create"` + - `title: string` (required) — Описание права. Пример: `"Отправка сообщений"` + - `group: string` (required) — Категория права, `id` из `groups`. Пример: `"messages"` + - `preset: array of string` (required) — Наборы, в которые входит право, `id` из `presets`. Пример: `["admin"]` +- `groups: array of object` (required) — Категории прав + - `id: string` (required) — Идентификатор категории. Пример: `"messages"` + - `title: string` (required) — Название категории. Пример: `"Сообщения"` + - `description: string` (required) — Описание категории. Пример: `"Работа с сообщениями"` +- `presets: array of object` (required) — Готовые наборы прав + - `id: string` (required) — Идентификатор набора: `read-only` или `admin`. Пример: `"read-only"` + - `title: string` (required) — Название набора. Пример: `"Только чтение"` ## Параметры бота пространства @@ -485,6 +592,12 @@ Параметры бота пространства - `id: integer, int32` (required) — Идентификатор бота (совпадает с `user_id` бота). Пример: `1738816` +- `oauth_client: object` (required) — Параметры авторизации от имени сотрудника. `null` у бота, недоступного вам для редактирования. Может прийти и у бота с выключенной авторизацией, а у бота без токенов может прийти `null`. + - `client_id: string` (required) — Идентификатор клиента для ссылки авторизации. Пример: `"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY"` + - `client_secret_preview: string` (required) — Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета. Пример: `"cH5kR9mN...x7Qp"` + - `confidential: boolean` (required) — Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE. Пример: `true` + - `redirect_uris: array of string` (required) — Адреса возврата после согласия. Пример: `["https://example.com/oauth/callback"]` + - `scopes: array of string` (required) — Права, которые бот запрашивает у сотрудника на экране согласия. Пример: `["messages:read","messages:create"]` - `webhook: object` (required) — Объект параметров вебхука - `name: string` (required, max length: 255) — Имя бота. Пример: `"Бот задач"` - `nickname: string` (required, max length: 255) — Никнейм бота. Пример: `"tasks_bot"` @@ -504,7 +617,7 @@ - `single_chat: boolean` (required, nullable) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false` - `can_edit: array of string` (required, nullable) — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `["admin"]` - `who_can_add: string` (required) — Кто может добавлять бота в чаты - Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Любой пользователь, в том числе гости + Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей ## Событие исходящего вебхука @@ -607,6 +720,12 @@ - `domain: string` (required) — Домен ссылки. Пример: `"example.com"` - `skip: boolean` (required) — Признак того, что автор сообщения скрыл превью для этой ссылки. Если `true` — бот не должен создавать превью. Пример: `false` - `user_id: integer, int32` (required) — Идентификатор отправителя сообщения. Пример: `2345` + - `entity_type: string` (required) — Тип сущности, к которой относится сообщение со ссылкой + Значения: `discussion` — Беседа или канал, `thread` — Тред, `user` — Пользователь + - `entity_id: integer, int32` (required, nullable) — Идентификатор сущности: беседы или канала, треда. В личной переписке `null`: бот в ней не участвует, и собеседника ему не раскрывают. Пример: `23438` + - `thread: object` (required) — Тред, в котором отправлено сообщение со ссылкой. `null`, если сообщение отправлено не в треде. + - `message_id: integer, int32` (required, nullable) — Идентификатор сообщения, к которому был создан тред. `null` у треда без сообщения-родителя — такие создаёт [Новый самостоятельный тред](/api/threads/create). Пример: `12345` + - `message_chat_id: integer, int32` (required, nullable) — Идентификатор чата сообщения, к которому был создан тред. `null` у треда без сообщения-родителя. Пример: `67890` - `created_at: date-time` (required) — Дата и время создания сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2024-09-18T19:53:14.000Z"` - `webhook_timestamp: integer, int32` (required) — Дата и время отправки вебхука (UTC+0) в формате UNIX. Пример: `1726685594` - **VideoCallWebhookPayload**: Структура исходящего вебхука о видеозвонке @@ -646,7 +765,7 @@ - `id: string` (required) — Уникальный идентификатор события. Пример: `"a1b2c3d4-5e6f-7g8h-9i10-j11k12l13m14"` - `created_at: date-time` (required) — Дата и время создания события (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2025-05-15T14:30:00.000Z"` - `event_key: string` (required) — Ключ типа события - Значения: `user_login` — Пользователь успешно вошел в систему, `user_logout` — Пользователь вышел из системы, `user_2fa_fail` — Неудачная попытка двухфакторной аутентификации, `user_2fa_success` — Успешная двухфакторная аутентификация, `user_2fa_disabled` — Двухфакторная аутентификация отключена у сотрудника, `user_created` — Создана новая учетная запись пользователя, `user_deleted` — Учетная запись пользователя удалена, `user_role_changed` — Роль пользователя была изменена, `user_updated` — Данные пользователя обновлены, `tag_created` — Создан новый тег, `tag_deleted` — Тег удален, `user_added_to_tag` — Пользователь добавлен в тег, `user_removed_from_tag` — Пользователь удален из тега, `chat_created` — Создан новый чат, `chat_renamed` — Чат переименован, `chat_permission_changed` — Изменены права доступа к чату, `user_chat_join` — Пользователь присоединился к чату, `user_chat_leave` — Пользователь покинул чат, `tag_added_to_chat` — Тег добавлен в чат, `tag_removed_from_chat` — Тег удален из чата, `message_updated` — Сообщение отредактировано, `message_deleted` — Сообщение удалено, `message_created` — Сообщение создано, `reaction_created` — Реакция добавлена, `reaction_deleted` — Реакция удалена, `thread_created` — Тред создан, `access_token_created` — Создан новый токен доступа, `access_token_updated` — Токен доступа обновлен, `access_token_destroy` — Токен доступа удален, `kms_encrypt` — Данные зашифрованы, `kms_decrypt` — Данные расшифрованы, `audit_events_accessed` — Доступ к журналам аудита получен, `company_chats_accessed` — Получен список всех чатов пространства, `company_bots_accessed` — Получен список всех ботов пространства, `dlp_violation_detected` — Срабатывание правила DLP-системы, `search_users_api` — Поиск сотрудников через API, `search_chats_api` — Поиск чатов через API, `search_messages_api` — Поиск сообщений через API, `bot_scopes_updated` — Изменены скоупы токена бота, `bot_webhook_settings_updated` — Изменены настройки исходящего вебхука бота, `bot_token_recreated` — Токен бота перевыпущен (ротация), `bot_deleted` — Бот удалён, `bot_oauth_client_updated` — Изменены параметры OAuth-клиента бота, `oauth_authorization_granted` — Пользователь выдал OAuth-клиенту доступ к своим данным, `oauth_authorization_revoked` — Доступ OAuth-клиента к данным пользователя отозван, `oauth_device_authorization_approved` — Сотрудник подтвердил вход приложения с устройства, `oauth_device_authorization_denied` — Сотрудник отклонил вход приложения с устройства, `video_call_started` — Видеозвонок начат, `video_call_finished` — Видеозвонок завершён, `video_call_recording_ready` — Запись видеозвонка готова, `exchange_disabled` — Отключена интеграция с Exchange + Значения: `user_login` — Пользователь успешно вошел в систему, `user_logout` — Пользователь вышел из системы, `user_2fa_fail` — Неудачная попытка двухфакторной аутентификации, `user_2fa_success` — Успешная двухфакторная аутентификация, `user_2fa_disabled` — Двухфакторная аутентификация отключена у сотрудника, `user_created` — Создана новая учетная запись пользователя, `user_deleted` — Учетная запись пользователя удалена, `user_role_changed` — Роль пользователя была изменена, `user_updated` — Данные пользователя обновлены, `tag_created` — Создан новый тег, `tag_deleted` — Тег удален, `user_added_to_tag` — Пользователь добавлен в тег, `user_removed_from_tag` — Пользователь удален из тега, `chat_created` — Создан новый чат, `chat_renamed` — Чат переименован, `chat_permission_changed` — Изменены права доступа к чату, `user_chat_join` — Пользователь присоединился к чату, `user_chat_leave` — Пользователь покинул чат, `tag_added_to_chat` — Тег добавлен в чат, `tag_removed_from_chat` — Тег удален из чата, `message_updated` — Сообщение отредактировано, `message_deleted` — Сообщение удалено, `message_created` — Сообщение создано, `reaction_created` — Реакция добавлена, `reaction_deleted` — Реакция удалена, `thread_created` — Тред создан, `access_token_created` — Создан новый токен доступа, `access_token_updated` — Токен доступа обновлен, `access_token_destroy` — Токен доступа удален, `kms_encrypt` — Данные зашифрованы, `kms_decrypt` — Данные расшифрованы, `audit_events_accessed` — Доступ к журналам аудита получен, `company_chats_accessed` — Получен список всех чатов пространства, `company_bots_accessed` — Получен список всех ботов пространства, `dlp_violation_detected` — Срабатывание правила DLP-системы, `search_users_api` — Поиск сотрудников через API, `search_chats_api` — Поиск чатов через API, `search_messages_api` — Поиск сообщений через API, `bot_scopes_updated` — Изменены скоупы токена бота, `bot_webhook_settings_updated` — Изменены настройки исходящего вебхука бота, `bot_token_recreated` — Токен бота перевыпущен (ротация), `bot_deleted` — Бот удалён, `bot_oauth_client_updated` — Изменены параметры OAuth-клиента бота, `bot_oauth_client_disabled` — У бота выключена авторизация от имени сотрудника, `bot_oauth_client_secret_rotated` — Обновлён секрет OAuth-клиента бота, `bot_token_created` — Выпущен токен бота, `bot_token_updated` — Изменены имя или скоупы токена бота, `bot_token_reissued` — Отдельный токен бота перевыпущен, `oauth_authorization_granted` — Пользователь выдал OAuth-клиенту доступ к своим данным, `oauth_authorization_revoked` — Доступ OAuth-клиента к данным пользователя отозван, `oauth_device_authorization_approved` — Сотрудник подтвердил вход приложения с устройства, `oauth_device_authorization_denied` — Сотрудник отклонил вход приложения с устройства, `video_call_started` — Видеозвонок начат, `video_call_finished` — Видеозвонок завершён, `video_call_recording_ready` — Запись видеозвонка готова, `exchange_disabled` — Отключена интеграция с Exchange - `entity_id: string` (required) — Идентификатор затронутой сущности. Пример: `"98765"` - `entity_type: string` (required) — Тип затронутой сущности. Пример: `"User"` - `actor_id: string` (required) — Идентификатор пользователя, выполнившего действие. Пример: `"98765"` @@ -700,17 +819,23 @@ - `filters: Record` (required) — Применённые фильтры. Возможные ключи зависят от типа поиска: order, sort, created_from, created_to, company_roles (users), active, chat_subtype, personal (chats), chat_ids, user_ids (messages). **Структура значений Record:** - Тип значения: `any` - - **AuditDetailsBot**: При: bot_deleted, bot_token_recreated + - **AuditDetailsBot**: При: bot_deleted, bot_token_recreated, bot_token_created, bot_token_updated, bot_token_reissued - `bot_id: integer, int32` (required) — Идентификатор бота - `actor_id: integer, int32` (required, nullable) — Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора. - **AuditDetailsBotScopes**: При: bot_scopes_updated + - `bot_id: integer, int32` (required) — Идентификатор бота + - `actor_id: integer, int32` (required, nullable) — Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора. - `added_scopes: array of string` (required) — Скоупы, добавленные токену бота - `removed_scopes: array of string` (required) — Скоупы, отозванные у токена бота - **AuditDetailsBotWebhookSettings**: При: bot_webhook_settings_updated + - `bot_id: integer, int32` (required) — Идентификатор бота + - `actor_id: integer, int32` (required, nullable) — Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора. - `changes: Record` (required) — Изменённые настройки вебхука. Ключ — имя настройки (outgoing_url, ignore_self_messages, events_history_enabled), значение — объект с полями previous (прежнее значение) и new (новое значение). **Структура значений Record:** - Тип значения: `any` - **AuditDetailsBotOAuthClient**: При: bot_oauth_client_updated + - `bot_id: integer, int32` (required) — Идентификатор бота + - `actor_id: integer, int32` (required, nullable) — Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора. - `client_id: string` (required) — Идентификатор OAuth-клиента бота - `changes: Record` (required) — Изменённые параметры клиента. Ключ — имя параметра (confidential, redirect_uris, scopes), значение — объект с полями previous (прежнее значение) и new (новое значение). **Структура значений Record:** @@ -742,6 +867,16 @@ - `file_id: integer, int32` (required) — Идентификатор файла записи - `duration: integer, int32` (required) — Длительность записи в секундах - `size: integer, int64` (required) — Размер файла записи в байтах + - **AuditDetailsBotOAuthClientSecretRotated**: При: bot_oauth_client_secret_rotated + - `bot_id: integer, int32` (required) — Идентификатор бота + - `actor_id: integer, int32` (required, nullable) — Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора. + - `client_id: string` (required) — Идентификатор OAuth-клиента бота + - **AuditDetailsBotOAuthClientDisabled**: При: bot_oauth_client_disabled + - `bot_id: integer, int32` (required) — Идентификатор бота + - `actor_id: integer, int32` (required, nullable) — Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора. + - `client_id: string` (required) — Идентификатор OAuth-клиента бота + - `deleted_access_tokens_count: integer, int32` (required) — Сколько токенов сотрудников отозвано + - `deleted_access_grants_count: integer, int32` (required) — Сколько неиспользованных кодов авторизации отозвано - `ip_address: string` (required, nullable) — IP-адрес, с которого было выполнено действие. `null` у событий, записанных без запроса пользователя. Пример: `"192.168.1.100"` - `user_agent: string` (required, nullable) — User agent клиента, обрезается до 255 символов. `null` у событий, записанных без запроса пользователя. Пример: `"Pachca/3.60.0 (co.staply.pachca; build:15; iOS 18.5.0) Alamofire/5.0.0"` diff --git a/apps/docs/public/api/profile/delete-avatar.md b/apps/docs/public/api/profile/delete-avatar.md index 67d21a957..c92128654 100644 --- a/apps/docs/public/api/profile/delete-avatar.md +++ b/apps/docs/public/api/profile/delete-avatar.md @@ -48,7 +48,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/profile/avatar" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -75,13 +75,13 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/profile/avatar" \ **anyOf** - один из вариантов: -- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422) +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) - `errors: array of object` (required) — Массив ошибок - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/profile/get.md b/apps/docs/public/api/profile/get.md index 80361d44c..ba3515ec2 100644 --- a/apps/docs/public/api/profile/get.md +++ b/apps/docs/public/api/profile/get.md @@ -34,8 +34,8 @@ curl "https://api.pachca.com/api/shared/v1/profile" \ - `first_name: string` (required, nullable, max length: 255) — Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`). Пример: `"Олег"` - `last_name: string` (required, nullable, max length: 255) — Фамилия. Если не заполнена, возвращается `null` или пустая строка. Пример: `"Петров"` - `nickname: string` (required, max length: 255) — Имя пользователя. Пример: `"olegpetrov"` - - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `"olegp@example.com"` - - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `"+79001234567"` + - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `"olegp@example.com"` + - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `"+79001234567"` - `department: string` (required, nullable, max length: 255) — Департамент. Если не указан, возвращается `null` или пустая строка. Пример: `"Продукт"` - `title: string` (required, nullable) — Должность. Если не указана, возвращается `null` или пустая строка. Пример: `"CIO"` - `role: string` (required) — Уровень доступа @@ -44,7 +44,7 @@ curl "https://api.pachca.com/api/shared/v1/profile" \ - `invite_status: string` (required) — Статус приглашения Значения: `confirmed` — Принято, `sent` — Отправлено - `inviter_id: integer, int32` (required, nullable) — Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён. Пример: `185` - - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Пример: `["Product","Design"]` + - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Мульти-гостю в чужой карточке приходит пустым. Пример: `["Product","Design"]` - `custom_properties: array of object` (required) — Дополнительные поля сотрудника - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678` - `name: string` (required, max length: 32) — Название поля. Пример: `"Город"` diff --git a/apps/docs/public/api/profile/update-avatar.md b/apps/docs/public/api/profile/update-avatar.md index 99562b3ce..d5ffaf1d5 100644 --- a/apps/docs/public/api/profile/update-avatar.md +++ b/apps/docs/public/api/profile/update-avatar.md @@ -79,7 +79,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/profile/avatar" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -106,13 +106,13 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/profile/avatar" \ **anyOf** - один из вариантов: -- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422) +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) - `errors: array of object` (required) — Массив ошибок - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -145,7 +145,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/profile/avatar" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/profile/update-status.md b/apps/docs/public/api/profile/update-status.md index 815d6ef7d..aa244292e 100644 --- a/apps/docs/public/api/profile/update-status.md +++ b/apps/docs/public/api/profile/update-status.md @@ -105,7 +105,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/profile/status" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -167,7 +167,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/profile/status" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/reactions/add.md b/apps/docs/public/api/reactions/add.md index 009ca1e9b..903804549 100644 --- a/apps/docs/public/api/reactions/add.md +++ b/apps/docs/public/api/reactions/add.md @@ -92,7 +92,7 @@ curl "https://api.pachca.com/api/shared/v1/messages/7231942/reactions" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -154,7 +154,7 @@ curl "https://api.pachca.com/api/shared/v1/messages/7231942/reactions" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -184,7 +184,7 @@ curl "https://api.pachca.com/api/shared/v1/messages/7231942/reactions" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/reactions/list.md b/apps/docs/public/api/reactions/list.md index de5ba71c1..a7cf07efc 100644 --- a/apps/docs/public/api/reactions/list.md +++ b/apps/docs/public/api/reactions/list.md @@ -84,7 +84,7 @@ curl "https://api.pachca.com/api/shared/v1/messages/194275/reactions?limit=1" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -146,7 +146,7 @@ curl "https://api.pachca.com/api/shared/v1/messages/194275/reactions?limit=1" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -176,7 +176,7 @@ curl "https://api.pachca.com/api/shared/v1/messages/194275/reactions?limit=1" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/reactions/remove.md b/apps/docs/public/api/reactions/remove.md index 70d5e9811..4ceda1d87 100644 --- a/apps/docs/public/api/reactions/remove.md +++ b/apps/docs/public/api/reactions/remove.md @@ -46,7 +46,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/messages/7231942/reactions? - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -108,7 +108,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/messages/7231942/reactions? - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -138,7 +138,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/messages/7231942/reactions? - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/read-member/list-readers.md b/apps/docs/public/api/read-member/list-readers.md index 0b2e29429..9b5975420 100644 --- a/apps/docs/public/api/read-member/list-readers.md +++ b/apps/docs/public/api/read-member/list-readers.md @@ -77,7 +77,7 @@ curl "https://api.pachca.com/api/shared/v1/messages/194275/read_member_ids?limit - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -123,7 +123,7 @@ curl "https://api.pachca.com/api/shared/v1/messages/194275/read_member_ids?limit - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -169,7 +169,7 @@ curl "https://api.pachca.com/api/shared/v1/messages/194275/read_member_ids?limit - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -199,7 +199,7 @@ curl "https://api.pachca.com/api/shared/v1/messages/194275/read_member_ids?limit - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/search/list-chats.md b/apps/docs/public/api/search/list-chats.md index 46ebcfe02..797184631 100644 --- a/apps/docs/public/api/search/list-chats.md +++ b/apps/docs/public/api/search/list-chats.md @@ -16,6 +16,8 @@ Метод ищет по названиям, а не по содержанию. Если нужно найти, где что-то обсуждали или о чём договорились, это [Поиск сообщений](/api/search/list-messages). +Слишком тяжёлый запрос может не уложиться по времени: тогда метод отвечает `504` с кодом `timeout`, и запрос стоит сузить. + ## Параметры ### Query параметры @@ -109,7 +111,7 @@ curl "https://api.pachca.com/api/shared/v1/search/chats?query=Разработк - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -155,7 +157,7 @@ curl "https://api.pachca.com/api/shared/v1/search/chats?query=Разработк - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -192,3 +194,33 @@ curl "https://api.pachca.com/api/shared/v1/search/chats?query=Разработк } ``` +### 504: Server error + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + diff --git a/apps/docs/public/api/search/list-messages.md b/apps/docs/public/api/search/list-messages.md index 1b8092c7b..614161d03 100644 --- a/apps/docs/public/api/search/list-messages.md +++ b/apps/docs/public/api/search/list-messages.md @@ -16,6 +16,8 @@ По умолчанию сообщения приходят от новых к старым. `sort=relevance` переключает выдачу на соответствие запросу, где свежие сообщения всё равно ценятся выше. +Слишком тяжёлый запрос может не уложиться по времени: тогда метод отвечает `504` с кодом `timeout`, и запрос стоит сузить. + ## Параметры ### Query параметры @@ -74,8 +76,8 @@ curl "https://api.pachca.com/api/shared/v1/search/messages?query=футболк - `transcript: string` (required, nullable) — Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна. Пример: `"Привет, посмотри пожалуйста последний отчёт"` - `buttons: array of array` (required, nullable) — Массив строк, каждая из которых представлена массивом кнопок. `null`, если сообщение отправлено без кнопок. - `thread: object` (required, nullable) — Тред, созданный к этому сообщению. `null`, если тред не создан, а также у сообщений, которые сами находятся внутри треда. - - `id: integer, int64` (required) — Идентификатор треда. Пример: `265142` - - `chat_id: integer, int64` (required) — Идентификатор чата треда. Пример: `2637266155` + - `id: integer, int64` (required) — Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](/api/messages/create) с `entity_type: "thread"`. Пример: `265142` + - `chat_id: integer, int64` (required) — Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](/api/messages/list). Пример: `2637266155` - `forwarding: object` (required) — Информация о пересланном сообщении. `null`, если сообщение не является пересланным. - `original_message_id: integer, int32` (required) — Идентификатор оригинального сообщения. Пример: `194275` - `original_chat_id: integer, int32` (required) — Идентификатор чата, в котором находится оригинальное сообщение. Пример: `334` @@ -171,7 +173,7 @@ curl "https://api.pachca.com/api/shared/v1/search/messages?query=футболк - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -217,7 +219,7 @@ curl "https://api.pachca.com/api/shared/v1/search/messages?query=футболк - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -254,3 +256,33 @@ curl "https://api.pachca.com/api/shared/v1/search/messages?query=футболк } ``` +### 504: Server error + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + diff --git a/apps/docs/public/api/search/list-users.md b/apps/docs/public/api/search/list-users.md index f4e0f2517..4c67f3870 100644 --- a/apps/docs/public/api/search/list-users.md +++ b/apps/docs/public/api/search/list-users.md @@ -16,6 +16,8 @@ Удалённые сотрудники не находятся никогда, приостановленные — только когда задан текстовый запрос, и стоят в выдаче ниже остальных. Из ботов находятся лишь публичные. +Слишком тяжёлый запрос может не уложиться по времени: тогда метод отвечает `504` с кодом `timeout`, и запрос стоит сузить. + ## Параметры ### Query параметры @@ -51,8 +53,8 @@ curl "https://api.pachca.com/api/shared/v1/search/users?query=Олег&limit=10& - `first_name: string` (required, nullable, max length: 255) — Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`). Пример: `"Олег"` - `last_name: string` (required, nullable, max length: 255) — Фамилия. Если не заполнена, возвращается `null` или пустая строка. Пример: `"Петров"` - `nickname: string` (required, max length: 255) — Имя пользователя. Пример: `"olegpetrov"` - - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `"olegp@example.com"` - - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `"+79001234567"` + - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `"olegp@example.com"` + - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `"+79001234567"` - `department: string` (required, nullable, max length: 255) — Департамент. Если не указан, возвращается `null` или пустая строка. Пример: `"Продукт"` - `title: string` (required, nullable) — Должность. Если не указана, возвращается `null` или пустая строка. Пример: `"CIO"` - `role: string` (required) — Уровень доступа @@ -61,7 +63,7 @@ curl "https://api.pachca.com/api/shared/v1/search/users?query=Олег&limit=10& - `invite_status: string` (required) — Статус приглашения Значения: `confirmed` — Принято, `sent` — Отправлено - `inviter_id: integer, int32` (required, nullable) — Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён. Пример: `185` - - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Пример: `["Product","Design"]` + - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Мульти-гостю в чужой карточке приходит пустым. Пример: `["Product","Design"]` - `custom_properties: array of object` (required) — Дополнительные поля сотрудника - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678` - `name: string` (required, max length: 32) — Название поля. Пример: `"Город"` @@ -151,7 +153,7 @@ curl "https://api.pachca.com/api/shared/v1/search/users?query=Олег&limit=10& - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -197,7 +199,7 @@ curl "https://api.pachca.com/api/shared/v1/search/users?query=Олег&limit=10& - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -234,3 +236,33 @@ curl "https://api.pachca.com/api/shared/v1/search/users?query=Олег&limit=10& } ``` +### 504: Server error + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + diff --git a/apps/docs/public/api/security/list.md b/apps/docs/public/api/security/list.md index 204b2a24a..2d1b9562a 100644 --- a/apps/docs/public/api/security/list.md +++ b/apps/docs/public/api/security/list.md @@ -25,7 +25,7 @@ - `start_time: date-time` — Начальная метка времени, включительно (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Значение, которое не удалось разобрать, фильтр снимает — ответ придёт полным, без ошибки. - `end_time: date-time` — Конечная метка времени, включительно (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Значение, которое не удалось разобрать, фильтр снимает — ответ придёт полным, без ошибки. - `event_key: string` — Фильтр по конкретному типу события - Значения: `user_login`, `user_logout`, `user_2fa_fail`, `user_2fa_success`, `user_2fa_disabled`, `user_created`, `user_deleted`, `user_role_changed`, `user_updated`, `tag_created`, `tag_deleted`, `user_added_to_tag`, `user_removed_from_tag`, `chat_created`, `chat_renamed`, `chat_permission_changed`, `user_chat_join`, `user_chat_leave`, `tag_added_to_chat`, `tag_removed_from_chat`, `message_updated`, `message_deleted`, `message_created`, `reaction_created`, `reaction_deleted`, `thread_created`, `access_token_created`, `access_token_updated`, `access_token_destroy`, `kms_encrypt`, `kms_decrypt`, `audit_events_accessed`, `company_chats_accessed`, `company_bots_accessed`, `dlp_violation_detected`, `search_users_api`, `search_chats_api`, `search_messages_api`, `bot_scopes_updated`, `bot_webhook_settings_updated`, `bot_token_recreated`, `bot_deleted`, `bot_oauth_client_updated`, `oauth_authorization_granted`, `oauth_authorization_revoked`, `oauth_device_authorization_approved`, `oauth_device_authorization_denied`, `video_call_started`, `video_call_finished`, `video_call_recording_ready`, `exchange_disabled` + Значения: `user_login`, `user_logout`, `user_2fa_fail`, `user_2fa_success`, `user_2fa_disabled`, `user_created`, `user_deleted`, `user_role_changed`, `user_updated`, `tag_created`, `tag_deleted`, `user_added_to_tag`, `user_removed_from_tag`, `chat_created`, `chat_renamed`, `chat_permission_changed`, `user_chat_join`, `user_chat_leave`, `tag_added_to_chat`, `tag_removed_from_chat`, `message_updated`, `message_deleted`, `message_created`, `reaction_created`, `reaction_deleted`, `thread_created`, `access_token_created`, `access_token_updated`, `access_token_destroy`, `kms_encrypt`, `kms_decrypt`, `audit_events_accessed`, `company_chats_accessed`, `company_bots_accessed`, `dlp_violation_detected`, `search_users_api`, `search_chats_api`, `search_messages_api`, `bot_scopes_updated`, `bot_webhook_settings_updated`, `bot_token_recreated`, `bot_deleted`, `bot_oauth_client_updated`, `bot_oauth_client_disabled`, `bot_oauth_client_secret_rotated`, `bot_token_created`, `bot_token_updated`, `bot_token_reissued`, `oauth_authorization_granted`, `oauth_authorization_revoked`, `oauth_device_authorization_approved`, `oauth_device_authorization_denied`, `video_call_started`, `video_call_finished`, `video_call_recording_ready`, `exchange_disabled` - `actor_id: string` — Идентификатор пользователя, выполнившего действие - `actor_type: string` — Тип актора - `entity_id: string` — Идентификатор затронутой сущности @@ -52,7 +52,7 @@ curl "https://api.pachca.com/api/shared/v1/audit_events?start_time=2025-05-01T09 - `id: string` (required) — Уникальный идентификатор события. Пример: `"a1b2c3d4-5e6f-7g8h-9i10-j11k12l13m14"` - `created_at: date-time` (required) — Дата и время создания события (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2025-05-15T14:30:00.000Z"` - `event_key: string` (required) — Ключ типа события - Значения: `user_login` — Пользователь успешно вошел в систему, `user_logout` — Пользователь вышел из системы, `user_2fa_fail` — Неудачная попытка двухфакторной аутентификации, `user_2fa_success` — Успешная двухфакторная аутентификация, `user_2fa_disabled` — Двухфакторная аутентификация отключена у сотрудника, `user_created` — Создана новая учетная запись пользователя, `user_deleted` — Учетная запись пользователя удалена, `user_role_changed` — Роль пользователя была изменена, `user_updated` — Данные пользователя обновлены, `tag_created` — Создан новый тег, `tag_deleted` — Тег удален, `user_added_to_tag` — Пользователь добавлен в тег, `user_removed_from_tag` — Пользователь удален из тега, `chat_created` — Создан новый чат, `chat_renamed` — Чат переименован, `chat_permission_changed` — Изменены права доступа к чату, `user_chat_join` — Пользователь присоединился к чату, `user_chat_leave` — Пользователь покинул чат, `tag_added_to_chat` — Тег добавлен в чат, `tag_removed_from_chat` — Тег удален из чата, `message_updated` — Сообщение отредактировано, `message_deleted` — Сообщение удалено, `message_created` — Сообщение создано, `reaction_created` — Реакция добавлена, `reaction_deleted` — Реакция удалена, `thread_created` — Тред создан, `access_token_created` — Создан новый токен доступа, `access_token_updated` — Токен доступа обновлен, `access_token_destroy` — Токен доступа удален, `kms_encrypt` — Данные зашифрованы, `kms_decrypt` — Данные расшифрованы, `audit_events_accessed` — Доступ к журналам аудита получен, `company_chats_accessed` — Получен список всех чатов пространства, `company_bots_accessed` — Получен список всех ботов пространства, `dlp_violation_detected` — Срабатывание правила DLP-системы, `search_users_api` — Поиск сотрудников через API, `search_chats_api` — Поиск чатов через API, `search_messages_api` — Поиск сообщений через API, `bot_scopes_updated` — Изменены скоупы токена бота, `bot_webhook_settings_updated` — Изменены настройки исходящего вебхука бота, `bot_token_recreated` — Токен бота перевыпущен (ротация), `bot_deleted` — Бот удалён, `bot_oauth_client_updated` — Изменены параметры OAuth-клиента бота, `oauth_authorization_granted` — Пользователь выдал OAuth-клиенту доступ к своим данным, `oauth_authorization_revoked` — Доступ OAuth-клиента к данным пользователя отозван, `oauth_device_authorization_approved` — Сотрудник подтвердил вход приложения с устройства, `oauth_device_authorization_denied` — Сотрудник отклонил вход приложения с устройства, `video_call_started` — Видеозвонок начат, `video_call_finished` — Видеозвонок завершён, `video_call_recording_ready` — Запись видеозвонка готова, `exchange_disabled` — Отключена интеграция с Exchange + Значения: `user_login` — Пользователь успешно вошел в систему, `user_logout` — Пользователь вышел из системы, `user_2fa_fail` — Неудачная попытка двухфакторной аутентификации, `user_2fa_success` — Успешная двухфакторная аутентификация, `user_2fa_disabled` — Двухфакторная аутентификация отключена у сотрудника, `user_created` — Создана новая учетная запись пользователя, `user_deleted` — Учетная запись пользователя удалена, `user_role_changed` — Роль пользователя была изменена, `user_updated` — Данные пользователя обновлены, `tag_created` — Создан новый тег, `tag_deleted` — Тег удален, `user_added_to_tag` — Пользователь добавлен в тег, `user_removed_from_tag` — Пользователь удален из тега, `chat_created` — Создан новый чат, `chat_renamed` — Чат переименован, `chat_permission_changed` — Изменены права доступа к чату, `user_chat_join` — Пользователь присоединился к чату, `user_chat_leave` — Пользователь покинул чат, `tag_added_to_chat` — Тег добавлен в чат, `tag_removed_from_chat` — Тег удален из чата, `message_updated` — Сообщение отредактировано, `message_deleted` — Сообщение удалено, `message_created` — Сообщение создано, `reaction_created` — Реакция добавлена, `reaction_deleted` — Реакция удалена, `thread_created` — Тред создан, `access_token_created` — Создан новый токен доступа, `access_token_updated` — Токен доступа обновлен, `access_token_destroy` — Токен доступа удален, `kms_encrypt` — Данные зашифрованы, `kms_decrypt` — Данные расшифрованы, `audit_events_accessed` — Доступ к журналам аудита получен, `company_chats_accessed` — Получен список всех чатов пространства, `company_bots_accessed` — Получен список всех ботов пространства, `dlp_violation_detected` — Срабатывание правила DLP-системы, `search_users_api` — Поиск сотрудников через API, `search_chats_api` — Поиск чатов через API, `search_messages_api` — Поиск сообщений через API, `bot_scopes_updated` — Изменены скоупы токена бота, `bot_webhook_settings_updated` — Изменены настройки исходящего вебхука бота, `bot_token_recreated` — Токен бота перевыпущен (ротация), `bot_deleted` — Бот удалён, `bot_oauth_client_updated` — Изменены параметры OAuth-клиента бота, `bot_oauth_client_disabled` — У бота выключена авторизация от имени сотрудника, `bot_oauth_client_secret_rotated` — Обновлён секрет OAuth-клиента бота, `bot_token_created` — Выпущен токен бота, `bot_token_updated` — Изменены имя или скоупы токена бота, `bot_token_reissued` — Отдельный токен бота перевыпущен, `oauth_authorization_granted` — Пользователь выдал OAuth-клиенту доступ к своим данным, `oauth_authorization_revoked` — Доступ OAuth-клиента к данным пользователя отозван, `oauth_device_authorization_approved` — Сотрудник подтвердил вход приложения с устройства, `oauth_device_authorization_denied` — Сотрудник отклонил вход приложения с устройства, `video_call_started` — Видеозвонок начат, `video_call_finished` — Видеозвонок завершён, `video_call_recording_ready` — Запись видеозвонка готова, `exchange_disabled` — Отключена интеграция с Exchange - `entity_id: string` (required) — Идентификатор затронутой сущности. Пример: `"98765"` - `entity_type: string` (required) — Тип затронутой сущности. Пример: `"User"` - `actor_id: string` (required) — Идентификатор пользователя, выполнившего действие. Пример: `"98765"` @@ -106,17 +106,23 @@ curl "https://api.pachca.com/api/shared/v1/audit_events?start_time=2025-05-01T09 - `filters: Record` (required) — Применённые фильтры. Возможные ключи зависят от типа поиска: order, sort, created_from, created_to, company_roles (users), active, chat_subtype, personal (chats), chat_ids, user_ids (messages). **Структура значений Record:** - Тип значения: `any` - - **AuditDetailsBot**: При: bot_deleted, bot_token_recreated + - **AuditDetailsBot**: При: bot_deleted, bot_token_recreated, bot_token_created, bot_token_updated, bot_token_reissued - `bot_id: integer, int32` (required) — Идентификатор бота - `actor_id: integer, int32` (required, nullable) — Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора. - **AuditDetailsBotScopes**: При: bot_scopes_updated + - `bot_id: integer, int32` (required) — Идентификатор бота + - `actor_id: integer, int32` (required, nullable) — Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора. - `added_scopes: array of string` (required) — Скоупы, добавленные токену бота - `removed_scopes: array of string` (required) — Скоупы, отозванные у токена бота - **AuditDetailsBotWebhookSettings**: При: bot_webhook_settings_updated + - `bot_id: integer, int32` (required) — Идентификатор бота + - `actor_id: integer, int32` (required, nullable) — Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора. - `changes: Record` (required) — Изменённые настройки вебхука. Ключ — имя настройки (outgoing_url, ignore_self_messages, events_history_enabled), значение — объект с полями previous (прежнее значение) и new (новое значение). **Структура значений Record:** - Тип значения: `any` - **AuditDetailsBotOAuthClient**: При: bot_oauth_client_updated + - `bot_id: integer, int32` (required) — Идентификатор бота + - `actor_id: integer, int32` (required, nullable) — Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора. - `client_id: string` (required) — Идентификатор OAuth-клиента бота - `changes: Record` (required) — Изменённые параметры клиента. Ключ — имя параметра (confidential, redirect_uris, scopes), значение — объект с полями previous (прежнее значение) и new (новое значение). **Структура значений Record:** @@ -148,6 +154,16 @@ curl "https://api.pachca.com/api/shared/v1/audit_events?start_time=2025-05-01T09 - `file_id: integer, int32` (required) — Идентификатор файла записи - `duration: integer, int32` (required) — Длительность записи в секундах - `size: integer, int64` (required) — Размер файла записи в байтах + - **AuditDetailsBotOAuthClientSecretRotated**: При: bot_oauth_client_secret_rotated + - `bot_id: integer, int32` (required) — Идентификатор бота + - `actor_id: integer, int32` (required, nullable) — Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора. + - `client_id: string` (required) — Идентификатор OAuth-клиента бота + - **AuditDetailsBotOAuthClientDisabled**: При: bot_oauth_client_disabled + - `bot_id: integer, int32` (required) — Идентификатор бота + - `actor_id: integer, int32` (required, nullable) — Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора. + - `client_id: string` (required) — Идентификатор OAuth-клиента бота + - `deleted_access_tokens_count: integer, int32` (required) — Сколько токенов сотрудников отозвано + - `deleted_access_grants_count: integer, int32` (required) — Сколько неиспользованных кодов авторизации отозвано - `ip_address: string` (required, nullable) — IP-адрес, с которого было выполнено действие. `null` у событий, записанных без запроса пользователя. Пример: `"192.168.1.100"` - `user_agent: string` (required, nullable) — User agent клиента, обрезается до 255 символов. `null` у событий, записанных без запроса пользователя. Пример: `"Pachca/3.60.0 (co.staply.pachca; build:15; iOS 18.5.0) Alamofire/5.0.0"` - `meta: object` (required) — Метаданные пагинации @@ -195,7 +211,7 @@ curl "https://api.pachca.com/api/shared/v1/audit_events?start_time=2025-05-01T09 - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -241,7 +257,7 @@ curl "https://api.pachca.com/api/shared/v1/audit_events?start_time=2025-05-01T09 - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -287,7 +303,7 @@ curl "https://api.pachca.com/api/shared/v1/audit_events?start_time=2025-05-01T09 - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/tasks/create.md b/apps/docs/public/api/tasks/create.md index 133ff2fb7..1896422f4 100644 --- a/apps/docs/public/api/tasks/create.md +++ b/apps/docs/public/api/tasks/create.md @@ -164,7 +164,7 @@ curl "https://api.pachca.com/api/shared/v1/tasks" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -210,7 +210,7 @@ curl "https://api.pachca.com/api/shared/v1/tasks" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -256,7 +256,7 @@ curl "https://api.pachca.com/api/shared/v1/tasks" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -286,7 +286,7 @@ curl "https://api.pachca.com/api/shared/v1/tasks" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/tasks/delete.md b/apps/docs/public/api/tasks/delete.md index 723a0765f..d12e7ddda 100644 --- a/apps/docs/public/api/tasks/delete.md +++ b/apps/docs/public/api/tasks/delete.md @@ -59,7 +59,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/tasks/22283" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -105,7 +105,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/tasks/22283" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/tasks/get.md b/apps/docs/public/api/tasks/get.md index fb83f4c13..be2d15fb5 100644 --- a/apps/docs/public/api/tasks/get.md +++ b/apps/docs/public/api/tasks/get.md @@ -110,7 +110,7 @@ curl "https://api.pachca.com/api/shared/v1/tasks/22283" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -156,7 +156,7 @@ curl "https://api.pachca.com/api/shared/v1/tasks/22283" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/tasks/list.md b/apps/docs/public/api/tasks/list.md index e2901c6ef..439208908 100644 --- a/apps/docs/public/api/tasks/list.md +++ b/apps/docs/public/api/tasks/list.md @@ -20,7 +20,7 @@ - `status: string` — Фильтр по состоянию. Если параметр не указан, возвращаются напоминания в любом состоянии. Значения: `done`, `undone` -- `chat_ids: array` — Фильтр по чатам, к которым привязаны напоминания. Доступными считаются чаты, где вы состоите участником, открытые беседы и каналы пространства, а также треды, доступные вам по родительскому чату. Остальные переданные идентификаторы игнорируются без ошибки. Не более 100 идентификаторов. +- `chat_ids: array` — Фильтр по чатам, к которым привязаны напоминания. Доступными считаются чаты, где вы состоите участником, открытые беседы и каналы пространства, а также треды, доступные вам по родительскому чату. Мульти-гостю открытые беседы и каналы доступны, только если он в них участник. Остальные переданные идентификаторы игнорируются без ошибки. Не более 100 идентификаторов. - `performer_ids: array` — Фильтр по ответственным за напоминание. Не более 100 идентификаторов. - `author_id: integer, int32` — Фильтр по автору напоминания - `limit: integer, int32` (default: 50) — Количество возвращаемых сущностей за один запрос @@ -117,7 +117,7 @@ curl "https://api.pachca.com/api/shared/v1/tasks?status=undone&chat_ids[]=198&ch - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -163,7 +163,7 @@ curl "https://api.pachca.com/api/shared/v1/tasks?status=undone&chat_ids[]=198&ch - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/tasks/update.md b/apps/docs/public/api/tasks/update.md index f5b48c3d7..e989e6e0e 100644 --- a/apps/docs/public/api/tasks/update.md +++ b/apps/docs/public/api/tasks/update.md @@ -165,7 +165,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/tasks/22283" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -211,7 +211,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/tasks/22283" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -257,7 +257,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/tasks/22283" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -287,7 +287,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/tasks/22283" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/threads/add.md b/apps/docs/public/api/threads/add.md index b249b93d1..438300e15 100644 --- a/apps/docs/public/api/threads/add.md +++ b/apps/docs/public/api/threads/add.md @@ -39,8 +39,8 @@ curl -X POST "https://api.pachca.com/api/shared/v1/messages/154332686/thread" \ **Схема ответа:** - `data: object` (required) — Тред - - `id: integer, int64` (required) — Идентификатор созданного треда (в тред пишут методом [Новое сообщение](/api/messages/create)). Пример: `265142` - - `chat_id: integer, int64` (required) — Идентификатор чата треда (по нему пишут в тред методом [Новое сообщение](/api/messages/create) и читают его методом [Список сообщений чата](/api/messages/list)). Пример: `2637266155` + - `id: integer, int64` (required) — Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](/api/messages/create) с `entity_type: "thread"`. Пример: `265142` + - `chat_id: integer, int64` (required) — Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](/api/messages/list) и работают с его участниками. Пример: `2637266155` - `message_id: integer, int64` (required, nullable) — Идентификатор сообщения, к которому был создан тред. `null` для самостоятельного треда, созданного без привязки к сообщению. Пример: `154332686` - `message_chat_id: integer, int64` (required, nullable) — Идентификатор чата сообщения. `null` для самостоятельного треда, созданного без привязки к сообщению. Пример: `2637266154` - `updated_at: date-time` (required) — Дата и время обновления треда (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2023-02-01T19:20:47.204Z"` @@ -100,7 +100,7 @@ curl -X POST "https://api.pachca.com/api/shared/v1/messages/154332686/thread" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/threads/create.md b/apps/docs/public/api/threads/create.md index f6711fbab..864223a0d 100644 --- a/apps/docs/public/api/threads/create.md +++ b/apps/docs/public/api/threads/create.md @@ -30,8 +30,8 @@ curl -X POST "https://api.pachca.com/api/shared/v1/threads" \ **Схема ответа:** - `data: object` (required) — Тред - - `id: integer, int64` (required) — Идентификатор созданного треда (в тред пишут методом [Новое сообщение](/api/messages/create)). Пример: `265142` - - `chat_id: integer, int64` (required) — Идентификатор чата треда (по нему пишут в тред методом [Новое сообщение](/api/messages/create) и читают его методом [Список сообщений чата](/api/messages/list)). Пример: `2637266155` + - `id: integer, int64` (required) — Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](/api/messages/create) с `entity_type: "thread"`. Пример: `265142` + - `chat_id: integer, int64` (required) — Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](/api/messages/list) и работают с его участниками. Пример: `2637266155` - `message_id: integer, int64` (required, nullable) — Идентификатор сообщения, к которому был создан тред. `null` для самостоятельного треда, созданного без привязки к сообщению. Пример: `154332686` - `message_chat_id: integer, int64` (required, nullable) — Идентификатор чата сообщения. `null` для самостоятельного треда, созданного без привязки к сообщению. Пример: `2637266154` - `updated_at: date-time` (required) — Дата и время обновления треда (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2023-02-01T19:20:47.204Z"` @@ -75,7 +75,7 @@ curl -X POST "https://api.pachca.com/api/shared/v1/threads" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/threads/get.md b/apps/docs/public/api/threads/get.md index 8b4bcaefa..5e63899d8 100644 --- a/apps/docs/public/api/threads/get.md +++ b/apps/docs/public/api/threads/get.md @@ -1,5 +1,5 @@ > Расположение: Методы API → Треды -> Краткое содержание: Идентификаторы треда: его собственный id, chatid для чтения и отправки сообщений и идентификаторы сообщения, под которым он висит +> Краткое содержание: Идентификаторы треда и сообщения, под которым он висит > Это Markdown-версия конкретной страницы. Для контекста за её пределами (правила API, полный перечень методов, авторизация) ОБЯЗАТЕЛЬНО открой [llms.txt](https://dev.pachca.com/llms.txt) перед ответом — это сэкономит токены и предотвратит неполный ответ. # Информация о треде @@ -10,7 +10,7 @@ > **Скоуп:** `threads:read` -Идентификаторы треда: его собственный `id`, `chat_id` для чтения и отправки сообщений и идентификаторы сообщения, под которым он висит. У самостоятельного треда `message_id` и `message_chat_id` приходят как `null`. +Идентификаторы треда и сообщения, под которым он висит. По `id` в тред пишут методом [Новое сообщение](/api/messages/create) с `entity_type: "thread"`, а по `chat_id` читают его сообщения. У самостоятельного треда `message_id` и `message_chat_id` приходят как `null`. В ответе только идентификаторы: названия и счётчика сообщений у треда нет, о чём он — видно по переписке внутри. Сообщения треда читаются методом [Список сообщений чата](/api/messages/list), а состав участников — методом [Список участников чата](/api/members/list), оба по `chat_id` треда. @@ -37,8 +37,8 @@ curl "https://api.pachca.com/api/shared/v1/threads/265142" \ **Схема ответа:** - `data: object` (required) — Тред - - `id: integer, int64` (required) — Идентификатор созданного треда (в тред пишут методом [Новое сообщение](/api/messages/create)). Пример: `265142` - - `chat_id: integer, int64` (required) — Идентификатор чата треда (по нему пишут в тред методом [Новое сообщение](/api/messages/create) и читают его методом [Список сообщений чата](/api/messages/list)). Пример: `2637266155` + - `id: integer, int64` (required) — Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](/api/messages/create) с `entity_type: "thread"`. Пример: `265142` + - `chat_id: integer, int64` (required) — Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](/api/messages/list) и работают с его участниками. Пример: `2637266155` - `message_id: integer, int64` (required, nullable) — Идентификатор сообщения, к которому был создан тред. `null` для самостоятельного треда, созданного без привязки к сообщению. Пример: `154332686` - `message_chat_id: integer, int64` (required, nullable) — Идентификатор чата сообщения. `null` для самостоятельного треда, созданного без привязки к сообщению. Пример: `2637266154` - `updated_at: date-time` (required) — Дата и время обновления треда (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2023-02-01T19:20:47.204Z"` @@ -82,7 +82,7 @@ curl "https://api.pachca.com/api/shared/v1/threads/265142" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -128,7 +128,7 @@ curl "https://api.pachca.com/api/shared/v1/threads/265142" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/threads/list.md b/apps/docs/public/api/threads/list.md index 302e89e1e..adabb3423 100644 --- a/apps/docs/public/api/threads/list.md +++ b/apps/docs/public/api/threads/list.md @@ -43,8 +43,8 @@ curl "https://api.pachca.com/api/shared/v1/threads?last_message_at_after=2025-01 **Схема ответа:** - `data: array of object` (required) - - `id: integer, int64` (required) — Идентификатор созданного треда (в тред пишут методом [Новое сообщение](/api/messages/create)). Пример: `265142` - - `chat_id: integer, int64` (required) — Идентификатор чата треда (по нему пишут в тред методом [Новое сообщение](/api/messages/create) и читают его методом [Список сообщений чата](/api/messages/list)). Пример: `2637266155` + - `id: integer, int64` (required) — Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](/api/messages/create) с `entity_type: "thread"`. Пример: `265142` + - `chat_id: integer, int64` (required) — Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](/api/messages/list) и работают с его участниками. Пример: `2637266155` - `message_id: integer, int64` (required, nullable) — Идентификатор сообщения, к которому был создан тред. `null` для самостоятельного треда, созданного без привязки к сообщению. Пример: `154332686` - `message_chat_id: integer, int64` (required, nullable) — Идентификатор чата сообщения. `null` для самостоятельного треда, созданного без привязки к сообщению. Пример: `2637266154` - `updated_at: date-time` (required) — Дата и время обновления треда (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2023-02-01T19:20:47.204Z"` @@ -88,7 +88,7 @@ curl "https://api.pachca.com/api/shared/v1/threads?last_message_at_after=2025-01 - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -134,7 +134,7 @@ curl "https://api.pachca.com/api/shared/v1/threads?last_message_at_after=2025-01 - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -180,7 +180,7 @@ curl "https://api.pachca.com/api/shared/v1/threads?last_message_at_after=2025-01 - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/users/create.md b/apps/docs/public/api/users/create.md index 7bd83ef57..07b2e54cc 100644 --- a/apps/docs/public/api/users/create.md +++ b/apps/docs/public/api/users/create.md @@ -39,7 +39,7 @@ - `role: string` — Уровень доступа Значения: `admin` — Администратор, `user` — Сотрудник, `multi_guest` — Мульти-гость, `guest` — Гость - `suspended: boolean` (default: false) — Деактивация пользователя. Пример: `false` - - `list_tags: array of string` — Массив тегов, привязываемых к сотруднику. Пример: `["Product","Design"]` + - `list_tags: array of string` — Массив названий тегов, привязываемых к сотруднику. Значение, которое не является массивом непустых строк, игнорируется. Пример: `["Product","Design"]` - `chat_ids: array of integer` — Идентификаторы чатов, в которые сотрудник будет добавлен сразу при создании. Для роли `guest` параметр обязателен и должен содержать ровно один активный чат. Пример: `[12345]` - `custom_properties: array of object` — Задаваемые дополнительные поля - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678` @@ -120,8 +120,8 @@ curl "https://api.pachca.com/api/shared/v1/users" \ - `first_name: string` (required, nullable, max length: 255) — Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`). Пример: `"Олег"` - `last_name: string` (required, nullable, max length: 255) — Фамилия. Если не заполнена, возвращается `null` или пустая строка. Пример: `"Петров"` - `nickname: string` (required, max length: 255) — Имя пользователя. Пример: `"olegpetrov"` - - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `"olegp@example.com"` - - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `"+79001234567"` + - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `"olegp@example.com"` + - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `"+79001234567"` - `department: string` (required, nullable, max length: 255) — Департамент. Если не указан, возвращается `null` или пустая строка. Пример: `"Продукт"` - `title: string` (required, nullable) — Должность. Если не указана, возвращается `null` или пустая строка. Пример: `"CIO"` - `role: string` (required) — Уровень доступа @@ -130,7 +130,7 @@ curl "https://api.pachca.com/api/shared/v1/users" \ - `invite_status: string` (required) — Статус приглашения Значения: `confirmed` — Принято, `sent` — Отправлено - `inviter_id: integer, int32` (required, nullable) — Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён. Пример: `185` - - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Пример: `["Product","Design"]` + - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Мульти-гостю в чужой карточке приходит пустым. Пример: `["Product","Design"]` - `custom_properties: array of object` (required) — Дополнительные поля сотрудника - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678` - `name: string` (required, max length: 32) — Название поля. Пример: `"Город"` @@ -208,7 +208,7 @@ curl "https://api.pachca.com/api/shared/v1/users" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -254,7 +254,7 @@ curl "https://api.pachca.com/api/shared/v1/users" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -300,7 +300,7 @@ curl "https://api.pachca.com/api/shared/v1/users" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -330,7 +330,7 @@ curl "https://api.pachca.com/api/shared/v1/users" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/users/delete.md b/apps/docs/public/api/users/delete.md index f6d535803..4b82e6ce2 100644 --- a/apps/docs/public/api/users/delete.md +++ b/apps/docs/public/api/users/delete.md @@ -61,7 +61,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/users/12" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -107,7 +107,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/users/12" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/users/get-status.md b/apps/docs/public/api/users/get-status.md index 89a936641..b5cfa6d6b 100644 --- a/apps/docs/public/api/users/get-status.md +++ b/apps/docs/public/api/users/get-status.md @@ -12,6 +12,8 @@ Статус другого сотрудника: эмодзи, подпись, срок и режим «Нет на месте». +Мульти-гостю метод отдаёт статусы только тех, кто приходит ему в [Список сотрудников](/api/users/list), а на остальных отвечает `404`. + Если статус не установлен, метод возвращает `200` и `null` в теле ответа — без объекта-обёртки. Статус с истёкшим `expires_at` какое-то время ещё возвращается, пока не будет очищен, поэтому проверяйте `expires_at` на стороне клиента. ## Параметры @@ -99,7 +101,7 @@ curl "https://api.pachca.com/api/shared/v1/users/12/status" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/users/get.md b/apps/docs/public/api/users/get.md index 5d270aebc..1b539de1b 100644 --- a/apps/docs/public/api/users/get.md +++ b/apps/docs/public/api/users/get.md @@ -14,7 +14,9 @@ Приостановленный сотрудник отдаётся с `suspended: true`, удалённый — `404`, как несуществующий. Бот тоже приходит сюда как сотрудник, с `bot: true`. -Почта и телефон приходят `null`, если в пространстве выключен показ персональных данных, а вызывающий не администратор. Свою карточку сотрудник видит целиком — она же отдаётся методом [Свой профиль](/api/profile/get) и без скоупа `users:read`. +Мульти-гостю метод отдаёт только тех, кто приходит ему в [Список сотрудников](/api/users/list), а на остальных отвечает `404`. + +Почта и телефон приходят `null`, если в пространстве выключен показ персональных данных, а вызывающий не администратор. Мульти-гостю они всегда приходят `null`. Свою карточку сотрудник видит целиком — она же отдаётся методом [Свой профиль](/api/profile/get) и без скоупа `users:read`. ## Параметры @@ -41,8 +43,8 @@ curl "https://api.pachca.com/api/shared/v1/users/12" \ - `first_name: string` (required, nullable, max length: 255) — Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`). Пример: `"Олег"` - `last_name: string` (required, nullable, max length: 255) — Фамилия. Если не заполнена, возвращается `null` или пустая строка. Пример: `"Петров"` - `nickname: string` (required, max length: 255) — Имя пользователя. Пример: `"olegpetrov"` - - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `"olegp@example.com"` - - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `"+79001234567"` + - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `"olegp@example.com"` + - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `"+79001234567"` - `department: string` (required, nullable, max length: 255) — Департамент. Если не указан, возвращается `null` или пустая строка. Пример: `"Продукт"` - `title: string` (required, nullable) — Должность. Если не указана, возвращается `null` или пустая строка. Пример: `"CIO"` - `role: string` (required) — Уровень доступа @@ -51,7 +53,7 @@ curl "https://api.pachca.com/api/shared/v1/users/12" \ - `invite_status: string` (required) — Статус приглашения Значения: `confirmed` — Принято, `sent` — Отправлено - `inviter_id: integer, int32` (required, nullable) — Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён. Пример: `185` - - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Пример: `["Product","Design"]` + - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Мульти-гостю в чужой карточке приходит пустым. Пример: `["Product","Design"]` - `custom_properties: array of object` (required) — Дополнительные поля сотрудника - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678` - `name: string` (required, max length: 32) — Название поля. Пример: `"Город"` @@ -145,7 +147,7 @@ curl "https://api.pachca.com/api/shared/v1/users/12" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -191,7 +193,7 @@ curl "https://api.pachca.com/api/shared/v1/users/12" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/users/list.md b/apps/docs/public/api/users/list.md index 5f4ad7345..e81c8bc22 100644 --- a/apps/docs/public/api/users/list.md +++ b/apps/docs/public/api/users/list.md @@ -14,7 +14,11 @@ Боты в пространстве — тоже сотрудники и приходят в общем списке с `bot: true`. Но из выдачи по `query` они исключены: чтобы найти бота по имени, перебирайте страницы без поискового запроса или пользуйтесь методом [Список ботов](/api/bots/list). -Почта и телефон приходят `null`, если в пространстве выключен показ персональных данных, а вызывающий не администратор. +Мульти-гостю метод отдаёт не всё пространство, а тех, кого он видит в интерфейсе: его самого, участников общих с ним чатов вместе с ботами и публичных ботов. Треды и архивные чаты общими не считаются. + +Почта и телефон приходят `null`, если в пространстве выключен показ персональных данных, а вызывающий не администратор. Мульти-гостю они всегда приходят `null`. + +Поиск по `query` может не уложиться по времени: тогда метод отвечает `504` с кодом `timeout`, и запрос стоит сузить. Карточку одного сотрудника отдаёт [Информация о сотруднике](/api/users/get), свою — [Свой профиль](/api/profile/get). @@ -46,8 +50,8 @@ curl "https://api.pachca.com/api/shared/v1/users?query=Олег&limit=1" \ - `first_name: string` (required, nullable, max length: 255) — Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`). Пример: `"Олег"` - `last_name: string` (required, nullable, max length: 255) — Фамилия. Если не заполнена, возвращается `null` или пустая строка. Пример: `"Петров"` - `nickname: string` (required, max length: 255) — Имя пользователя. Пример: `"olegpetrov"` - - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `"olegp@example.com"` - - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `"+79001234567"` + - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `"olegp@example.com"` + - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `"+79001234567"` - `department: string` (required, nullable, max length: 255) — Департамент. Если не указан, возвращается `null` или пустая строка. Пример: `"Продукт"` - `title: string` (required, nullable) — Должность. Если не указана, возвращается `null` или пустая строка. Пример: `"CIO"` - `role: string` (required) — Уровень доступа @@ -56,7 +60,7 @@ curl "https://api.pachca.com/api/shared/v1/users?query=Олег&limit=1" \ - `invite_status: string` (required) — Статус приглашения Значения: `confirmed` — Принято, `sent` — Отправлено - `inviter_id: integer, int32` (required, nullable) — Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён. Пример: `185` - - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Пример: `["Product","Design"]` + - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Мульти-гостю в чужой карточке приходит пустым. Пример: `["Product","Design"]` - `custom_properties: array of object` (required) — Дополнительные поля сотрудника - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678` - `name: string` (required, max length: 32) — Название поля. Пример: `"Город"` @@ -150,7 +154,7 @@ curl "https://api.pachca.com/api/shared/v1/users?query=Олег&limit=1" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -196,7 +200,7 @@ curl "https://api.pachca.com/api/shared/v1/users?query=Олег&limit=1" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -242,7 +246,37 @@ curl "https://api.pachca.com/api/shared/v1/users?query=Олег&limit=1" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + +### 504: Server error + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/users/remove-avatar.md b/apps/docs/public/api/users/remove-avatar.md index 0e7c3dba6..2e1c56cfc 100644 --- a/apps/docs/public/api/users/remove-avatar.md +++ b/apps/docs/public/api/users/remove-avatar.md @@ -57,7 +57,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/users/12/avatar" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -84,13 +84,13 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/users/12/avatar" \ **anyOf** - один из вариантов: -- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422) +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) - `errors: array of object` (required) — Массив ошибок - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -123,7 +123,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/users/12/avatar" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/users/remove-status.md b/apps/docs/public/api/users/remove-status.md index 52d068a46..084945c48 100644 --- a/apps/docs/public/api/users/remove-status.md +++ b/apps/docs/public/api/users/remove-status.md @@ -73,7 +73,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/users/12/status" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/users/update-avatar.md b/apps/docs/public/api/users/update-avatar.md index 90ddd7167..26317d467 100644 --- a/apps/docs/public/api/users/update-avatar.md +++ b/apps/docs/public/api/users/update-avatar.md @@ -86,7 +86,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/users/12/avatar" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -113,13 +113,13 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/users/12/avatar" \ **anyOf** - один из вариантов: -- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422) +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) - `errors: array of object` (required) — Массив ошибок - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -152,7 +152,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/users/12/avatar" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -182,7 +182,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/users/12/avatar" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/users/update-status.md b/apps/docs/public/api/users/update-status.md index f33e6e21d..d7252e91f 100644 --- a/apps/docs/public/api/users/update-status.md +++ b/apps/docs/public/api/users/update-status.md @@ -112,7 +112,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/users/12/status" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -174,7 +174,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/users/12/status" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -204,7 +204,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/users/12/status" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/users/update.md b/apps/docs/public/api/users/update.md index adff239d8..723af5667 100644 --- a/apps/docs/public/api/users/update.md +++ b/apps/docs/public/api/users/update.md @@ -20,6 +20,8 @@ Незнакомое значение роли метод молча пропускает: ответ приходит успешный, а роль остаётся прежней. +У бота ник должен оканчиваться на `_bot` и быть уникальным в пространстве, иначе метод отвечает `422` с ошибкой на поле `nickname`: `invalid` или `already_exists`. Прежний ник бота проверяется, только когда его меняют. + ## Параметры ### Path параметры @@ -46,7 +48,7 @@ - `role: string` — Уровень доступа Значения: `admin` — Администратор, `user` — Сотрудник, `multi_guest` — Мульти-гость - `suspended: boolean` (default: false) — Деактивация пользователя. Пример: `false` - - `list_tags: array of string` — Массив тегов, привязываемых к сотруднику. Пример: `["Product","Design"]` + - `list_tags: array of string` — Массив названий тегов, привязываемых к сотруднику. Список заменяет прежний целиком, пустой снимает все теги. Значение, которое не является массивом непустых строк, игнорируется: теги сотрудника не меняются. Пример: `["Product","Design"]` - `custom_properties: array of object` — Задаваемые дополнительные поля - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678` - `value: string` (required, max length: 768) — Устанавливаемое значение. Пример: `"Санкт-Петербург"` @@ -119,8 +121,8 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/users/12" \ - `first_name: string` (required, nullable, max length: 255) — Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`). Пример: `"Олег"` - `last_name: string` (required, nullable, max length: 255) — Фамилия. Если не заполнена, возвращается `null` или пустая строка. Пример: `"Петров"` - `nickname: string` (required, max length: 255) — Имя пользователя. Пример: `"olegpetrov"` - - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `"olegp@example.com"` - - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `"+79001234567"` + - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `"olegp@example.com"` + - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `"+79001234567"` - `department: string` (required, nullable, max length: 255) — Департамент. Если не указан, возвращается `null` или пустая строка. Пример: `"Продукт"` - `title: string` (required, nullable) — Должность. Если не указана, возвращается `null` или пустая строка. Пример: `"CIO"` - `role: string` (required) — Уровень доступа @@ -129,7 +131,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/users/12" \ - `invite_status: string` (required) — Статус приглашения Значения: `confirmed` — Принято, `sent` — Отправлено - `inviter_id: integer, int32` (required, nullable) — Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён. Пример: `185` - - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Пример: `["Product","Design"]` + - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Мульти-гостю в чужой карточке приходит пустым. Пример: `["Product","Design"]` - `custom_properties: array of object` (required) — Дополнительные поля сотрудника - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678` - `name: string` (required, max length: 32) — Название поля. Пример: `"Город"` @@ -207,7 +209,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/users/12" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -253,7 +255,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/users/12" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -299,7 +301,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/users/12" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -329,7 +331,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/users/12" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -359,7 +361,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/users/12" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/views/open.md b/apps/docs/public/api/views/open.md index ef4432b59..0003acfe5 100644 --- a/apps/docs/public/api/views/open.md +++ b/apps/docs/public/api/views/open.md @@ -80,7 +80,7 @@ Значения: `radio` — Для радиокнопок всегда radio - `name: string` (required, max length: 255) — Название, которое будет передано в ваше приложение как ключ указанного пользователем выбора - `label: string` (required, max length: 150) — Подпись к группе радиокнопок - - `options: array of object` (required, max items: 10) — Массив радиокнопок + - `options: array of object` (required, max items: 20) — Массив радиокнопок - `text: string` (required, max length: 75) — Отображаемый текст - `value: string` (required, max length: 255) — Уникальное строковое значение, которое будет передано в ваше приложение при выборе этого пункта - `description: string` (max length: 75) — Пояснение, которое будет указано серым цветом в этом пункте под отображаемым текстом @@ -92,7 +92,7 @@ Значения: `checkbox` — Для чекбоксов всегда checkbox - `name: string` (required, max length: 255) — Название, которое будет передано в ваше приложение как ключ указанного пользователем выбора - `label: string` (required, max length: 150) — Подпись к группе чекбоксов - - `options: array of object` (required, max items: 10) — Массив чекбоксов + - `options: array of object` (required, max items: 20) — Массив чекбоксов - `text: string` (required, max length: 75) — Отображаемый текст - `value: string` (required, max length: 255) — Уникальное строковое значение, которое будет передано в ваше приложение при выборе этого пункта - `description: string` (max length: 75) — Пояснение, которое будет указано серым цветом в этом пункте под отображаемым текстом @@ -373,7 +373,7 @@ curl "https://api.pachca.com/api/shared/v1/views/open" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -419,7 +419,7 @@ curl "https://api.pachca.com/api/shared/v1/views/open" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -465,7 +465,7 @@ curl "https://api.pachca.com/api/shared/v1/views/open" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -495,7 +495,7 @@ curl "https://api.pachca.com/api/shared/v1/views/open" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/api/views/submit-response.md b/apps/docs/public/api/views/submit-response.md index fc9e36da5..50b26799a 100644 --- a/apps/docs/public/api/views/submit-response.md +++ b/apps/docs/public/api/views/submit-response.md @@ -104,7 +104,7 @@ curl "https://api.pachca.com/api/shared/v1/views/01KAJZ2XDSS2S3DSW9EXJZ0TBV/subm - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -150,7 +150,7 @@ curl "https://api.pachca.com/api/shared/v1/views/01KAJZ2XDSS2S3DSW9EXJZ0TBV/subm - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -180,7 +180,7 @@ curl "https://api.pachca.com/api/shared/v1/views/01KAJZ2XDSS2S3DSW9EXJZ0TBV/subm - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -210,7 +210,7 @@ curl "https://api.pachca.com/api/shared/v1/views/01KAJZ2XDSS2S3DSW9EXJZ0TBV/subm - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -240,7 +240,7 @@ curl "https://api.pachca.com/api/shared/v1/views/01KAJZ2XDSS2S3DSW9EXJZ0TBV/subm - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/guides/audit-events.md b/apps/docs/public/guides/audit-events.md index 1ef88d161..44852bac2 100644 --- a/apps/docs/public/guides/audit-events.md +++ b/apps/docs/public/guides/audit-events.md @@ -101,6 +101,11 @@ - `bot_token_recreated` — Токен бота перевыпущен (ротация) - `bot_deleted` — Бот удалён - `bot_oauth_client_updated` — Изменены параметры OAuth-клиента бота +- `bot_oauth_client_disabled` — У бота выключена авторизация от имени сотрудника +- `bot_oauth_client_secret_rotated` — Обновлён секрет OAuth-клиента бота +- `bot_token_created` — Выпущен токен бота +- `bot_token_updated` — Изменены имя или скоупы токена бота +- `bot_token_reissued` — Отдельный токен бота перевыпущен - `oauth_authorization_granted` — Пользователь выдал OAuth-клиенту доступ к своим данным - `oauth_authorization_revoked` — Доступ OAuth-клиента к данным пользователя отозван - `oauth_device_authorization_approved` — Сотрудник подтвердил вход приложения с устройства diff --git a/apps/docs/public/guides/bots/access.md b/apps/docs/public/guides/bots/access.md index 0e68c0f88..d171cd344 100644 --- a/apps/docs/public/guides/bots/access.md +++ b/apps/docs/public/guides/bots/access.md @@ -12,8 +12,8 @@ Чтобы бот получил доступ к закрытому каналу или беседе, его нужно добавить туда как участника. После добавления бот автоматически получает доступ ко всем тредам этого чата. Добавить бота в чат можно двумя способами: -- Через интерфейс — в диалоге **Добавление участников** на вкладке **Интеграции**. Список доступных ботов зависит от настройки [Кто может добавлять бота в чаты](/guides/bots/setup#kto-mozhet-dobavlyat-bota-v-chaty). -- Через API — метод [Добавление пользователей](/api/members/add), передав `user_id` бота в `member_ids`. +- Через интерфейс — в диалоге **Добавление участников** (в канале — **Добавление подписчиков**) на вкладке **Интеграции**. Список доступных ботов зависит от настройки [Кто может добавлять бота в чаты](/guides/bots/settings#kto-mozhet-dobavlyat-bota-v-chaty). +- Через API — метод [Добавление пользователей](/api/members/add), передав `id` бота в `member_ids`. Настройка действует и здесь: если вам добавлять бота нельзя, метод ответит `403` с кодом `bot_add_denied` и не добавит никого из запроса. ## Треды @@ -21,17 +21,13 @@ Добавить бота в тред можно двумя способами: - Через API — метод [Добавление пользователей](/api/members/add), передав `chat_id` треда. -- Через упоминание `@никнейм_бота` в сообщении — доступно, когда бот настроен как **публичный**. +- Через упоминание `@никнейм_бота` в сообщении — доступно, когда бот настроен как **публичный**, всем, кроме гостей и мульти-гостей. ## Личные сообщения -Пользователь может писать боту личные сообщения и взаимодействовать с ним 1 на 1 в трёх случаях: +Написать боту в личные сообщения сотрудник может, если бот публичный, у них есть общая беседа или канал или бот написал ему первым. Подробнее об этих случаях и о том, что происходит при первом сообщении, — в разделе [Первый диалог с ботом](/guides/bots/first-contact#kak-sotrudnik-popadaet-k-botu). -- Бот настроен как **публичный** — любой участник пространства может начать диалог. -- Бот сам ранее отправил пользователю [Новое сообщение](/api/messages/create) через API (с `entity_type: "user"`) — после этого пользователь может отвечать, даже если бот не публичный. -- Бот и пользователь состоят в одной беседе или канале, и этот чат не в архиве — общего чата достаточно, чтобы открыть с ботом личную переписку. - -При этом бота нельзя добавить в существующие личные сообщения между двумя участниками пространства. +Бота нельзя добавить в существующие личные сообщения между двумя участниками пространства. ## Поиск бота @@ -41,7 +37,7 @@ Одинаково для всех ролей, включая гостей и мульти-гостей: -- **Публичные боты** — везде в пространстве, даже если у пользователя нет с ними общих чатов. +- **Публичные боты** — везде в пространстве, даже если у сотрудника нет с ними общих чатов. - **Непубличные боты-участники текущего чата** — дополнительно, когда `@` набирается внутри этого чата. Непубличные боты, не состоящие в текущем чате, в подсказках упоминаний не появляются. @@ -50,25 +46,29 @@ Поиск из общей строки поиска и при создании личных сообщений ведёт себя по-разному в зависимости от роли: -- **Сотрудники и администраторы** — видят и обычных пользователей, и публичных ботов в пространстве. -- **Гости и мульти-гости** — видят **только тех, с кем уже есть личные сообщения**. Бот появится в выдаче только если с ним уже была переписка — например, потому что бот сам ранее отправил пользователю [Новое сообщение](/api/messages/create). +- **Сотрудники и администраторы** — видят и сотрудников, и публичных ботов в пространстве. +- **Гости и мульти-гости** — видят только тех, с кем у них уже есть личные сообщения, а по запросу от трёх символов — ещё и участников общих чатов. + +Непубличных ботов глобальный поиск не показывает никому, даже если бот уже писал сотруднику: такому боту отвечают в уже открытой переписке. ### Список добавления участников в чат -Зависит от настройки [Кто может добавлять бота в чаты](/guides/bots/setup#kto-mozhet-dobavlyat-bota-v-chaty) каждого бота и роли пользователя: +Зависит от настройки [Кто может добавлять бота в чаты](/guides/bots/settings#kto-mozhet-dobavlyat-bota-v-chaty) каждого бота и роли того, кто добавляет: - **Создатель бота** — всегда видит ботов, которых он создал. -- **Администраторы** — видят ботов с настройками «Все участники», «Публичный бот», «Создатель и Администраторы». -- **Сотрудники** — видят ботов с настройками «Все участники» и «Публичный бот». +- **Администраторы** — видят публичных ботов и ботов с настройками «Все участники (кроме гостей)» и «Создатель и Администраторы». +- **Сотрудники** — видят публичных ботов и ботов с настройкой «Все участники (кроме гостей)». - **Гости и мульти-гости** — в выдаче пусто. -> Бот получает [исходящие вебхуки](/guides/webhook/overview) только из тех чатов и тредов, в которых он состоит. Глобальные события (например, изменение участников пространства) приходят без добавления в чат. +Бот с настройкой [Ограничить одним чатом](/guides/bots/settings#ogranichit-odnim-chatom), который уже состоит в беседе или канале, в списке не показывается никому, в том числе создателю. + +> Бот получает [исходящие вебхуки](/guides/webhook/overview) из чатов, где он состоит, из тредов этих чатов и из тредов, куда его добавили. Без добавления в чат приходят изменения участников пространства, ссылки на домены бота и отправка форм, которые открыл бот. ## Связанные разделы - [Права и роли](/guides/permissions) -- [Создание и настройка](/guides/bots/setup) +- [Создание бота](/guides/bots/setup) - [Треды](/guides/threads) - [Готовые примеры реализации](/guides/bots/examples) diff --git a/apps/docs/public/guides/bots/examples.md b/apps/docs/public/guides/bots/examples.md index a79d2885a..e0cb6e31b 100644 --- a/apps/docs/public/guides/bots/examples.md +++ b/apps/docs/public/guides/bots/examples.md @@ -9,7 +9,7 @@ Автоматическое приветствие новых сотрудников в личных сообщениях. Три шаблона сообщений: `short`, `default`, `extended`. Развёртывание на Vercel или собственном сервере. -> Подробнее — в статье [Welcome Bot](https://www.pachca.com/blog-posts/welcome-bot) и на [GitHub](https://github.com/pachca/public-integrations/tree/main/welcome-bot) +> Подробнее — в статье [Welcome Bot](https://pachca.com/blog/welcome-bot) и на [GitHub](https://github.com/pachca/public-integrations/tree/main/welcome-bot) ## Review Bot @@ -21,7 +21,7 @@ ## Unfurl-бот -Бот для создания превью ссылок из рабочих сервисов (Trello, Kaiten, Пачка) прямо в чате. Когда пользователь отправляет ссылку, вместо простого URL все видят информативное превью с заголовком, описанием и изображением. +Бот для создания превью ссылок из рабочих сервисов (Trello, Kaiten, Пачка) прямо в чате. Когда сотрудник отправляет ссылку, вместо простого URL все видят информативное превью с заголовком, описанием и изображением. > Подробнее — в статье [Unfurl-бот](https://pachca.com/blog/unfurl-bot) и на [GitHub](https://github.com/pachca/public-integrations/tree/main/Unfurling-bot) diff --git a/apps/docs/public/guides/bots/first-contact.md b/apps/docs/public/guides/bots/first-contact.md new file mode 100644 index 000000000..658a8a09a --- /dev/null +++ b/apps/docs/public/guides/bots/first-contact.md @@ -0,0 +1,112 @@ +> Расположение: Боты +> Краткое содержание: Как сотрудник начинает разговор с ботом в Пачке и почему бот молчит: личный чат создаётся без события, новый бот слушает только команды. Что настроить заранее и как ответить на первое сообщение +> Это Markdown-версия конкретной страницы. Для контекста за её пределами (правила API, полный перечень методов, авторизация) ОБЯЗАТЕЛЬНО открой [llms.txt](https://dev.pachca.com/llms.txt) перед ответом — это сэкономит токены и предотвратит неполный ответ. + + +# Первый диалог с ботом + +Чат-бот начинается с того, что сотрудник ему пишет. Здесь — как сотрудник попадает к боту, что происходит в этот момент и что нужно настроить, чтобы бот ответил. + +## Как сотрудник попадает к боту + +Написать боту в личные сообщения можно в трёх случаях: + +- **Бот публичный** — сотрудник находит его в поиске или на вкладке **Обзор** в [витрине](/guides/bots/showcase) и нажимает **Сообщение**. +- **Есть общий чат** — сотрудник и бот состоят в одной беседе или канале, и этот чат не в архиве. Непубличному боту этого достаточно. +- **Бот написал первым** — бот отправил сотруднику сообщение методом [Новое сообщение](/api/messages/create) с `entity_type: "user"`. После этого сотрудник может отвечать, даже если бот не публичный. + +Публикация в витрине сама по себе написать боту не позволяет: у опубликованного, но непубличного бота кнопки **Сообщение** нет, если с ним нет общего чата. Подробнее о доступах — в разделе [Доступы к чатам и сообщениям](/guides/bots/access). + +## Почему бот молчит + +> **Внимание:** **Личный чат создаётся молча.** Когда сотрудник открывает переписку с ботом, события об этом нет — ни о новом чате, ни о новом участнике. Бот узнаёт о сотруднике только из его первого сообщения, поэтому первый ход всегда за сотрудником. + + +> **Внимание:** **Новый бот слушает только команды, а их список пуст.** Так у любого бота — созданного и в интерфейсе, и методом [Новый бот](/api/bots/create): по умолчанию выбран режим **Начинающиеся с команд**, а команд нет. О новых сообщениях такой бот не узнает, и ошибки при этом нет — в ответе метода видно только `trigger_on: "commands"` и пустой `commands`. + + +## Что настроить заранее + +До того как сотрудник напишет, у бота должно быть: + + + ### Шаг 1. Исходящий вебхук с адресом + +На вкладке **Исходящий вебхук** нажмите **Включить** и укажите URL своего сервера. Локальные и внутренние адреса не принимаются, для разработки подойдёт туннель. Через API — поле `outgoing_url`. + + + ### Шаг 2. Событие о новых сообщениях и режим + +Включите **Новые сообщения** и выберите **Любые сообщения** — тогда бот получит всё, что ему пишут. Если бот работает по командам, выберите **Начинающиеся с команд** и перечислите их, включая ту, с которой начинается разговор, например `/start`. Через API — `events` с `message_new` и `trigger_on` со значением `all_messages` или `commands` вместе с `commands`. + +Если в ответах будут Data-кнопки или формы, включите и событие **Нажатие кнопок** (`button_click`): без него нажатия и отправленные формы до бота не дойдут. + + + ### Шаг 3. Проверка подписи и свои сообщения + +Проверяйте подпись каждого запроса по **Signing secret**, чтобы отличать запросы Пачки от чужих. Включите **Игнорировать свои сообщения**, чтобы бот не реагировал на собственные ответы. Подробнее — в разделе [Безопасность и обработчик](/guides/webhook/handler). + + + ### Шаг 4. Токен с правом отправки сообщений + +Чтобы ответить, нужен токен бота с правом `messages:create`. Подробнее — в разделе [Токены бота](/guides/bots/tokens). + + +Так выглядит вкладка **Исходящий вебхук** с этими настройками: + +![Вкладка «Исходящий вебхук»: Webhook URL, Signing secret, «Игнорировать свои сообщения», событие «Новые сообщения» с режимом и «Нажатие кнопок»](/images/outgoing-webhook.webp) + +*Вкладка «Исходящий вебхук» в карточке бота* + + +Если бот авторизует сотрудников, к этому добавляется настройка вкладки **OAuth**. Всё вместе собрано в [Чек-листе запуска](/guides/oauth/checklist). + +## Ответ на первое сообщение + +Сотрудник пишет `/start` или сразу свой вопрос. Бот получает событие о новом сообщении: в личной переписке `entity_type` равен `"user"`, а `user_id` — идентификатор сотрудника. + +![Сотрудник пишет боту /start, бот отвечает приветствием и кнопкой «Предоставить доступ»](/images/bots/first_contact.webp) + +*Ответ бота на /start* + + +```json title="Событие о первом сообщении" +{ + "type": "message", + "event": "new", + "id": 1245817, + "entity_type": "user", + "entity_id": 2345, + "chat_id": 9012, + "user_id": 2345, + "content": "/start", + "created_at": "2026-09-24T09:30:00.000Z", + "webhook_timestamp": 1790242200 +} +``` + +Ответ отправляется методом [Новое сообщение](/api/messages/create) в ту же переписку — с `entity_type: "user"` и `entity_id`, равным `user_id` из события. К приветствию удобно сразу приложить [кнопки](/guides/buttons): Data-кнопки для частых действий или URL-кнопку, если сотруднику нужно что-то открыть. + +```bash title="Приветствие с кнопкой" +curl -X POST https://api.pachca.com/api/shared/v1/messages \ + -H "Authorization: Bearer $BOT_TOKEN" \ + -H "Content-Type: application/json" \ + -d '{ + "message": { + "entity_type": "user", + "entity_id": 2345, + "content": "Привет! Я помогу с заявками на отпуск.", + "buttons": [[{ "text": "Новая заявка", "data": "vacation_new" }]] + } + }' +``` + +Нажатие Data-кнопки придёт отдельным событием, если у бота включено **Нажатие кнопок**. Подробнее — в разделе [Кнопки в сообщениях](/guides/buttons). Если боту нужны права самого сотрудника, например чтобы работать с его задачами, в приветствии отправляют кнопку авторизации — подробнее в разделе [Получение токена](/guides/oauth/flow). + + +## Связанные разделы + +- [Доступы к чатам и сообщениям](/guides/bots/access) +- [Исходящие вебхуки: Настройка и типы событий](/guides/webhook/events) +- [Кнопки в сообщениях](/guides/buttons) +- [Авторизация от имени сотрудника: Чек-лист запуска](/guides/oauth/checklist) diff --git a/apps/docs/public/guides/bots/overview.md b/apps/docs/public/guides/bots/overview.md index f530a1882..dd89dd9f5 100644 --- a/apps/docs/public/guides/bots/overview.md +++ b/apps/docs/public/guides/bots/overview.md @@ -1,5 +1,5 @@ > Расположение: Боты -> Краткое содержание: Боты в Пачке: что это, типы ботов, доступность в чатах и подмена имени и аватара отправителя в сообщениях +> Краткое содержание: Боты в Пачке: сервисный участник пространства, на котором строятся интеграции. Что умеет бот, с чего начать под вашу задачу, где бот находится в интерфейсе, вкладка «Управление» и подмена имени отправителя > Это Markdown-версия конкретной страницы. Для контекста за её пределами (правила API, полный перечень методов, авторизация) ОБЯЗАТЕЛЬНО открой [llms.txt](https://dev.pachca.com/llms.txt) перед ответом — это сэкономит токены и предотвратит неполный ответ. @@ -7,7 +7,7 @@ ## Что такое бот -Бот в Пачке — это посредник между вашим сервисом и мессенджером, действующий от своего имени. Он может отправлять и получать сообщения, реагировать на команды пользователей, открывать интерактивные формы и использовать другие методы, предоставляемые [API](/guides/quickstart). +Бот в Пачке — сервисный участник пространства, на котором строятся интеграции. У него есть имя, аватар и никнейм, он состоит в чатах, пишет сообщения и получает события, но действует от своего имени, а не от имени кого-то из сотрудников. Через ботов работают уведомления из внешних сервисов, чат-боты с командами, кнопки и формы, превью ссылок и автоматизации, которые действуют от имени сотрудника. ![Сообщение от бота в Пачке](/images/bots/bot_message.webp) @@ -17,27 +17,56 @@ > **Внимание:** Бот имеет доступ не ко всем методам API. Например, добавление участников в пространство и экспорт сообщений доступны только с персональным токеном. Подробнее о токенах в разделе [Авторизация](/api/authorization). -> Бот позволяет работать с вебхуками, кнопками и формами в Пачке. Подробнее в разделах [Входящие вебхуки](/guides/incoming-webhooks), [Исходящие вебхуки](/guides/webhook/overview), [Кнопки в сообщениях](/guides/buttons), [Формы](/guides/forms/overview) и [Разворачивание ссылок](/guides/link-previews). +## С чего начать +Выберите строку по задаче, которую решает интеграция: -## Типы ботов +| Задача | Что включить у бота | Раздел | +| --- | --- | --- | +| Присылать в чат уведомления из CRM, CI/CD или мониторинга | Входящий вебхук | [Входящие вебхуки](/guides/incoming-webhooks) | +| Отвечать на сообщения и команды сотрудников | Исходящий вебхук и токен | [Первый диалог с ботом](/guides/bots/first-contact) | +| Писать в чаты и читать их из своего кода | Токен | [Токены бота](/guides/bots/tokens) | +| Спросить сотрудника прямо в сообщении | Кнопки или форма | [Кнопки в сообщениях](/guides/buttons), [Формы](/guides/forms/overview) | +| Показывать карточки ссылок на внутренние сервисы | Событие ссылок с доменами | [Разворачивание ссылок](/guides/link-previews) | +| Работать с данными сотрудника его правами: задачи, чаты, сервисы, где он работает | Авторизация от имени сотрудника | [Авторизация от имени сотрудника](/guides/oauth/overview), [Чек-лист запуска](/guides/oauth/checklist) | +| Дать сотрудникам найти и подключить бота самим | Публичный бот или публикация в витрине | [Витрина](/guides/bots/showcase) | -Тип выбирается при создании и не меняется. Подробнее о создании — в разделе [Создание и настройка](/guides/bots/setup). +## Где бот находится в интерфейсе -- **Для одного чата** — подойдёт для отправки уведомлений из других сервисов. В одном чате можно собрать всех получателей и обсуждать уведомления в тредах. -- **Для нескольких чатов** — подойдёт, если вы хотите создать личное взаимодействие бота с каждым участником вашей компании или разными группами участников. -- **Unfurl бот** (только администраторам) — подойдёт для получения событий об отправке ссылок во всех чатах вашего пространства и возможности создавать их предпросмотр. +Боты пространства собраны в разделе **Интеграции** > **Боты** на двух вкладках: -Ограничение «для одного чата» распространяется только на каналы и беседы — бот по-прежнему может участвовать в тредах и личных сообщениях. Бот любого типа может быть настроен как публичный. +- **Обзор** — витрина: публичные боты и опубликованные боты с авторизацией. Её видят сотрудники, администраторы и мульти-гости. +- **Управление** — боты, которых вы можете редактировать. Вкладка и кнопка **Создать бота** в шапке раздела есть у тех, кому разрешено создавать интеграции. -## Доступность бота +![Список ботов на вкладке «Управление»: название, создатель, число авторизаций, дата создания и последнее использование](/images/bots/bots_management.webp) -Бот взаимодействует с пространством как участник с ролью **«Сотрудник»**: видит открытые каналы, а в закрытые каналы, треды и личные сообщения его нужно подключать отдельно. Дополнительно бота можно сделать **публичным** — тогда любой участник пространства сможет начать с ним диалог и упоминать через `@никнейм`. +*Вкладка «Управление»* -> Бот получает [исходящие вебхуки](/guides/webhook/overview) только из тех чатов и тредов, в которых он состоит. Глобальные события (например, изменение участников пространства) приходят без добавления в чат. +На вкладке **Управление** собраны боты, которых вы можете редактировать: созданные вами и те, чьи настройки открывают вам доступ. Для каждого видны создатель, число сотрудников, [авторизовавших бота](/guides/oauth/overview), дата создания и когда бот последний раз обращался к API или получал вебхук. Нажатие на строку открывает карточку бота, а в меню бота есть ещё его профиль и удаление. -Подробнее — в разделе [Доступы к чатам и сообщениям](/guides/bots/access). +У каждого бота есть карточка с пятью вкладками, по одной на возможность: + +![Карточка бота с вкладками «Основное», «Входящий вебхук», «Исходящий вебхук», «API» и «OAuth»](/images/bots/bot_webhook_api_settings.webp) + +*Карточка бота* + + +| Вкладка | Что настраивается | Раздел | +| --- | --- | --- | +| **Основное** | Профиль, публичность, кто добавляет бота в чаты и кто его редактирует | [Настройки бота](/guides/bots/settings) | +| **Входящий вебхук** | Адрес для внешних сервисов, источник и шаблон сообщения | [Входящие вебхуки](/guides/incoming-webhooks) | +| **Исходящий вебхук** | Адрес вашего сервера, подпись и события | [Исходящие вебхуки](/guides/webhook/overview) | +| **API** | Токены бота и их права | [Токены бота](/guides/bots/tokens) | +| **OAuth** | Авторизация от имени сотрудников, страница в витрине и запрашиваемый доступ | [Настройка авторизации](/guides/oauth/setup) | + +Бот создаётся только с названием и ником, а каждую возможность включают на своей вкладке, когда она понадобится. Подробнее — в разделе [Создание бота](/guides/bots/setup). + +## Бот и сотрудник + +Бот взаимодействует с пространством как участник с ролью **«Сотрудник»**: видит открытые каналы вместе с их тредами. В закрытые каналы и беседы его добавляют участником, а в отдельный тред можно добавить и без родительского чата. Публичного бота сотрудники находят в поиске, пишут ему и добавляют в чаты. Подробнее — в разделе [Доступы к чатам и сообщениям](/guides/bots/access). + +Своими правами бот ограничен: он не видит чужие личные переписки и не может действовать как конкретный сотрудник. Когда автоматизации нужны права самого сотрудника, например чтобы собрать сводку по его чатам, завести задачу от его имени или связать его аккаунт в другом сервисе с Пачкой, сотрудник авторизует бота: один раз соглашается на экране согласия, и дальше бот работает от его имени. Подробнее — в разделе [Авторизация от имени сотрудника](/guides/oauth/overview). ## Подмена имени и аватара отправителя @@ -46,7 +75,7 @@ *Сообщение от бота с подменой имени и аватара* -Метод [Новое сообщение](/api/messages/create) поддерживает поля `display_name` и `display_avatar_url`, позволяющие указать произвольное имя и аватар отправителя для конкретного сообщения. Бейдж **Бот** при этом сохраняется, а при открытии профиля отправителя пользователь увидит оригинальное имя и аватар бота. +Метод [Новое сообщение](/api/messages/create) поддерживает поля `display_name` и `display_avatar_url`, позволяющие указать произвольное имя и аватар отправителя для конкретного сообщения. Бейдж **Бот** при этом сохраняется, а при открытии профиля отправителя сотрудник увидит оригинальное имя и аватар бота. Это полезно для миграции сообщений из другого сервиса: бот отправляет сообщения от своего имени, но каждое сообщение отображается с именем и аватаром реального автора из исходной системы. @@ -56,7 +85,7 @@ ## Связанные разделы -- [Создание и настройка](/guides/bots/setup) -- [Доступы к чатам и сообщениям](/guides/bots/access) -- [Готовые примеры реализации](/guides/bots/examples) +- [Создание бота](/guides/bots/setup) +- [Первый диалог с ботом](/guides/bots/first-contact) +- [Авторизация от имени сотрудника: Обзор](/guides/oauth/overview) - [Исходящие вебхуки](/guides/webhook/overview) diff --git a/apps/docs/public/guides/bots/settings.md b/apps/docs/public/guides/bots/settings.md new file mode 100644 index 000000000..a3d944be2 --- /dev/null +++ b/apps/docs/public/guides/bots/settings.md @@ -0,0 +1,74 @@ +> Расположение: Боты +> Краткое содержание: Вкладка «Основное» в карточке бота: профиль, ограничение одним чатом, публичный бот, кто может добавлять бота в чаты и редактировать его настройки, удаление бота и те же настройки через API +> Это Markdown-версия конкретной страницы. Для контекста за её пределами (правила API, полный перечень методов, авторизация) ОБЯЗАТЕЛЬНО открой [llms.txt](https://dev.pachca.com/llms.txt) перед ответом — это сэкономит токены и предотвратит неполный ответ. + + +# Настройки бота + +Эти настройки находятся на вкладке **Основное** в карточке бота. Они решают, как бот выглядит, кому он доступен и кто может его менять. + +![Вкладка «Основное» в карточке бота: профиль, создатель, ограничение одним чатом, публичность и доступы](/images/bots/bot_main_settings.webp) + +*Вкладка «Основное» в карточке бота* + + +## Профиль бота + +Бот, как и любой участник пространства, имеет свой профиль. В нём отображаются имя, аватар, никнейм, статус и список общих чатов с ботом. Изменить имя, аватар и никнейм можно кнопкой **Редактировать** в шапке вкладки. Там же указан создатель бота. + +**Никнейм** — уникальный идентификатор бота для упоминания через `@`. Именно по никнейму сотрудники могут упоминать бота в сообщениях и добавлять его в [сквозные треды](/guides/bots/access#tredy). Никнейм оканчивается на `_bot`. Через API имя и никнейм меняются методом [Редактирование бота](/api/bots/update) в полях `webhook.name` и `webhook.nickname`, а аватар — методом [Загрузка аватара сотрудника](/api/users/update-avatar), он доступен владельцу и администраторам. + +## Ограничить одним чатом + +Если включить эту настройку, в интерфейсе бота можно будет добавить только в одну беседу или канал, а личные чаты и треды под ограничение не попадают. Бот, который уже состоит в беседе или канале, пропадает из списка добавления. Подходит простым интеграциям вроде уведомлений: в одном чате собираются все получатели, а уведомления обсуждают в тредах. + +## Кто может добавлять бота в чаты + +Переключатель **Публичный бот** открывает бота всему пространству: он появляется в поиске и на вкладке **Обзор** в [витрине](/guides/bots/showcase), написать ему может любой участник пространства. Добавить публичного бота в чаты и треды, в том числе упоминанием в сообщении, может любой сотрудник, кроме гостей и мульти-гостей. + +Непубличного бота добавляют в каналы и беседы только те, кого выбрали в списке **Кто может добавлять бота в чаты**: + +- **Создатель** — только создатель бота, так у нового бота по умолчанию +- **Создатель и Администраторы** — создатель, владелец и администраторы пространства +- **Все участники (кроме гостей)** — любой сотрудник пространства + +Если выключить **Публичный бот**, в списке будет выбрано **Создатель и Администраторы**. + +Правило одинаково для всех способов добавления: в интерфейсе, упоминанием и через API. Гости и мульти-гости ботов в чаты не добавляют ни при какой настройке. Через API запрос с таким ботом отклоняется целиком: методы [Добавление пользователей](/api/members/add) и [Новый чат](/api/chats/create) отвечают `403` с кодом `bot_add_denied` и идентификаторами таких ботов, никого не добавляют и чат не создают. + +Написать непубличному боту в личные сообщения можно только при общем чате с ним или после того, как бот написал первым. Подробнее — в разделе [Первый диалог с ботом](/guides/bots/first-contact). + +## Кто может редактировать настройки бота + +Кому открыта карточка бота и кто видит его на вкладке **Управление**: + +- **Создатель** — отключить нельзя. Если создавать интеграции разрешено только администраторам, создатель без этой роли теряет доступ к своему боту. +- **Администраторы** — владелец и участники пространства с ролью «Администратор» +- **Руководители бесед и каналов, в которые добавлен бот** — доступ по роли в чате, куда добавлен бот + +У нового бота по умолчанию доступ есть только у создателя: администраторы не видят бота на вкладке **Управление**, пока создатель не отметит **Администраторы**. + +Руководители чатов меняют настройки и вебхуки бота. Имя, токены, авторизация от имени сотрудника, страница в витрине и удаление бота доступны только создателю и администраторам: токен открывает работу от имени бота, поэтому администраторам доступ выдавайте там, где доверили бы им сам токен. Что из этого доступно владельцу токена, в API показывает поле `permissions` в объекте бота. + +## Удаление бота + +Удалить бота можно кнопкой **Удалить бота** внизу вкладки. Бот исчезнет из всех бесед, каналов и тредов, его токены будут отозваны, а вебхуки и выданные ему авторизации перестанут работать. Удаление нельзя отменить. Через API — метод [Удаление бота](/api/bots/delete). + +## Настройка через API + +Те же настройки задаются методом [Редактирование бота](/api/bots/update) или сразу при создании методом [Новый бот](/api/bots/create): + +| Настройка | Поле | Значения | +| --- | --- | --- | +| Имя и никнейм | `webhook.name`, `webhook.nickname` | строки, никнейм оканчивается на `_bot` | +| Кто может добавлять бота в чаты | `who_can_add` | `creator`, `creator_admin`, `creator_admin_user`, а публичному боту соответствует `anyone` | +| Кто может редактировать настройки бота | `can_edit` | роли `admin` и `chat_owners`. Создатель имеет доступ всегда, поэтому пустой массив означает «только создатель» | +| Ограничить одним чатом | `single_chat` | `true` или `false` | + + +## Связанные разделы + +- [Доступы к чатам и сообщениям](/guides/bots/access) +- [Токены бота](/guides/bots/tokens) +- [Витрина](/guides/bots/showcase) +- [Права и роли](/guides/permissions) diff --git a/apps/docs/public/guides/bots/setup.md b/apps/docs/public/guides/bots/setup.md index 3e85bf4ea..3baee1580 100644 --- a/apps/docs/public/guides/bots/setup.md +++ b/apps/docs/public/guides/bots/setup.md @@ -1,53 +1,52 @@ > Расположение: Боты -> Краткое содержание: Как создать бота в Пачке: выбор типа, копирование токена, настройка имени и аватара, настройка доступов и вкладок вебхуков и API +> Краткое содержание: Как создать бота в Пачке: в разделе «Интеграции» или методом API, что настроить сразу после создания и жизненный цикл бота через API > Это Markdown-версия конкретной страницы. Для контекста за её пределами (правила API, полный перечень методов, авторизация) ОБЯЗАТЕЛЬНО открой [llms.txt](https://dev.pachca.com/llms.txt) перед ответом — это сэкономит токены и предотвратит неполный ответ. -# Создание и настройка +# Создание бота Бота можно создать двумя способами: -- **Через интерфейс** — отдельные настройки (тип бота, аватар) и наглядная пошаговая форма. Подходит для разовой ручной настройки. +- **Через интерфейс** — в разделе **Интеграции** > **Боты**. Подходит для ручной настройки: у каждой возможности бота своя вкладка в его карточке. - **Через API** ([Новый бот](/api/bots/create)) — программно, без интерфейса. Подходит для автоматизации: завести бота из своего сервиса или скрипта и сразу получить `access_token`. -## Создание бота через интерфейс +> **Внимание:** Создавать ботов могут администраторы и сотрудники, а владелец или администратор пространства может оставить это только администраторам. Подробнее — в разделе [Кто может создавать токены](/api/authorization#kto-mozhet-sozdavat-tokeny). -> **Внимание:** Создание и настройка ботов через интерфейс доступны в веб-версии и десктопном приложении Пачки. В мобильных приложениях (iOS и Android) эта возможность недоступна. +## Создание бота через интерфейс -Для создания бота перейдите в **Автоматизации** > **Интеграции** > **Чат-боты и Вебхуки** и нажмите кнопку **«+»**. +> **Внимание:** Создание и настройка ботов через интерфейс доступны в веб-версии и десктопном приложении Пачки. В мобильных приложениях (iOS и Android) эта возможность недоступна. -![Новый бот](/images/bots/bot_new.webp) -*Новый бот* +Откройте **Интеграции** > **Боты** и нажмите **Создать бота**. В диалоге два поля: +- **Название** — имя бота в чатах и в его профиле. +- **Ник для @упоминаний** — можно оставить пустым, тогда ник соберётся из названия. Ник уникален в пространстве и оканчивается на `_bot`. -> **Внимание:** Владелец пространства может ограничить, кто может создавать ботов. Подробнее в разделе [настройка доступа](/api/authorization#kto-mozhet-sozdavat-tokeny). +![Диалог создания бота с полями «Название» и «Ник для @упоминаний»](/images/bots/bot_new.webp) +*Создание бота* - ### Шаг 1. Выберите тип бота -- **Для одного чата** — подойдёт для отправки уведомлений из других сервисов. В одном чате можно собрать всех получателей и обсуждать уведомления в тредах. -- **Для нескольких чатов** — подойдёт, если вы хотите создать личное взаимодействие бота с каждым участником вашей компании или разными группами участников. -- **Unfurl бот** (только администраторам) — подойдёт для получения событий об отправке ссылок во всех чатах вашего пространства и возможности создавать их предпросмотр. +После создания откроется карточка бота. Бот создаётся без токенов и вебхуков, а каждая возможность включается на своей вкладке, когда понадобится. Чаще всего сразу нужны три шага: -Тип бота нельзя изменить после создания. Ограничение «для одного чата» распространяется только на каналы и беседы — бот по-прежнему может участвовать в тредах и личных сообщениях. Бот любого типа может быть настроен как публичный. + ### Шаг 1. Выпустите токен - ### Шаг 2. Скопируйте токен +На вкладке **API** нажмите **Создать токен**, задайте название и права. Значение токена показывается один раз: скопируйте его до закрытия окна. Подробнее — в разделе [Токены бота](/guides/bots/tokens). -После создания бота перейдите на вкладку **API** и скопируйте `access_token` — он потребуется для работы с API от имени бота. Токен не имеет срока жизни. Там же доступен `user_id` бота — используется, например, в методе [Добавление пользователей](/api/members/add). + ### Шаг 2. Настройте доступ - ### Шаг 3. Измените название и аватар (опционально) +На вкладке **Основное** решите, кто может добавлять бота в чаты и кто может его редактировать, и нужен ли публичный бот. Там же меняются имя, аватар и ник. Подробнее — в разделе [Настройки бота](/guides/bots/settings). -На вкладке **Основное** вы можете изменить имя бота и загрузить изображение — они будут отображаться в сообщениях от бота и в его профиле. + ### Шаг 3. Включите исходящий вебхук - ### Шаг 4. Настройте исходящий вебхук (опционально) +Чтобы бот узнавал о сообщениях и нажатиях кнопок, на вкладке **Исходящий вебхук** нажмите **Включить**, укажите URL своего сервера и отметьте события. Для новых сообщений выберите режим: новый бот слушает только команды, а их список пуст. Подробнее — в разделе [Первый диалог с ботом](/guides/bots/first-contact). -Для получения событий от Пачки перейдите на вкладку **Исходящий Webhook**: укажите **Webhook URL**, на который будут приходить уведомления, и выберите типы событий (новые сообщения, реакции, нажатия кнопок и другие). Подробнее — в разделе [Исходящие вебхуки](/guides/webhook/overview). +Созданный бот появится на вкладке **Управление** — подробнее в разделе [Где бот находится в интерфейсе](/guides/bots/overview#gde-bot-nahoditsya-v-interfeyse). ## Создание бота через API @@ -56,88 +55,38 @@ ### Шаг 1. Отправьте запрос на создание -Передайте параметры бота в объекте `bot.webhook`: имя, никнейм, Webhook URL, список событий и команды. Никнейм должен заканчиваться на `_bot`. +Передайте параметры бота в объекте `webhook`: имя, никнейм, Webhook URL, список событий и команды. Обязательное поле одно — имя. Никнейм должен заканчиваться на `_bot`. -Обязательное поле одно — имя. Его и никнейм можно передать и на уровне `bot`, тогда объект `bot.webhook` не нужен: `{"bot": {"name": "Бот задач"}}` создаст бота с настройками вебхука по умолчанию. +По умолчанию `trigger_on` равен `commands`, а список команд пуст, поэтому о новых сообщениях бот не узнает. Если бот должен отвечать на сообщения, передайте `trigger_on: "all_messages"` или перечислите команды в `commands`. -Тип бота — в один или несколько чатов — задаётся полем `single_chat` и только при создании: изменить его потом нельзя, как и тип бота в интерфейсе. Ограничение «в один чат» распространяется только на беседы и каналы, треды и личные сообщения не в счёт. +В том же запросе можно включить авторизацию от имени сотрудника объектом `oauth_client` — подробнее в разделе [Настройка авторизации](/guides/oauth/setup#cherez-api). ### Шаг 2. Сохраните access_token -В ответе вы получите `access_token` бота — сразу сохраните его. Посмотреть выданный токен повторно можно только в интерфейсе (вкладка **API** настроек бота), а вот перевыпустить — и там, и через API. Вместе с токеном придёт `id` бота (его `user_id`). - - -Получить параметры существующего бота можно методом [Информация о боте](/api/bots/get), а изменить — методом [Редактирование бота](/api/bots/update). Бот может и сам прописать `URL` своего исходящего вебхука собственным токеном — методом [Саморегистрация вебхука бота](/api/bots/update-webhook), без участия администратора. - -Остальной жизненный цикл бота тоже доступен через API: - -- [Список ботов](/api/bots/list) — боты, доступные вам для редактирования, с поиском по имени в параметре `query`. Полный перечень ботов пространства доступен Владельцу отдельным методом, см. [Права и роли](/guides/permissions#inventarizatsiya-botov-prostranstva). -- [Ротация токена бота](/api/bots/recreate-token) — перевыпуск токена чужому боту (скоуп `bots:write`), и [Ротация собственного токена бота](/api/bots/recreate-token-self) — бот перевыпускает токен сам себе (скоуп `bot_self:write`). Прежний токен инвалидируется сразу, новый приходит в ответе один раз. -- [Удаление бота](/api/bots/delete) — токен инвалидируется, бот исключается из чатов, его исходящий вебхук удаляется. - -## Профиль бота - -Бот, как и любой участник пространства, имеет свой профиль. В нём отображаются имя, аватар, никнейм, статус и список общих чатов с ботом. Профиль бота можно редактировать — изменить имя, никнейм и другие поля. - -**Никнейм** — уникальный идентификатор бота для упоминания через `@`. Именно по никнейму сотрудники могут упоминать бота в сообщениях и добавлять его в [сквозные треды](/guides/bots/access#tredy). Никнейм и другие поля профиля можно изменить через интерфейс или через API — метод [Редактирование сотрудника](/api/users/update). - -## Настройка доступов - -Эти настройки находятся на вкладке **Основное**. - -![Настройка доступов к боту](/images/bots/bot_main_settings.webp) +В ответе вы получите `access_token` бота — сразу сохраните его. Повторно значение не показывается ни в интерфейсе, ни через API: потерянный токен перевыпускают. Вместе с токеном придёт `id` бота (его `user_id`). -*Настройка доступов к боту* +Бот, созданный через API, сразу принимает запросы на входящий вебхук в своём формате, с шаблонизатором Liquid. Подробнее — в разделе [Входящие вебхуки](/guides/incoming-webhooks). -### Кто может редактировать настройки бота +Чтобы создать бота как в интерфейсе, без токена и входящего вебхука, передайте `empty: true`. Токены такому боту выпускают методом [Новый токен бота](/api/bots/create-token), а входящий вебхук включают полем `kind`. -Управление доступов участников пространства к поиску бота в разделе **Чат-боты и Вебхуки** и редактированию его настроек (основных, вебхуков и токена API): +## Жизненный цикл через API -- **Создатель** — этот пункт нельзя отключить, создатель бота всегда имеет доступ к настройкам бота -- **Администраторы** — владелец и участники пространства с ролью «Администратор» -- **Создатели и руководители чатов, в которые добавлен бот** — этот пункт позволяет управлять доступом к редактированию бота на уровне ролей в чате, куда добавлен бот +Получить параметры существующего бота можно методом [Информация о боте](/api/bots/get), а изменить — методом [Редактирование бота](/api/bots/update). Бот может и сам прописать `URL` своего исходящего вебхука собственным токеном — методом [Саморегистрация вебхука бота](/api/bots/update-webhook), без участия администратора. Для этого токену нужно право `bot_self:webhook:write`: по умолчанию его нет, выдают его на вкладке **API**. -### Кто может добавлять бота в чаты - -Первые три варианта оставляют бота закрытым и доступным для работы только через добавление его в каналы и беседы. Вариант **Публичный бот** предоставляет всем участникам пространства доступ к работе с ботом: в поиске, через личные сообщения, добавление в тред через упоминание бота в сообщении и тд. - -- **Создатель** -- **Создатель и Администраторы** -- **Все участники (кроме гостей)** -- **Публичный бот** - -### Настройка через API - -Эти доступы можно задать не только в интерфейсе, но и через API — методом [Редактирование бота](/api/bots/update) или сразу при создании: - -- **Кто может редактировать настройки бота** — поле `can_edit` (роли `admin` и `chat_owners`). Создатель имеет доступ всегда, поэтому в поле перечисляются только дополнительные роли, а пустой массив означает «только создатель». -- **Кто может добавлять бота в чаты** — поле `who_can_add` (`creator`, `creator_admin`, `creator_admin_user`, `anyone`) - -## Настройка вебхуков и API - -![Вкладки настройки вебхуков и API бота](/images/bots/bot_webhook_api_settings.webp) - -*Вкладки настройки вебхуков и API бота* - - -### Входящий Webhook - -Позволяет отправлять сообщения в чат от имени бота одним HTTP-запросом — без использования API. В настройках доступны **Webhook URL**, выбор формата отображения (Liquid или Mustache), шаблон сообщения и поле для верификации (например, для интеграции с monday.com). Подробнее — в разделе [Входящие вебхуки](/guides/incoming-webhooks). - -### Исходящий Webhook - -Позволяет получать уведомления о событиях в реальном времени на указанный вами URL. В настройках доступны **Webhook URL**, **Signing secret** для проверки подлинности запросов, выбор типов событий (новые сообщения, реакции, нажатия кнопок, изменение участников и другие) и фильтрация по командам. Подробнее — в разделе [Исходящие вебхуки](/guides/webhook/overview). - -### API +- [Список ботов](/api/bots/list) — боты, доступные вам для редактирования, с поиском по имени в параметре `query`. Полный перечень ботов пространства доступен Владельцу отдельным методом, см. [Права и роли](/guides/permissions#inventarizatsiya-botov-prostranstva). +- [Список токенов бота](/api/bots/list-tokens), [Новый токен бота](/api/bots/create-token) и соседние методы — токены бота со своими именами и правами. Подробнее — в разделе [Токены бота](/guides/bots/tokens#tokeny-cherez-api). +- [Ротация токена бота](/api/bots/recreate-token) и [Ротация собственного токена бота](/api/bots/recreate-token-self) — перевыпуск основного токена. +- [Ротация секрета клиента](/api/bots/rotate-client-secret) — новый `client_secret` для авторизации от имени сотрудника. +- [Удаление бота](/api/bots/delete) — токены отзываются, бот исключается из бесед, каналов и тредов, его вебхуки удаляются. -Вкладка с `access_token` и `user_id` бота для работы с [REST API](/guides/quickstart). Токен не имеет срока жизни, но при необходимости его можно перевыпустить кнопкой «Обновить Access token» или методом [Ротация токена бота](/api/bots/recreate-token). Здесь же выбираются скоупы токена — им соответствует поле `scopes` в методах создания и редактирования бота. Подробнее — в разделе [Авторизация](/api/authorization). +Изменения бота попадают в [журнал аудита](/guides/audit-events): выпуск, изменение и перевыпуск токенов, смена адреса исходящего вебхука, настроек истории событий и своих сообщений, списков доступа к боту, смена настроек авторизации, обновление секрета, выключение авторизации и удаление бота. ## Связанные разделы -- [Доступы к чатам и сообщениям](/guides/bots/access) -- [Готовые примеры реализации](/guides/bots/examples) -- [Входящие вебхуки](/guides/incoming-webhooks) +- [Настройки бота](/guides/bots/settings) +- [Токены бота](/guides/bots/tokens) +- [Первый диалог с ботом](/guides/bots/first-contact) - [Исходящие вебхуки](/guides/webhook/overview) diff --git a/apps/docs/public/guides/bots/showcase.md b/apps/docs/public/guides/bots/showcase.md new file mode 100644 index 000000000..473b6f6cf --- /dev/null +++ b/apps/docs/public/guides/bots/showcase.md @@ -0,0 +1,98 @@ +> Расположение: Боты +> Краткое содержание: Витрина ботов в Пачке: каталог пространства на вкладке «Обзор» — карточки опубликованных ботов с авторизацией и список публичных ботов. Как опубликовать бота, что на его странице и как сотрудник подключает бота сам +> Это Markdown-версия конкретной страницы. Для контекста за её пределами (правила API, полный перечень методов, авторизация) ОБЯЗАТЕЛЬНО открой [llms.txt](https://dev.pachca.com/llms.txt) перед ответом — это сэкономит токены и предотвратит неполный ответ. + + +# Витрина + +Витрина — вкладка **Обзор** в разделе **Интеграции** > **Боты**. Это каталог ботов вашего пространства: здесь сотрудники находят ботов, которыми можно пользоваться, и подключают их сами, без администратора. Витрину видят сотрудники, администраторы и мульти-гости. + +Пока в витрине нет ни одного бота, на вкладке **Обзор** объясняется, что такое боты и витрина, и есть ссылки на документацию. Тем, кто может создавать интеграции, там же видны кнопки быстрого старта: одно нажатие создаёт бота с входящим вебхуком GitLab, Grafana или обычным и открывает его карточку. Пока ботов в витрине не больше пяти, эти кнопки остаются внизу вкладки в строке **Подключить ещё**. + +Витрина общая только внутри пространства: в ней боты вашей компании, а бота из другой компании не видно и авторизовать нельзя. + +![Вкладка «Обзор»: опубликованные боты с авторизацией карточками, список «Публичные боты» и кнопки быстрого старта](/images/bots/showcase.webp) + +*Витрина ботов на вкладке «Обзор»* + + +## Карточки и список + +Наверху вкладки — карточки опубликованных ботов с авторизацией. На карточке имя и аватар бота, отметка **Подключено**, если вы уже авторизовали бота, описание, создатель и кнопка **Сообщение**, если вы можете написать боту. У бота, которого вы можете редактировать, на карточке есть меню с пунктом **Редактировать**. + +Ниже — список **Публичные боты**: имя, ник и кнопка **Сообщение** у каждого. + +| | Карточки | Публичные боты | +| --- | --- | --- | +| Кто попадает | Боты с авторизацией, которых опубликовали в витрине | Все боты с включённым переключателем **Публичный бот** | +| Что нужно от бота | Включённая авторизация и сохранённое описание, скриншоты по желанию | Ничего, кроме публичности | +| Что открывает нажатие | Страницу бота | Профиль бота | + +Публичность и публикация — независимые настройки. Бот, который и опубликован, и публичный, показывается один раз — карточкой. + +## Страница бота + +У бота с авторизацией есть своя страница в витрине. + +![Страница бота в витрине: создатель, кнопка «Сообщение», скриншоты, описание и права, которые бот может запросить](/images/bots/app_page.webp) + +*Страница бота в витрине* + + +На ней: + +- имя, аватар и создатель бота; +- описание — чем бот занимается и зачем его подключать; +- до пяти скриншотов; +- **Что бот может запросить** — права, которые бот попросит на экране согласия: больше этого он не запросит; +- отметка **Подключено**, если вы уже авторизовали бота, и кнопка **Сообщение**, если вы можете ему написать. + +## Как опубликовать бота + +Заполняют страницу и публикуют бота его создатель и администраторы пространства, если бот открыт им для редактирования. Всё делается на вкладке **OAuth** в карточке бота: откройте бота на вкладке **Управление** и перейдите на неё. + + + ### Шаг 1. Включите авторизацию + +Нажмите **Включить** и в окне **Включение авторизации** выберите, где хранится секрет, укажите адреса возврата и запрашиваемый доступ. Подробнее — в разделе [Настройка авторизации](/guides/oauth/setup#vklyuchenie). + + + ### Шаг 2. Заполните страницу на витрине + +В блоке **Страница на витрине** введите описание — чем бот занимается и зачем его подключать — и нажмите **Сохранить** под полем. Если нужно, добавьте кнопкой **Добавить** до пяти скриншотов PNG или JPG с соотношением сторон 16:9: они сохраняются сразу, а порядок меняется перетаскиванием. + +![Блок «Страница на витрине»: переключатель «Опубликовать в витрине», описание с кнопкой «Сохранить» и скриншоты](/images/oauth/showcase_page.webp) + +*Блок «Страница на витрине» на вкладке «OAuth»* + + + ### Шаг 3. Опубликуйте + +Включите **Опубликовать в витрине** в начале того же блока — бот появится карточкой на вкладке **Обзор**. Пока описание не сохранено, переключатель недоступен. + + +Через API те же шаги делают поля `oauth_client` и `promo` метода [Редактирование бота](/api/bots/update) — подробнее в разделе [Настройка авторизации](/guides/oauth/setup#cherez-api). + +> **Внимание:** **Публикация в витрине не даёт права написать боту.** Опубликованного, но непубличного бота сотрудник видит в каталоге, а написать ему может только при общем чате с ботом. Если бот подключается через диалог, сделайте его публичным на вкладке **Основное**. + + +Чтобы убрать бота из витрины, выключите **Опубликовать в витрине**. Удаление OAuth-клиента на той же вкладке ещё и отзывает все выданные авторизации — подробнее в разделе [Настройка авторизации](/guides/oauth/setup#otklyuchenie). + +## Как сотрудник подключает бота + +Бота подключают в разговоре с ним: + +1. Сотрудник находит бота в витрине и нажимает **Сообщение**. +2. Пишет боту, например `/start`. Личный чат создаётся без события, поэтому первым всегда пишет сотрудник — подробнее в разделе [Первый диалог с ботом](/guides/bots/first-contact). +3. Бот отвечает приветствием и кнопкой авторизации. +4. Сотрудник подтверждает права на экране согласия, и бот получает его токен. В витрине у бота появляется отметка **Подключено**. + +Что должно быть включено у бота, чтобы этот путь сработал, — в [Чек-листе запуска](/guides/oauth/checklist). Как собрать кнопку и обменять код на токен — в разделе [Получение токена](/guides/oauth/flow). Выданные авторизации сотрудник видит и отзывает на странице **Интеграции** > **API** — подробнее в разделе [Согласие и отзыв](/guides/oauth/consent). + + +## Связанные разделы + +- [Настройки бота](/guides/bots/settings) +- [Первый диалог с ботом](/guides/bots/first-contact) +- [Авторизация от имени сотрудника: Настройка авторизации](/guides/oauth/setup) +- [Авторизация от имени сотрудника: Согласие и отзыв](/guides/oauth/consent) diff --git a/apps/docs/public/guides/bots/tokens.md b/apps/docs/public/guides/bots/tokens.md new file mode 100644 index 000000000..91a587371 --- /dev/null +++ b/apps/docs/public/guides/bots/tokens.md @@ -0,0 +1,95 @@ +> Расположение: Боты +> Краткое содержание: Токены бота в Пачке: несколько токенов со своими правами, выпуск, перевыпуск и удаление на вкладке «API», права самоуправления бота, токены через API и что делать, если токен утёк +> Это Markdown-версия конкретной страницы. Для контекста за её пределами (правила API, полный перечень методов, авторизация) ОБЯЗАТЕЛЬНО открой [llms.txt](https://dev.pachca.com/llms.txt) перед ответом — это сэкономит токены и предотвратит неполный ответ. + + +# Токены бота + +Токен бота — ключ, которым ваш код обращается к [API](/guides/quickstart) от имени бота: отправляет сообщения, читает чаты, открывает формы. Токены выпускаются на вкладке **API** в карточке бота. Там же указан `user_id` бота: это его `id` в методах API. + +Вкладка **API** доступна создателю бота и администраторам пространства, если на вкладке **Основное** им открыт доступ к редактированию. Руководителю чата с ботом токены не видны, даже когда остальные настройки бота ему открыты — подробнее в разделе [Настройки бота](/guides/bots/settings#kto-mozhet-redaktirovat-nastroyki-bota). + +```http title="Заголовок авторизации" +Authorization: Bearer <токен бота> +``` + +## Выпуск токена + +![Вкладка «API» в карточке бота: user_id и список токенов бота с кнопкой «Создать токен»](/images/bots/bot_tokens.webp) + +*Вкладка «API» в карточке бота* + + + ### Шаг 1. Создайте токен + +На вкладке **API** нажмите **Создать токен** и задайте название — по нему токен узнаётся в списке, например по имени сервиса, который им пользуется. + + + ### Шаг 2. Выберите права + +Права задаются на каждый токен отдельно. Выдавайте минимально необходимые: токен для уведомлений не должен уметь удалять сообщения. Нужное право можно найти поиском по названию. + +![Окно «Создание токена бота»: название токена, поиск и список прав по категориям](/images/bots/bot_token_new.webp) + +*Окно «Создание токена бота»* + + + ### Шаг 3. Скопируйте значение + +Значение токена показывается один раз, сразу после создания, в окне **Скопируйте ваш API токен**. Скопируйте его кнопкой **Скопировать и закрыть** — повторно значение не покажут ни в интерфейсе, ни через API. + + +Токены бота не имеют срока жизни: токен работает, пока его не перевыпустят, не удалят или пока не удалят самого бота. + +## Несколько токенов + +У бота может быть несколько токенов, у каждого своё название и свои права. Удобно выпускать отдельный токен на каждый сервис, который работает от имени бота: если один из них скомпрометирован или больше не нужен, его отзывают, не трогая остальные. + +В списке у каждого токена видны первые и последние символы значения, число выданных разрешений, дата создания и когда токен последний раз использовался. Меню токена позволяет: + +- **Список разрешений** — посмотреть, что токену разрешено +- **Редактировать** — изменить название и права. Новые права действуют сразу, выпускать токен заново не нужно. +- **Перевыпустить** — старое значение перестаёт работать сразу, новое показывается один раз, а название и права сохраняются +- **Удалить** — токен перестаёт работать, восстановить его нельзя. Если токеном пользовались в последние 7 дней, диалог удаления предупредит об этом. + +## Права токена + +Права определяют, какие методы API можно вызывать этим токеном. Круг данных они не расширяют: бот видит открытые каналы и чаты, куда его добавили, какие бы права ни были у токена. Подробнее — в разделе [Доступы к чатам и сообщениям](/guides/bots/access). + +Часть прав есть только у ботов: + +- `bot_self:webhook:write` — бот сам меняет адрес своего исходящего вебхука методом [Саморегистрация вебхука бота](/api/bots/update-webhook). Так делает, например, [n8n](/guides/n8n/trigger) в автоматическом режиме. +- `bot_self:write` — бот сам перевыпускает свой токен методом [Ротация собственного токена бота](/api/bots/recreate-token-self). + +Права для черновиков, управления ботами и другие права, которые выдаются только персональным токенам, боту недоступны. Полная таблица прав по ролям — в разделе [Доступные скоупы](/api/authorization#dostupnye-skoupy). Проверить права текущего токена можно методом [Информация о токене](/api/oauth/token-info). + +## Токены через API + +Токенами бота управляют те же методы, что стоят за вкладкой **API**: + +- [Список токенов бота](/api/bots/list-tokens) — действующие токены с замаскированным значением. +- [Новый токен бота](/api/bots/create-token) — токен с именем и правами. Значение приходит в ответе один раз. +- [Изменение токена бота](/api/bots/update-token) — новое имя или права, они действуют сразу. +- [Перевыпуск токена бота](/api/bots/reissue-token) — новое значение вместо прежнего, имя и права остаются. +- [Удаление токена бота](/api/bots/delete-token) — токен перестаёт работать сразу. + +Права выбирают из каталога: [Каталог прав бота](/api/bots/list-scopes) перечисляет права, которые можно выдать этому боту, с описаниями и категориями, как на вкладке. Методы вызывают персональным токеном со скоупами `bots:read` и `bots:write`. + +Бот, созданный методом [Новый бот](/api/bots/create), сразу получает основной токен: он приходит в поле `access_token` один раз, а его права задаются полем `webhook.scopes`, без которого бот получит набор по умолчанию. С `empty: true` бот создаётся без токена, как в интерфейсе. + +Основной токен — тот, что в списке без имени, а если такого нет, самый старый. К нему относятся поле `webhook.scopes` метода [Редактирование бота](/api/bots/update) и два метода ротации: [Ротация токена бота](/api/bots/recreate-token) перевыпускает его персональным токеном, а [Ротация собственного токена бота](/api/bots/recreate-token-self) — сам бот, с правом `bot_self:write`. Ротация выпускает основной токен заново: прежнее значение перестаёт работать сразу, у нового другой `id` и нет имени, а значение приходит в ответе один раз. + +Если у бота нет ни одного токена, `webhook.scopes` создаёт основной токен, но его значение не возвращает. Чтобы получить значение, перевыпустите токен. + +## Если токен утёк + +Перевыпустите токен кнопкой **Перевыпустить** или методом [Перевыпуск токена бота](/api/bots/reissue-token): старое значение перестанет работать в ту же секунду. Затем обновите токен в сервисах, которые им пользуются. Если токен больше не нужен, удалите его. + +Токен в руках — это доступ ко всем данным бота. Не храните его в коде и репозиториях, передавайте через переменные окружения и хранилища секретов. + + +## Связанные разделы + +- [Авторизация](/api/authorization) +- [Настройки бота](/guides/bots/settings) +- [Первый диалог с ботом](/guides/bots/first-contact) diff --git a/apps/docs/public/guides/buttons.md b/apps/docs/public/guides/buttons.md index 936c1e858..1c5ce747e 100644 --- a/apps/docs/public/guides/buttons.md +++ b/apps/docs/public/guides/buttons.md @@ -12,7 +12,7 @@ ### Шаг 1. Создайте бота -Перейдите в **Автоматизации** > **Интеграции** > **Чат-боты и Вебхуки** и создайте бота. Подробнее — в разделе [Боты](/guides/bots/overview). +Откройте **Интеграции** > **Боты** и нажмите **Создать бота**. Подробнее — в разделе [Боты](/guides/bots/overview). ### Шаг 2. Отправьте сообщение с кнопками @@ -22,7 +22,7 @@ ### Шаг 3. Настройте исходящий вебхук -Для обработки Data-кнопок укажите Webhook URL в настройках бота на вкладке **Исходящий Webhook** и включите событие **Нажатие кнопок**. Подробнее — в разделе [Исходящие вебхуки](/guides/webhook/overview). +Для обработки Data-кнопок включите вебхук на вкладке **Исходящий вебхук** в карточке бота, указав URL своего сервера, и отметьте событие **Нажатие кнопок**. Подробнее — в разделе [Исходящие вебхуки](/guides/webhook/overview). ### Шаг 4. Обработайте нажатие diff --git a/apps/docs/public/guides/cli/authentication.md b/apps/docs/public/guides/cli/authentication.md index 94b68eaab..2e61a5a56 100644 --- a/apps/docs/public/guides/cli/authentication.md +++ b/apps/docs/public/guides/cli/authentication.md @@ -30,6 +30,8 @@ pachca auth login Под капотом — стандартный вход по коду устройства (OAuth 2.0 Device Authorization Grant, [RFC 8628](https://datatracker.ietf.org/doc/html/rfc8628)). CLI не открывает локальный порт и не принимает редирект, поэтому одинаково работает на ноутбуке, в SSH-сессии и в контейнере. +Каждый вход виден в списке **Токены CLI** на странице **Интеграции** > **API** под именем устройства. CLI передаёт имя машины, а для профиля не по умолчанию добавляет его имя в скобках — например, `macbook (ci)`, — поэтому два входа с одного ноутбука в списке различаются. Рядом показаны время входа и последнего вызова, а отзыв из списка завершает вход только на выбранном устройстве. + ## Где хранится токен Токен уходит в хранилище ключей операционной системы: Keychain на macOS, Secret Service на Linux, Диспетчер учётных данных на Windows. Файл конфигурации хранит только имя, почту и права — секрета в нём нет. @@ -55,7 +57,7 @@ pachca auth status ## Вход готовым токеном -Получить токен можно в интерфейсе: **Настройки** > **Автоматизации** > **API**. +Персональный токен создаётся на странице **Интеграции** > **API**, токен бота — на вкладке **API** в карточке бота. ```bash echo "$PACHCA_TOKEN" | pachca auth login --token - @@ -118,8 +120,8 @@ pachca auth logout bot-notify `pachca auth logout` удаляет профиль **с этой машины**. Что при этом происходит с самим токеном, зависит от способа входа: -- **Вход через браузер.** Токен гасится на сервере сразу — доступ закрывается в момент выхода, а не по истечении срока. Если сервер в этот момент недоступен, CLI об этом скажет: профиль всё равно удаляется, а токен доживает свой час. В списке токенов в **Автоматизации** > **API** такая сессия не появляется: она принадлежит приложению «Pachca CLI», а не вам. -- **Готовый токен.** Продолжит работать — он бессрочный. Удалите его в **Автоматизации** > **API**, если он больше не нужен. +- **Вход через браузер.** Токен гасится на сервере сразу — доступ закрывается в момент выхода, а не по истечении срока, и вход пропадает из списка **Токены CLI**. Если сервер в этот момент недоступен, CLI об этом скажет: профиль всё равно удаляется, а токен доживает свой час. Завершить вход можно и без терминала — кнопкой **Отозвать** в списке **Токены CLI**, например на потерянном ноутбуке. Команды с отозванным профилем отвечают `401` с подсказкой войти заново, в неё подставлено имя профиля. +- **Готовый токен.** Продолжит работать — он бессрочный. Удалите его на странице **Интеграции** > **API** или, если это токен бота, в карточке бота, когда он больше не нужен. ## Приоритет токена diff --git a/apps/docs/public/guides/cli/commands.md b/apps/docs/public/guides/cli/commands.md index 1be4836c9..6a0f76d70 100644 --- a/apps/docs/public/guides/cli/commands.md +++ b/apps/docs/public/guides/cli/commands.md @@ -30,15 +30,22 @@ dev.pachca.com/api/members/add → pachca members add | `pachca auth status` | Статус текущего профиля | | `pachca auth switch` | Переключение активного профиля | | `pachca bots create` | `POST` Новый бот | +| `pachca bots create-token` | `POST` Новый токен бота | | `pachca bots delete` | `DELETE` Удаление бота | +| `pachca bots delete-token` | `DELETE` Удаление токена бота | | `pachca bots get` | `GET` Информация о боте | | `pachca bots list` | `GET` Список ботов | | `pachca bots list-company` | `GET` Список ботов пространства | | `pachca bots list-events` | `GET` История событий | +| `pachca bots list-scopes` | `GET` Каталог прав бота | +| `pachca bots list-tokens` | `GET` Список токенов бота | | `pachca bots recreate-token` | `POST` Ротация токена бота | | `pachca bots recreate-token-self` | `POST` Ротация собственного токена бота | +| `pachca bots reissue-token` | `POST` Перевыпуск токена бота | | `pachca bots remove-event` | `DELETE` Удаление события | +| `pachca bots rotate-client-secret` | `POST` Ротация секрета клиента | | `pachca bots update` | `PUT` Редактирование бота | +| `pachca bots update-token` | `PUT` Изменение токена бота | | `pachca bots update-webhook` | `PUT` Саморегистрация вебхука бота | | `pachca changelog` | История изменений CLI | | `pachca chats archive` | `PUT` Архивация чата | @@ -47,6 +54,7 @@ dev.pachca.com/api/members/add → pachca members add | `pachca chats get` | `GET` Информация о чате | | `pachca chats list` | `GET` Список чатов | | `pachca chats list-company` | `GET` Список чатов пространства | +| `pachca chats mark-unread` | `PUT` Отметка чата непрочитанным | | `pachca chats request-export` | `POST` Экспорт сообщений | | `pachca chats unarchive` | `PUT` Разархивация чата | | `pachca chats update` | `PUT` Редактирование чата | diff --git a/apps/docs/public/guides/cli/overview.md b/apps/docs/public/guides/cli/overview.md index 29ecff7fa..e802ef259 100644 --- a/apps/docs/public/guides/cli/overview.md +++ b/apps/docs/public/guides/cli/overview.md @@ -24,7 +24,7 @@ npm install -g @pachca/cli ### Шаг 2. Вход в аккаунт -Если вход выполняете вы сами, достаточно подтвердить его в браузере — получать токен заранее не нужно. Для CI и агентов, где подтверждать некому, передайте готовый токен из раздела **Автоматизации** > **API**. +Если вход выполняете вы сами, достаточно подтвердить его в браузере — получать токен заранее не нужно. Для CI и агентов, где подтверждать некому, передайте готовый токен со страницы **Интеграции** > **API**. ```bash # Подтверждение в браузере diff --git a/apps/docs/public/guides/forms/blocks.md b/apps/docs/public/guides/forms/blocks.md index 82701f54c..4d1833004 100644 --- a/apps/docs/public/guides/forms/blocks.md +++ b/apps/docs/public/guides/forms/blocks.md @@ -121,7 +121,7 @@ Значения: `radio` — Для радиокнопок всегда radio - `name: string` (required, max length: 255) — Название, которое будет передано в ваше приложение как ключ указанного пользователем выбора. Пример: `"accessibility"` - `label: string` (required, max length: 150) — Подпись к группе радиокнопок. Пример: `"Доступность"` -- `options: array of object` (required, max items: 10) — Массив радиокнопок +- `options: array of object` (required, max items: 20) — Массив радиокнопок - `text: string` (required, max length: 75) — Отображаемый текст. Пример: `"Ничего"` - `value: string` (required, max length: 255) — Уникальное строковое значение, которое будет передано в ваше приложение при выборе этого пункта. Пример: `"nothing"` - `description: string` (max length: 75) — Пояснение, которое будет указано серым цветом в этом пункте под отображаемым текстом. Пример: `"Каждый день бот будет присылать список новых задач в вашей команде"` @@ -143,7 +143,7 @@ Значения: `checkbox` — Для чекбоксов всегда checkbox - `name: string` (required, max length: 255) — Название, которое будет передано в ваше приложение как ключ указанного пользователем выбора. Пример: `"newsletters"` - `label: string` (required, max length: 150) — Подпись к группе чекбоксов. Пример: `"Рассылки"` -- `options: array of object` (required, max items: 10) — Массив чекбоксов +- `options: array of object` (required, max items: 20) — Массив чекбоксов - `text: string` (required, max length: 75) — Отображаемый текст. Пример: `"Ничего"` - `value: string` (required, max length: 255) — Уникальное строковое значение, которое будет передано в ваше приложение при выборе этого пункта. Пример: `"nothing"` - `description: string` (max length: 75) — Пояснение, которое будет указано серым цветом в этом пункте под отображаемым текстом. Пример: `"Каждый день бот будет присылать список новых задач в вашей команде"` diff --git a/apps/docs/public/guides/forms/handling.md b/apps/docs/public/guides/forms/handling.md index f4f832f8d..ac3816c9e 100644 --- a/apps/docs/public/guides/forms/handling.md +++ b/apps/docs/public/guides/forms/handling.md @@ -17,9 +17,11 @@ ## Получение результатов -После заполнения пользователем полей в представлении и отправки их, в ваше приложение отправляется исходящий вебхук. Вебхук будет отправлен на `Webhook URL`, который вы указали в настройках бота во вкладке «Исходящий Webhook», от имени которого было отправлено сообщение с кнопкой (нажатие на которую и вызвало открытие представления). +После заполнения пользователем полей в представлении и отправки их, в ваше приложение отправляется исходящий вебхук. Вебхук будет отправлен на `Webhook URL` того бота, от имени которого было отправлено сообщение с кнопкой (нажатие на неё и открыло представление). Адрес задаётся на вкладке «Исходящий вебхук» в карточке бота. -Задача вашего приложения - обработать входяший вебхук в короткое время и дать ответ. Это может быть как успех и команда на закрытие представления пользователю в интерфейсе Пачки, так и набор ошибок, которые необходио отобразить пользователю в представлении. +Отправку формы бот получает, только если у него включено событие **Нажатие кнопок** (`button_click`). Добавлять бота в чат для этого не нужно: вебхук приходит тому боту, который открыл форму. + +Задача вашего приложения - обработать входящий вебхук в короткое время и дать ответ. Это может быть как успех и команда на закрытие представления пользователю в интерфейсе Пачки, так и набор ошибок, которые необходимо отобразить пользователю в представлении. Ваше приложение должно дать ответ на вебхук в течение **3 секунд**. В ином случае, пользователь получит ошибку отправки в интерфейсе Пачки. Все значения полей будут сохранены и **пользователь повторит попытку отправки формы**. diff --git a/apps/docs/public/guides/incoming-webhooks.md b/apps/docs/public/guides/incoming-webhooks.md index f009e5445..22aae6ea9 100644 --- a/apps/docs/public/guides/incoming-webhooks.md +++ b/apps/docs/public/guides/incoming-webhooks.md @@ -12,27 +12,32 @@ ### Шаг 1. Создайте бота -Перейдите в **Автоматизации** > **Интеграции** > **Чат-боты и Вебхуки** и создайте бота. Подробнее — в разделе [Боты](/guides/bots/overview). +Откройте **Интеграции** > **Боты** и нажмите **Создать бота**. Подробнее — в разделе [Боты](/guides/bots/overview). - ### Шаг 2. Скопируйте Webhook URL + ### Шаг 2. Включите вебхук и выберите источник -В настройках бота перейдите на вкладку **Входящий Webhook** и скопируйте сгенерированный URL. +В карточке бота на вкладке **Входящий вебхук** нажмите **Включить** и выберите, что будет присылать данные: GitLab, Grafana или **Свой формат** для любого другого сервиса. Источник можно поменять позже. - ### Шаг 3. Вставьте URL в настройки внешнего сервиса + ### Шаг 3. Скопируйте адрес вебхука -Укажите скопированный URL как адрес для уведомлений (webhook URL) в вашей CRM, CI/CD, мониторинге или другом сервисе. +После включения на вкладке появится адрес, на который сервис будет отправлять запросы. Скопируйте его. - ### Шаг 4. Добавьте бота в нужные чаты + ### Шаг 4. Вставьте адрес в настройки внешнего сервиса + +Укажите скопированный адрес как адрес для уведомлений (webhook URL) в вашей CRM, CI/CD, мониторинге или другом сервисе. + + + ### Шаг 5. Добавьте бота в нужные чаты Сообщения от вебхука публикуются во все групповые чаты, где состоит бот. Добавьте бота в чаты, в которые хотите получать уведомления — через настройки чата или через API-метод [Добавление пользователей](/api/members/add). - ### Шаг 5. Сервис отправляет POST-запрос + ### Шаг 6. Сервис отправляет POST-запрос -При наступлении события сервис отправляет `POST`-запрос с JSON-данными на Webhook URL. Минимальный формат запроса: +При наступлении события сервис отправляет `POST`-запрос с JSON-данными на адрес вебхука. Для своего формата минимальный запрос такой: ```json { @@ -40,26 +45,34 @@ } ``` -Поле `message` содержит текст, который будет опубликован от имени бота. +Поле `message` содержит текст, который будет опубликован от имени бота. Запросы GitLab и Grafana Пачка разбирает сама, в их настройках достаточно указать адрес. - ### Шаг 6. Сообщение появляется в чате + ### Шаг 7. Сообщение появляется в чате Пачка обрабатывает запрос и публикует сообщение от имени бота во все групповые чаты, где он состоит. ## Настройки -Настройки входящего вебхука находятся на вкладке **Входящий Webhook** в настройках бота. +Настройки входящего вебхука находятся на вкладке **Входящий вебхук** в карточке бота и появляются после включения. Кнопка **Удалить вебхук** внизу вкладки выключает его: адрес перестаёт принимать запросы, а настройки и шаблон удаляются. + +![Вкладка «Входящий вебхук» в карточке бота](/images/incoming-webhooks/inc_webhook.webp) -![Вкладка Входящий Webhook в настройках бота](/images/incoming-webhooks/inc_webhook.webp) +*Вкладка «Входящий вебхук» в карточке бота* -*Вкладка Входящий Webhook в настройках бота* +### Источник + +- **GitLab** — пуши, пайплайны, merge request и комментарии +- **Grafana** — алерты со скриншотами графиков +- **Свой формат** — любой сервис: JSON и шаблон сообщения + +Для GitLab и Grafana Пачка сама разбирает запрос и собирает сообщение, поэтому шаблон нужен только своему формату. ### Шаблон сообщения -По умолчанию Пачка публикует содержимое поля `message` из входящего JSON. Если вместо готового текста вы хотите отправлять произвольную JSON-структуру и гибко формировать сообщение из её полей — укажите **формат отображения** и **шаблон**. +По умолчанию Пачка публикует содержимое поля `message` из входящего JSON. Если вместо готового текста вы хотите отправлять произвольную JSON-структуру и гибко формировать сообщение из её полей — выберите **формат шаблона** и заполните **шаблон сообщения**. При пустом шаблоне в сообщение попадает поле `message`. Пачка поддерживает два шаблонизатора: @@ -107,21 +120,22 @@ Liquid также поддерживает: - **Фильтры массивов** — `join`, `first`, `last`, `sort`, `uniq`, `where`, `map`, `size` - **Фильтры дат** — `date` с форматированием (`%d.%m.%Y`, `%H:%M` и пр.) -> После отправки вебхука в настройках бота появляется кнопка **«Показать последний полученный объект...»**. Нажмите на неё — откроется модальное окно с содержимым последнего полученного JSON. Используйте его, чтобы определить нужные поля и перенести их в шаблон. +> После первого запроса на вкладке появляется ссылка **Показать последний полученный объект** с датой получения. Нажмите на неё — откроется окно с содержимым последнего полученного JSON. Используйте его, чтобы определить нужные поля и перенести их в шаблон. ### Показывать превью ссылок -Если включено, Пачка будет генерировать превью для ссылок в сообщениях бота — аналогично тому, как это работает для обычных сообщений. +Если включено, Пачка разворачивает ссылки из сообщений вебхука в превью — так же, как в обычных сообщениях. ### Поле для верификации -Некоторые сервисы (например, [monday.com](https://monday.com)) при настройке вебхука отправляют проверочный запрос и ожидают получить в ответе определённое поле. Укажите название поля проверки — Пачка вернёт его значение в ответе на запрос верификации. +Некоторые сервисы (например, [monday.com](https://monday.com)) при настройке вебхука отправляют проверочный запрос и ожидают получить в ответе определённое поле. Укажите название поля проверки — Пачка ответит JSON-объектом с этим полем и его значением. Для monday.com это слово `challenge`. ## Настройка через API Все эти настройки можно задать программно, без интерфейса — методами [Новый бот](/api/bots/create) и [Редактирование бота](/api/bots/update): +- `kind` — источник: `simple` для своего формата, `gitlab` или `grafana` - `template` — шаблон сообщения - `template_engine` — шаблонизатор (`liquid` или `mustache`) - `challenge_key` — поле для верификации @@ -129,6 +143,8 @@ Liquid также поддерживает: Текущие значения возвращаются в объекте бота и доступны через метод [Информация о боте](/api/bots/get). +Бот, созданный через API, принимает запросы в своём формате сразу, с шаблонизатором Liquid по умолчанию. Пустой бот, созданный с `empty: true`, входящего вебхука не имеет, пока ему не задали `kind`. + ## Ограничения > **Внимание:** Входящий вебхук не позволяет отправить личное сообщение или указать конкретный чат. Сообщение @@ -136,6 +152,7 @@ Liquid также поддерживает: используйте API-метод [Новое сообщение](/api/messages/create). +- **Формат запроса** — Пачка принимает тело в форматах `application/json`, `application/x-www-form-urlencoded` и `multipart/form-data`. На запрос с другим заголовком `Content-Type` или без него вебхук отвечает `415` и перечисляет допустимые форматы в тексте ответа, сообщение не публикуется. - **Максимальная длина сообщения** — 40 000 байт. Для кириллицы это около 20 000 символов, поскольку каждый символ занимает два байта. Если результат шаблона превышает лимит, сообщение не будет отправлено. - **Пустое сообщение** — если шаблон возвращает пустую строку, сообщение не будет отправлено. - **Ошибка в шаблоне** — если шаблон содержит синтаксическую ошибку, в чат будет отправлено сообщение вида `Ошибка в шаблоне: описание ошибки`. @@ -146,6 +163,6 @@ Liquid также поддерживает: ## Связанные разделы -- [Боты: Создание и настройка](/guides/bots/setup) +- [Боты: Создание бота](/guides/bots/setup) - [Разворачивание ссылок](/guides/link-previews) - [Кнопки в сообщениях](/guides/buttons) diff --git a/apps/docs/public/guides/link-previews.md b/apps/docs/public/guides/link-previews.md index f7e03b7d9..b72c121e5 100644 --- a/apps/docs/public/guides/link-previews.md +++ b/apps/docs/public/guides/link-previews.md @@ -9,19 +9,19 @@ Unfurling — это создание превью ссылки в сообще ## Как это работает - ### Шаг 1. Создайте Unfurl-бота + ### Шаг 1. Создайте бота -Перейдите в **Автоматизации** > **Интеграции** > **Чат-боты и Вебхуки** и создайте бота с типом **Unfurl бот**. Создать такого бота может только владелец пространства или участник с ролью «Администратор». Подробнее — в разделе [Боты](/guides/bots/overview). +Откройте **Интеграции** > **Боты** и нажмите **Создать бота**. Подробнее — в разделе [Создание бота](/guides/bots/setup). - ### Шаг 2. Укажите домены + ### Шаг 2. Включите исходящий вебхук -В настройках Unfurl-бота укажите до 5 доменов, ссылки на которые бот будет отслеживать. Бот отслеживает ссылки во всех чатах пространства — добавлять его в конкретные чаты не нужно. +В карточке бота на вкладке **Исходящий вебхук** нажмите **Включить** и укажите URL вашего сервера. Подробнее — в разделе [Исходящие вебхуки](/guides/webhook/overview). - ### Шаг 3. Настройте исходящий вебхук + ### Шаг 3. Включите событие и укажите домены -На вкладке **Исходящий Webhook** укажите URL вашего сервера и включите событие **Отправка ссылок**. Подробнее — в разделе [Исходящие вебхуки](/guides/webhook/overview). +В списке событий в группе **Ссылки** включите **Отправка ссылок в сообщении (unfurl)** и перечислите через запятую до 5 доменов, ссылки на которые бот будет отслеживать. Бот получает ссылки из всех чатов пространства, поэтому добавлять его в чаты не нужно, а включить событие, задать домены и менять адрес исходящего вебхука у такого бота может только администратор или владелец пространства. Через API это событие `message_link_shared` в поле `events` и домены в `unfurl_domains` метода [Редактирование бота](/api/bots/update). ### Шаг 4. Обработайте вебхук @@ -59,10 +59,20 @@ Unfurling — это создание превью ссылки в сообще - `domain: string` (required) — Домен ссылки. Пример: `"example.com"` - `skip: boolean` (required) — Признак того, что автор сообщения скрыл превью для этой ссылки. Если `true` — бот не должен создавать превью. Пример: `false` - `user_id: integer, int32` (required) — Идентификатор отправителя сообщения. Пример: `2345` +- `entity_type: string` (required) — Тип сущности, к которой относится сообщение со ссылкой + Значения: `discussion` — Беседа или канал, `thread` — Тред, `user` — Пользователь +- `entity_id: integer, int32` (required, nullable) — Идентификатор сущности: беседы или канала, треда. В личной переписке `null`: бот в ней не участвует, и собеседника ему не раскрывают. Пример: `23438` +- `thread: object` (required) — Тред, в котором отправлено сообщение со ссылкой. `null`, если сообщение отправлено не в треде. + - `message_id: integer, int32` (required, nullable) — Идентификатор сообщения, к которому был создан тред. `null` у треда без сообщения-родителя — такие создаёт [Новый самостоятельный тред](/api/threads/create). Пример: `12345` + - `message_chat_id: integer, int32` (required, nullable) — Идентификатор чата сообщения, к которому был создан тред. `null` у треда без сообщения-родителя. Пример: `67890` - `created_at: date-time` (required) — Дата и время создания сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2024-09-18T19:53:14.000Z"` - `webhook_timestamp: integer, int32` (required) — Дата и время отправки вебхука (UTC+0) в формате UNIX. Пример: `1726685594` +Поля `entity_type`, `entity_id` и `thread` — те же, что в вебхуке о новом сообщении: по ним видно, в беседе, канале, треде или личной переписке отправлена ссылка. Бот не состоит в этом чате, поэтому в личной переписке `entity_id` приходит `null`. + +Ссылки из сообщений другого бота приходят, только если у того включён показ превью ссылок во входящем вебхуке. Ссылки из своих сообщений бот не получает, если у него включено «Игнорировать свои сообщения». + ## Создание превью Для создания превью используйте метод [Unfurl (разворачивание ссылок)](/api/messages/unfurl), передав `message_id` из вебхука. diff --git a/apps/docs/public/guides/llms.txt b/apps/docs/public/guides/llms.txt index b67a9d175..64db315bd 100644 --- a/apps/docs/public/guides/llms.txt +++ b/apps/docs/public/guides/llms.txt @@ -11,12 +11,21 @@ - [AI агенты, Оформление ответов](https://dev.pachca.com/guides/ai-agents/markdown.md): Агент присылает отчёты, ревью и сводки в Markdown — Пачка рендерит .md оформленной карточкой: таблицы, чеклисты, подсветка кода, diff, диаграммы Mermaid. Файлы .html открываются просмотром прямо в переписке - [Треды](https://dev.pachca.com/guides/threads.md): Треды в Пачке для разработчиков: сквозные и самостоятельные треды как уникальная особенность, создание у сообщения (POST /messages/{id}/thread) и без привязки к сообщению (POST /threads), отправка комментариев, добавление участников, видимость родительского чата, нюансы API и поля Message.thread/root_chat_id - [Теги](https://dev.pachca.com/guides/tags.md): Теги в Пачке: тег как состав беседы или канала с автоматической синхронизацией участников, упоминание тега в сообщении и в треде, поле list_tags у сотрудника, правила названий, права и события журнала аудита -- [Боты, Обзор](https://dev.pachca.com/guides/bots/overview.md): Боты в Пачке: что это, типы ботов, доступность в чатах и подмена имени и аватара отправителя в сообщениях -- [Боты, Создание и настройка](https://dev.pachca.com/guides/bots/setup.md): Как создать бота в Пачке: выбор типа, копирование токена, настройка имени и аватара, настройка доступов и вкладок вебхуков и API +- [Боты, Обзор](https://dev.pachca.com/guides/bots/overview.md): Боты в Пачке: сервисный участник пространства, на котором строятся интеграции. Что умеет бот, с чего начать под вашу задачу, где бот находится в интерфейсе, вкладка «Управление» и подмена имени отправителя +- [Боты, Создание бота](https://dev.pachca.com/guides/bots/setup.md): Как создать бота в Пачке: в разделе «Интеграции» или методом API, что настроить сразу после создания и жизненный цикл бота через API +- [Боты, Настройки бота](https://dev.pachca.com/guides/bots/settings.md): Вкладка «Основное» в карточке бота: профиль, ограничение одним чатом, публичный бот, кто может добавлять бота в чаты и редактировать его настройки, удаление бота и те же настройки через API +- [Боты, Токены бота](https://dev.pachca.com/guides/bots/tokens.md): Токены бота в Пачке: несколько токенов со своими правами, выпуск, перевыпуск и удаление на вкладке «API», права самоуправления бота, токены через API и что делать, если токен утёк +- [Боты, Первый диалог с ботом](https://dev.pachca.com/guides/bots/first-contact.md): Как сотрудник начинает разговор с ботом в Пачке и почему бот молчит: личный чат создаётся без события, новый бот слушает только команды. Что настроить заранее и как ответить на первое сообщение - [Боты, Доступы к чатам и сообщениям](https://dev.pachca.com/guides/bots/access.md): Как бот получает доступ к закрытым каналам и беседам, тредам и личным сообщениям в Пачке +- [Боты, Витрина](https://dev.pachca.com/guides/bots/showcase.md): Витрина ботов в Пачке: каталог пространства на вкладке «Обзор» — карточки опубликованных ботов с авторизацией и список публичных ботов. Как опубликовать бота, что на его странице и как сотрудник подключает бота сам - [Боты, Готовые примеры реализации](https://dev.pachca.com/guides/bots/examples.md): Открытые примеры ботов для Пачки: Welcome Bot для приветствия новых сотрудников, Review Bot для интеграции с GitHub Pull Requests и Unfurl-бот для предпросмотра ссылок +- [Авторизация от имени сотрудника, Обзор](https://dev.pachca.com/guides/oauth/overview.md): Авторизация от имени сотрудника: сотрудник выдаёт боту свои права, и бот делает автоматизации в Пачке и связывает её с другими сервисами от его имени. Как это выглядит для сотрудника, где настраивается у бота и какие ограничения действуют +- [Авторизация от имени сотрудника, Чек-лист запуска](https://dev.pachca.com/guides/oauth/checklist.md): Что должно быть включено у бота, чтобы авторизация от имени сотрудника заработала: сотрудник может написать боту, бот узнаёт о сообщении и отвечает кнопкой, вкладка «OAuth» настроена. Что видно, когда чего-то не хватает +- [Авторизация от имени сотрудника, Настройка авторизации](https://dev.pachca.com/guides/oauth/setup.md): Как включить у бота авторизацию от имени сотрудника: где хранится секрет, адреса возврата, client_id и client_secret, запрашиваемый доступ, страница на витрине, отключение и те же настройки через API +- [Авторизация от имени сотрудника, Получение токена](https://dev.pachca.com/guides/oauth/flow.md): Как бот получает токен сотрудника по шагам: ссылка авторизации с state и PKCE, кнопка в сообщении бота, возврат с кодом, обмен кода на токен, проверка сотрудника и обработка отказов. Пример на curl и TypeScript +- [Авторизация от имени сотрудника, Согласие и отзыв](https://dev.pachca.com/guides/oauth/consent.md): Экран согласия при авторизации бота: что видит сотрудник, кто не может выдать доступ, повторная авторизация, список «Авторизации» на странице «API», отзыв доступа и что после него происходит с ботом - [Входящие вебхуки](https://dev.pachca.com/guides/incoming-webhooks.md): Входящие вебхуки в Пачке: отправка сообщений от имени бота одним HTTP POST без API, шаблонизатор для форматирования, интеграции с CI/CD и мониторингом -- [Исходящие вебхуки, Обзор](https://dev.pachca.com/guides/webhook/overview.md): Исходящие вебхуки в Пачке: что это, как настроить и какие настройки доступны на вкладке Исходящий Webhook в боте +- [Исходящие вебхуки, Обзор](https://dev.pachca.com/guides/webhook/overview.md): Исходящие вебхуки в Пачке: что это, как включить и какие настройки доступны на вкладке «Исходящий вебхук» в карточке бота - [Исходящие вебхуки, Настройка и типы событий](https://dev.pachca.com/guides/webhook/events.md): Настройки исходящих вебхуков Пачки и список доступных типов событий: сообщения, реакции, нажатия кнопок, заполнение форм, изменение участников чатов и пространства, отправка ссылок - [Исходящие вебхуки, Безопасность и обработчик](https://dev.pachca.com/guides/webhook/handler.md): Безопасность исходящих вебхуков Пачки: подпись HMAC-SHA256, проверка timestamp, IP-адрес отправителя, примеры обработчика на TypeScript и Python, идемпотентная обработка и доставка - [Исходящие вебхуки, Поллинг](https://dev.pachca.com/guides/webhook/polling.md): Поллинг исходящих вебхуков Пачки через SDK: получение новых событий без публичного webhook URL, дедупликация доставок и пример воркера для локальной разработки diff --git a/apps/docs/public/guides/n8n/advanced.md b/apps/docs/public/guides/n8n/advanced.md index 4bd8e33b9..a2d773799 100644 --- a/apps/docs/public/guides/n8n/advanced.md +++ b/apps/docs/public/guides/n8n/advanced.md @@ -202,9 +202,9 @@ AI Agent самостоятельно выбирает подходящий ин ## Разворачивание ссылок -Ресурс **Message** с операцией **Unfurl** позволяет формировать кастомные превью для ссылок в сообщениях бота. +Ресурс **Message** с операцией **Unfurl** ставит к ссылкам в сообщениях превью с заголовком, описанием и изображением — например, к ссылкам на задачи во внутреннем трекере. -Когда бот отправляет сообщение со ссылкой, Пачка может запросить у бота данные для превью. Бот может ответить через [Unfurl (разворачивание ссылок)](/api/messages/unfurl) с заголовком, описанием и изображением. +Сценарий начинается с события **Link Shared** в узле **Pachca Trigger**: бот получает его, когда в любом чате пространства появляется ссылка на один из его доменов. Домены и само событие задаются на вкладке **Исходящий вебхук** в карточке бота, и включить их может только администратор или владелец пространства. Дальше workflow собирает данные по ссылке и отвечает операцией **Unfurl** — методом [Unfurl (разворачивание ссылок)](/api/messages/unfurl) по `message_id` из события. Подробнее — в [документации разворачивания ссылок](/guides/link-previews). diff --git a/apps/docs/public/guides/n8n/resources.md b/apps/docs/public/guides/n8n/resources.md index 4f8af2dd7..005d7e16d 100644 --- a/apps/docs/public/guides/n8n/resources.md +++ b/apps/docs/public/guides/n8n/resources.md @@ -24,7 +24,7 @@ | # | Ресурс | Операций | Описание | Только v2 | |---|--------|:---:|----------|:---:| | 1 | [Message](#message) | 8 | Сообщения: создание, редактирование, удаление, закрепление, unfurl | | -| 2 | [Chat](#chat) | 8 | Чаты: создание, обновление, архивация, экспорт | | +| 2 | [Chat](#chat) | 10 | Чаты: создание, обновление, архивация, экспорт, отметка непрочитанным | | | 3 | [Chat Member](#chat-member) | 7 | Участники чата: добавление, удаление, роли, теги | да | | 4 | [User](#user) | 10 | Сотрудники: CRUD, аватар, статус | | | 5 | [Group Tag](#group-tag) | 6 | Теги сотрудников: CRUD, список пользователей | | @@ -34,7 +34,7 @@ | 9 | [OAuth](#oauth) | 1 | Информация о токене | да | | 10 | [Task](#task) | 5 | Задачи: полный CRUD | | | 11 | [Draft](#draft) | 5 | Черновики и отложенные сообщения: полный CRUD | да | -| 12 | [Bot](#bot) | 10 | Боты: создание, получение, список, редактирование, удаление, вебхук, ротация токена, события | | +| 12 | [Bot](#bot) | 18 | Боты: создание, получение, список, редактирование, удаление, вебхук, токены, ротация токена и секрета, события | | | 13 | [File](#file) | 2 | Загрузка файлов через S3, скачивание защищённых вложений | | | 14 | [Form](#form) | 1 | Модальные формы | | | 15 | [Custom Property](#custom-property) | 1 | Дополнительные поля | да | @@ -75,7 +75,7 @@ ## Chat -Чаты: создание, получение, обновление, архивация и разархивация. +Чаты: создание, получение, обновление, архивация и разархивация, отметка непрочитанным. | Операция | API | |----------|-----| @@ -88,6 +88,7 @@ | Request Export | [Экспорт сообщений](/api/chats/request-export) | | Download Export | [Скачать архив экспорта](/api/chats/download-export) | | Get Many Workspace Chats | [Список чатов пространства](/api/chats/list-company) | +| Mark Unread | [Отметка чата непрочитанным](/api/chats/mark-unread) | **Сортировка в Get Many:** параметры `sort` (`id` или `last_message_at`) и `order` (`asc` / `desc`). Также доступны фильтры `availability`, `lastMessageAtAfter`, `lastMessageAtBefore`. @@ -243,7 +244,7 @@ ## Bot -Боты: создание, получение, список, редактирование, удаление, саморегистрация вебхука, ротация токена, история и удаление событий. +Боты: создание, получение, список, редактирование, удаление, саморегистрация вебхука, токены бота и их права, ротация токена и секрета клиента, история и удаление событий. | Операция | API | |----------|-----| @@ -258,6 +259,13 @@ | Get Many Events | [История событий](/api/bots/list-events) | | Remove Events | [Удаление события](/api/bots/remove-event) | | Get Many Workspace Bots | [Список ботов пространства](/api/bots/list-company) | +| Get Many Tokens | [Список токенов бота](/api/bots/list-tokens) | +| Create Token | [Новый токен бота](/api/bots/create-token) | +| Update Token | [Изменение токена бота](/api/bots/update-token) | +| Reissue Token | [Перевыпуск токена бота](/api/bots/reissue-token) | +| Delete Token | [Удаление токена бота](/api/bots/delete-token) | +| Get Scopes | [Каталог прав бота](/api/bots/list-scopes) | +| Rotate Client Secret | [Ротация секрета клиента](/api/bots/rotate-client-secret) | **Get Many Workspace Bots** отдаёт всех ботов пространства, включая недоступных владельцу токена для редактирования. У таких ботов заполнены только `Name` и `Nickname`, остальные настройки приходят пустыми. Доступно владельцу пространства на тарифе «Корпорация». diff --git a/apps/docs/public/guides/n8n/setup.md b/apps/docs/public/guides/n8n/setup.md index 90223d2e1..284e201e7 100644 --- a/apps/docs/public/guides/n8n/setup.md +++ b/apps/docs/public/guides/n8n/setup.md @@ -151,8 +151,8 @@ Credentials — данные для авторизации. Перейдите В Пачке доступны два типа токенов: -- **Персональный токен** — доступен в разделе **Автоматизации** > **Интеграции** > **API** -- **Токен бота** — доступен в настройках бота на вкладке **API** +- **Персональный токен** — создаётся на странице **Интеграции** > **API** +- **Токен бота** — создаётся в карточке бота на вкладке **API** (**Интеграции** > **Боты** > **Управление**) Доступные операции зависят от [скоупов](/api/authorization#skoupy) токена, а не от его типа. Подробнее — в разделе [Авторизация](/api/authorization). diff --git a/apps/docs/public/guides/n8n/trigger.md b/apps/docs/public/guides/n8n/trigger.md index 72bbc4321..9b498a980 100644 --- a/apps/docs/public/guides/n8n/trigger.md +++ b/apps/docs/public/guides/n8n/trigger.md @@ -117,7 +117,7 @@ Pachca Trigger поддерживает два режима настройки: ### Шаг 3. Вставьте URL в настройки бота в Пачке -Откройте настройки вашего бота в Пачке, перейдите на вкладку **Исходящий Webhook** и вставьте скопированный Production URL в поле **Webhook URL**. Подробнее — в разделе [Настройка и типы событий](/guides/webhook/events#obschie-nastroyki). +Откройте карточку бота в Пачке и на вкладке **Исходящий вебхук** укажите скопированный Production URL: при первом включении вебхука кнопкой **Включить**, а если он уже включён — в поле адреса. Подробнее — в разделе [Настройка и типы событий](/guides/webhook/events#obschie-nastroyki). ### Шаг 4. Вернитесь в n8n и активируйте @@ -125,7 +125,7 @@ Pachca Trigger поддерживает два режима настройки: Нажмите **Activate** в n8n. С этого момента бот отправляет события в ваш workflow. -> **Внимание:** В ручном режиме URL в настройках бота вы ставите сами — значит и очищать его тоже нужно самостоятельно. Если вы удаляете workflow или меняете URL, очистите поле **Webhook URL** в настройках бота в Пачке вручную — иначе Пачка будет продолжать отправлять события на недоступный адрес. +> **Внимание:** В ручном режиме URL в настройках бота вы ставите сами — значит и очищать его тоже нужно самостоятельно. Если вы удаляете workflow или меняете URL, замените адрес на вкладке **Исходящий вебхук** в карточке бота или удалите там вебхук кнопкой **Удалить вебхук** — иначе Пачка будет продолжать отправлять события на недоступный адрес. ## Автоматический режим @@ -143,7 +143,7 @@ Pachca Trigger поддерживает два режима настройки: ### Шаг 1. Вставьте токен в Credentials -Откройте Pachca API Credentials и в поле **Access Token** вставьте токен. Подойдёт **токен бота** (из настроек бота → вкладка **API**) — тогда бот зарегистрирует вебхук сам. Или **персональный токен** (из **Автоматизации** → **Интеграции** → **API**) со скоупом `bots:write` и доступом редактора к целевому боту. +Откройте Pachca API Credentials и в поле **Access Token** вставьте токен. Подойдёт **токен бота** (карточка бота → вкладка **API**) — тогда бот зарегистрирует вебхук сам. Или **персональный токен** (**Интеграции** → **API**) со скоупом `bots:write`, если его владелец может редактировать целевого бота. ### Шаг 2. Переключите Webhook Setup на Automatic @@ -153,7 +153,7 @@ Pachca Trigger поддерживает два режима настройки: ### Шаг 3. Укажите Bot ID — только для персонального токена -Для **персонального токена** заполните появившееся поле **Bot ID** — ID бота, которому нужно прописать Webhook URL (его видно в адресе страницы настроек бота в Пачке). Для **токена бота** это поле не нужно: бот регистрирует себя сам. +Для **персонального токена** заполните появившееся поле **Bot ID** — ID бота, которому нужно прописать Webhook URL (это `user_id` на вкладке **API** карточки бота, его же видно в адресе карточки). Для **токена бота** это поле не нужно: бот регистрирует себя сам. ### Шаг 4. Активируйте workflow @@ -192,7 +192,7 @@ sequenceDiagram ``` -> **Внимание:** **Если получили 403 Forbidden при активации** — токену не хватает прав. Для **токена бота** включите скоуп `bot_self:webhook:write` (настройки бота → вкладка **API**). Для **персонального токена** нужен скоуп `bots:write` и доступ редактора к указанному боту — проверьте доступы или вернитесь в **Manual**. +> **Внимание:** **Если получили 403 Forbidden при активации** — токену не хватает прав. Для **токена бота** добавьте ему право `bot_self:webhook:write` (карточка бота → вкладка **API** → **Редактировать** в меню токена). Для **персонального токена** нужен скоуп `bots:write` и доступ редактора к указанному боту — проверьте доступы или вернитесь в **Manual**. ## Альтернатива: установка URL через узел Pachca Bot Update diff --git a/apps/docs/public/guides/n8n/troubleshooting.md b/apps/docs/public/guides/n8n/troubleshooting.md index 5bf85d9d6..37eec9ad4 100644 --- a/apps/docs/public/guides/n8n/troubleshooting.md +++ b/apps/docs/public/guides/n8n/troubleshooting.md @@ -41,8 +41,8 @@ 1. Откройте **Credentials** и проверьте значение **Access Token** 2. Убедитесь, что токен скопирован целиком, без лишних пробелов 3. Нажмите **Test** — при ошибке создайте новый токен в Пачке -4. Для бот-токена: **Настройки бота** → вкладка **API** → скопируйте токен -5. Для персонального токена: **Автоматизации** → **Интеграции** → **API** +4. Для токена бота: значение показывается только при создании, поэтому потерянный токен перевыпустите в карточке бота на вкладке **API** (**Перевыпустить** в меню токена) +5. Для персонального токена: создайте новый на странице **Интеграции** → **API** ### Недостаточно прав (403 Forbidden) @@ -78,8 +78,8 @@ **Решение:** -1. **Токен бота:** включите для бота скоуп `bot_self:webhook:write` — настройки бота → вкладка **API** -2. **Персональный токен:** убедитесь, что у пользователя токена стоит роль **Редактор** в списке доступов бота, и что у токена есть скоуп `bots:write` (в настройках токена в **Автоматизации** → **Интеграции** → **API**) +1. **Токен бота:** добавьте токену право `bot_self:webhook:write` — в карточке бота на вкладке **API** выберите **Редактировать** в меню токена +2. **Персональный токен:** убедитесь, что владелец токена может редактировать бота — он его создатель или подходит под настройку **Кто может редактировать настройки бота** — и что у токена есть скоуп `bots:write` (**Редактировать** в меню токена на странице **Интеграции** → **API**) 3. Либо переключите **Webhook Setup** = **Manual** и пропишите Production URL в настройках бота самостоятельно — см. [Ручной режим](/guides/n8n/trigger#ruchnoy-rezhim) --- @@ -109,14 +109,14 @@ 1. **Бот не добавлен в чат** — бот получает события только из чатов, в которых он состоит. Добавьте бота в нужный канал 2. **Workflow не активирован** — нажмите **Activate** в правом верхнем углу. Неактивные workflow не принимают вебхуки -3. **URL не прописан в настройках бота** — в ручном режиме узел не трогает webhook-слот бота. Проверьте, что Production URL вставлен в поле **Webhook URL** в настройках бота (вкладка **Исходящий Webhook**). В автоматическом режиме убедитесь, что в узле указан корректный **Bot ID** +3. **URL не прописан в настройках бота** — в ручном режиме узел не трогает webhook-слот бота. Проверьте, что Production URL указан адресом исходящего вебхука в карточке бота (вкладка **Исходящий вебхук**). В автоматическом режиме убедитесь, что в узле указан корректный **Bot ID** 4. **n8n недоступен извне** — при локальной установке Пачка не может отправить вебхук на `localhost`. Используйте туннель (ngrok, Cloudflare Tunnel) или разверните n8n на сервере с публичным IP ### Ошибка подписи (Signature Mismatch) **Причина:** Signing Secret в Credentials не совпадает с секретом бота в Пачке. -**Решение:** скопируйте Signing Secret из настроек бота в Пачке (вкладка **Исходящий Webhook**) и вставьте в Credentials. +**Решение:** скопируйте Signing secret из карточки бота в Пачке (вкладка **Исходящий вебхук**) и вставьте в Credentials. --- diff --git a/apps/docs/public/guides/oauth/checklist.md b/apps/docs/public/guides/oauth/checklist.md new file mode 100644 index 000000000..5f6a0a48e --- /dev/null +++ b/apps/docs/public/guides/oauth/checklist.md @@ -0,0 +1,52 @@ +> Расположение: Авторизация от имени сотрудника +> Краткое содержание: Что должно быть включено у бота, чтобы авторизация от имени сотрудника заработала: сотрудник может написать боту, бот узнаёт о сообщении и отвечает кнопкой, вкладка «OAuth» настроена. Что видно, когда чего-то не хватает +> Это Markdown-версия конкретной страницы. Для контекста за её пределами (правила API, полный перечень методов, авторизация) ОБЯЗАТЕЛЬНО открой [llms.txt](https://dev.pachca.com/llms.txt) перед ответом — это сэкономит токены и предотвратит неполный ответ. + + +# Чек-лист запуска + +Авторизация проходит через диалог с ботом: сотрудник пишет боту, бот отвечает кнопкой, сотрудник соглашается, и бот получает токен. Поэтому ломается она чаще всего не на OAuth, а на настройках вокруг него. Пройдите список перед запуском бота и вернитесь к нему, если на этом пути что-то не срабатывает. + + + ### Шаг 1. Сотрудник может написать боту + +- Бот публичный, у сотрудника есть с ботом общий чат, или бот написал сотруднику первым. Переключатель **Публичный бот** — на вкладке **Основное** в карточке бота. +- Публикация в витрине сама по себе написать боту не позволяет. + +Без этого у бота нет кнопки **Сообщение**. Подробнее — в разделе [Как сотрудник попадает к боту](/guides/bots/first-contact#kak-sotrudnik-popadaet-k-botu). + + + ### Шаг 2. Бот узнаёт о сообщении + +- Исходящий вебхук включён и указывает на ваш сервер. +- Включено событие **Новые сообщения** в режиме **Любые сообщения** или с командой, с которой начинается разговор. Новый бот слушает только команды, а их список пуст. +- Сервер проверяет подпись запросов, а бот игнорирует свои сообщения. + +Без вебхука и события сотрудник пишет, а бот молчит. Как настроить — в разделе [Первый диалог с ботом](/guides/bots/first-contact#chto-nastroit-zaranee). + + + ### Шаг 3. Бот отвечает кнопкой + +- У бота есть токен с правом `messages:create`. +- Кнопка ведёт на экран согласия. Как её собрать — в разделе [Получение токена](/guides/oauth/flow#shagi). + +Без права отправки метод [Новое сообщение](/api/messages/create) ответит `403`, и кнопка до сотрудника не дойдёт. Подробнее о правах — в разделе [Токены бота](/guides/bots/tokens#prava-tokena). + + + ### Шаг 4. Авторизация проходит + +- Сотрудникам разрешено выдавать доступ ботам: в настройках пространства **Кто может создавать персональные токены** — **Все сотрудники**. По умолчанию там **Только администраторы**, и тогда сотрудник вместо согласия видит отказ. +- Авторизация на вкладке **OAuth** включена, указан хотя бы один адрес возврата. +- Запрашиваемый доступ задан: в нём только права, которые боту действительно нужны. +- Приложение без секрета передаёт PKCE с методом `S256`, серверное хранит `client_secret` и обменивает код на своей стороне. + +Без этого сотрудник не дойдёт до согласия или бот не сможет обменять код на токен. Настройки вкладки — в разделе [Настройка авторизации](/guides/oauth/setup#vklyuchenie), ошибки обмена — в разделе [Ошибки и отказы](/guides/oauth/flow#oshibki-i-otkazy). + + + + +## Связанные разделы + +- [Настройка авторизации](/guides/oauth/setup) +- [Получение токена](/guides/oauth/flow) +- [Боты: Первый диалог с ботом](/guides/bots/first-contact) diff --git a/apps/docs/public/guides/oauth/consent.md b/apps/docs/public/guides/oauth/consent.md new file mode 100644 index 000000000..4018c97de --- /dev/null +++ b/apps/docs/public/guides/oauth/consent.md @@ -0,0 +1,74 @@ +> Расположение: Авторизация от имени сотрудника +> Краткое содержание: Экран согласия при авторизации бота: что видит сотрудник, кто не может выдать доступ, повторная авторизация, список «Авторизации» на странице «API», отзыв доступа и что после него происходит с ботом +> Это Markdown-версия конкретной страницы. Для контекста за её пределами (правила API, полный перечень методов, авторизация) ОБЯЗАТЕЛЬНО открой [llms.txt](https://dev.pachca.com/llms.txt) перед ответом — это сэкономит токены и предотвратит неполный ответ. + + +# Согласие и отзыв + +## Экран согласия + +Кнопка авторизации открывает экран согласия в веб-версии Пачки. + +![Экран согласия: «Авторизовать Jira?», пространство, почта сотрудника, запрашиваемые разрешения и кнопки «Отменить» и «Разрешить»](/images/oauth/consent.webp) + +*Экран согласия* + + +На нём сотрудник видит: + +- вопрос «Авторизовать …?» с именем бота и рядом два аватара — свой и бота; +- пространство и свою почту — чтобы не выдать доступ из чужого аккаунта; +- **Запрашиваемые разрешения** — набор из настроек бота, а когда прав много, они сгруппированы по категориям; +- кнопки **Разрешить** и **Отменить**. + +После **Разрешить** браузер сразу возвращается на адрес бота с кодом авторизации. **Отменить** возвращает браузер назад, и бот ничего не получает. + +> Выбирать отдельные права на экране нельзя: сотрудник соглашается на весь набор или не соглашается вовсе. Поэтому просите у сотрудника только то, что действительно нужно боту. + + +## Кто не может выдать доступ + +Вместо экрана согласия сотрудник увидит отказ в трёх случаях: + +- **Он гость.** Этой роли доступ к API не выдаётся. +- **Выдавать доступ ботам могут только администраторы.** Так по умолчанию, пока в настройке **Кто может создавать персональные токены** не выбрано **Все сотрудники**. Отказ получат все, кто не администратор, в том числе мульти-гости. +- **Бот создан в другом пространстве.** + +## Как роль ограничивает права + +Токен сотрудника никогда не даёт больше, чем может сам сотрудник. Права из набора проверяются на каждом запросе по его текущей роли: если роль не позволяет действие, запрос вернёт `403` с `insufficient_scope`, даже если право есть в наборе. Когда роль меняется, это отражается на токене сразу, выпускать его заново не нужно. Подробнее — в разделе [Права и роли](/guides/permissions). + +## Повторная авторизация + +Если сотрудник снова открывает кнопку, а набор прав в настройках бота не менялся, бот получит тот же токен, а не второй. У серверного приложения повторная авторизация с тем же набором проходит без экрана согласия: браузер сразу возвращается на адрес бота с новым кодом. + +Когда набор в настройках бота расширили, уже выданные авторизации не меняются. Новые права сотрудник увидит и подтвердит при следующей авторизации — для этого бот присылает кнопку заново. + +## Список «Авторизации» + +Все боты, которым сотрудник выдал доступ, собраны в списке **Авторизации** на странице **Интеграции** > **API**. Для каждого видно, когда бот подключён и когда последний раз использовался, а меню позволяет посмотреть выданные разрешения и отозвать доступ. + +![Список «Авторизации» на странице «API»: боты, дата подключения, последнее использование и число разрешений](/images/oauth/authorizations.webp) + +*Список «Авторизации»* + + +Редактор бота видит на вкладке **Управление**, сколько сотрудников его авторизовали, а сотрудник — отметку **Подключено** у бота в [витрине](/guides/bots/showcase). + +## Отзыв доступа + +**Отозвать доступ** в списке «Авторизации» сразу отключает все токены этого бота, выданные сотруднику. Следующий запрос бота с таким токеном вернёт `401`. + +Боту стоит к этому быть готовым: на `401` удалить сохранённый токен и, когда сотрудник снова обратится к боту, прислать кнопку авторизации заново. Сам бот тоже может отозвать токен сотрудника — подробнее в разделе [Отзыв токена ботом](/guides/oauth/flow#otzyv-tokena-botom). + +Доступ заканчивается и без отзыва, если бота удалили или у него отключили авторизацию: тогда перестают работать все выданные ему токены сотрудников. Подробнее — в разделе [Настройка авторизации](/guides/oauth/setup#otklyuchenie). + +Настройка **Кто может создавать персональные токены** выданный доступ не отзывает: значение **Только администраторы** закрывает только новые согласия. + + +## Связанные разделы + +- [Получение токена](/guides/oauth/flow) +- [Настройка авторизации](/guides/oauth/setup) +- [Авторизация](/api/authorization) +- [Права и роли](/guides/permissions) diff --git a/apps/docs/public/guides/oauth/flow.md b/apps/docs/public/guides/oauth/flow.md new file mode 100644 index 000000000..0b2c7ae6c --- /dev/null +++ b/apps/docs/public/guides/oauth/flow.md @@ -0,0 +1,240 @@ +> Расположение: Авторизация от имени сотрудника +> Краткое содержание: Как бот получает токен сотрудника по шагам: ссылка авторизации с state и PKCE, кнопка в сообщении бота, возврат с кодом, обмен кода на токен, проверка сотрудника и обработка отказов. Пример на curl и TypeScript +> Это Markdown-версия конкретной страницы. Для контекста за её пределами (правила API, полный перечень методов, авторизация) ОБЯЗАТЕЛЬНО открой [llms.txt](https://dev.pachca.com/llms.txt) перед ответом — это сэкономит токены и предотвратит неполный ответ. + + +# Получение токена сотрудника + +Бот получает токен сотрудника по стандартной схеме OAuth 2.0 с кодом авторизации ([RFC 6749](https://datatracker.ietf.org/doc/html/rfc6749#section-4.1)) и PKCE ([RFC 7636](https://datatracker.ietf.org/doc/html/rfc7636)). Перед началом включите авторизацию на вкладке **OAuth** в карточке бота — подробнее в разделе [Настройка авторизации](/guides/oauth/setup). Кроме неё, боту нужны исходящий вебхук и токен, иначе сотрудник не получит кнопку. Всё, что должно быть включено, собрано в [Чек-листе запуска](/guides/oauth/checklist). + +**Путь авторизации** + +```mermaid +sequenceDiagram + participant E as Сотрудник + participant P as Пачка + participant S as Сервер бота + + E->>P: Пишет боту + P->>S: Событие о новом сообщении + S->>P: Сообщение с кнопкой авторизации + E->>P: Открывает кнопку и нажимает «Разрешить» + P->>S: Возврат на адрес с code и state + S->>P: POST /oauth/token + P->>S: Токен сотрудника + S->>P: GET /oauth/token/info с токеном сотрудника + S->>P: Запросы от имени сотрудника +``` + + +| Адрес | Назначение | +| --- | --- | +| `https://app.pachca.com/apps/authorize` | Экран согласия, на него ведёт кнопка | +| `https://api.pachca.com/api/shared/v1/oauth/token` | Обмен кода на токен | +| `https://api.pachca.com/api/shared/v1/oauth/revoke` | Отзыв токена | + +Те же адреса публикуются в метаданных сервера авторизации по [RFC 8414](https://datatracker.ietf.org/doc/html/rfc8414): `https://api.pachca.com/.well-known/oauth-authorization-server`. + +## Шаги + + + ### Шаг 1. Сгенерируйте state и пару PKCE + +На каждую кнопку создайте случайный `state` и проверочный код `code_verifier` — случайную строку длиной от 43 до 128 символов. Из него получите `code_challenge`: SHA-256 от `code_verifier` в кодировке base64url без `=` на конце. + +Сохраните `state`, `code_verifier` и идентификатор сотрудника, которому отправляете кнопку: по `state` вы узнаете, чей это возврат. Для варианта **Браузер, мобильное, CLI** PKCE обязателен, для варианта **Серверное, с секретом** — рекомендуется. + + + ### Шаг 2. Соберите ссылку авторизации + +```text title="Ссылка авторизации" +https://app.pachca.com/apps/authorize + ?client_id=CLIENT_ID + &redirect_uri=https%3A%2F%2Fbot.example.com%2Foauth%2Fcallback + &response_type=code + &state=STATE + &code_challenge=CODE_CHALLENGE + &code_challenge_method=S256 +``` + +- `client_id` — с вкладки **OAuth** в карточке бота +- `redirect_uri` — один из адресов возврата бота, совпадение проверяется точно +- `response_type` — всегда `code` +- `state` — значение из первого шага +- `code_challenge` и `code_challenge_method` — PKCE, метод только `S256` + +Параметр `scope` передавать не нужно: набор прав сервер берёт из настроек бота. + + + ### Шаг 3. Отправьте кнопку + +Отправьте ссылку сотруднику URL-кнопкой в личной переписке с ботом — методом [Новое сообщение](/api/messages/create) с `entity_type: "user"`. Подробнее о кнопках — в разделе [Кнопки в сообщениях](/guides/buttons). + +![Бот в ответ на просьбу сотрудника присылает сообщение с кнопкой «Предоставить доступ»](/images/oauth/access_request.webp) + +*Кнопка авторизации в сообщении бота* + + +В тексте рядом с кнопкой объясните, зачем боту доступ и что он будет делать, и попросите не пересылать ссылку. + + + ### Шаг 4. Примите возврат + +Сотрудник видит экран согласия и нажимает **Разрешить**. Браузер возвращается на ваш адрес с параметрами `code`, `state` и `iss` — последний всегда равен `https://api.pachca.com` и подтверждает, что код выдала Пачка. + +```text title="Возврат после согласия" +https://bot.example.com/oauth/callback?code=AUTH_CODE&state=STATE&iss=https%3A%2F%2Fapi.pachca.com +``` + +Найдите сохранённый `state` и сразу удалите его: каждый `state` действует один раз. Если сотрудник нажал **Отменить**, возврата на ваш адрес не будет — браузер просто вернётся назад. Поэтому храните неиспользованные `state` ограниченное время, например сутки. + + + ### Шаг 5. Обменяйте код на токен + +Код живёт 10 минут и обменивается один раз. Серверное приложение передаёт `client_secret` в теле запроса или в заголовке `Authorization: Basic`, приложение без секрета — только `code_verifier`. + +```bash title="Обмен кода на токен" +curl -X POST https://api.pachca.com/api/shared/v1/oauth/token \ + -d grant_type=authorization_code \ + -d code=AUTH_CODE \ + -d redirect_uri=https://bot.example.com/oauth/callback \ + -d client_id=CLIENT_ID \ + -d client_secret=CLIENT_SECRET \ + -d code_verifier=CODE_VERIFIER +``` + +```json title="Ответ" +{ + "access_token": "ACCESS_TOKEN", + "token_type": "Bearer", + "refresh_token": "REFRESH_TOKEN", + "scope": "chats:read messages:read tasks:read tasks:create", + "created_at": 1790242260 +} +``` + +Поля `expires_in` в ответе нет: токен бессрочный и работает, пока сотрудник не отзовёт доступ. Обновлять его не нужно. + + + ### Шаг 6. Проверьте, чей это токен + +Запросите [Информацию о токене](/api/oauth/token-info) с новым токеном: в `data.user_id` придёт сотрудник, который дал согласие. Отдельных прав метод не требует. Сравните его с сотрудником, которому вы отправляли кнопку. + +Сообщение с кнопкой могли переслать, и тогда согласие дал другой сотрудник. Сохраните токен за ним, а тому, кому отправляли кнопку, пришлите её снова. Отзывать такой токен не стоит: если этот сотрудник уже авторизовал бота раньше, Пачка вернула его прежний токен, и отзыв отключит его доступ. + + + ### Шаг 7. Храните токен на сотрудника + +Сохраните токен в привязке к сотруднику и передавайте в заголовке `Authorization: Bearer` при запросах от его имени. Токен даёт доступ ко всему, что видит сотрудник, в пределах выданных прав: храните его как пароль. + + +## Пример на TypeScript + +Серверное приложение на Express: кнопка в ответ на сообщение сотрудника и обработчик возврата. + +```typescript title="oauth.ts" +import crypto from "node:crypto" +import express from "express" + +const API = "https://api.pachca.com/api/shared/v1" +const CLIENT_ID = process.env.PACHCA_CLIENT_ID! +const CLIENT_SECRET = process.env.PACHCA_CLIENT_SECRET! +const BOT_TOKEN = process.env.PACHCA_BOT_TOKEN! +const REDIRECT_URI = "https://bot.example.com/oauth/callback" + +// state → кому отправлена кнопка и проверочный код PKCE +const pending = new Map() + +export async function sendAuthButton(userId: number) { + const state = crypto.randomBytes(16).toString("hex") + const verifier = crypto.randomBytes(32).toString("base64url") + const challenge = crypto.createHash("sha256").update(verifier).digest("base64url") + pending.set(state, { userId, verifier }) + + const url = new URL("https://app.pachca.com/apps/authorize") + url.search = new URLSearchParams({ + client_id: CLIENT_ID, + redirect_uri: REDIRECT_URI, + response_type: "code", + state, + code_challenge: challenge, + code_challenge_method: "S256", + }).toString() + + await fetch(`${API}/messages`, { + method: "POST", + headers: { Authorization: `Bearer ${BOT_TOKEN}`, "Content-Type": "application/json" }, + body: JSON.stringify({ + message: { + entity_type: "user", + entity_id: userId, + content: "Чтобы я мог работать с вашими задачами, разрешите доступ.", + buttons: [[{ text: "Разрешить доступ", url: url.toString() }]], + }, + }), + }) +} + +const app = express() + +app.get("/oauth/callback", async (req, res) => { + const { code, state, error } = req.query as Record + const entry = state ? pending.get(state) : undefined + if (!state || !entry) return res.status(400).send("Ссылка устарела, запросите новую у бота") + pending.delete(state) + if (error || !code) return res.status(400).send("Доступ не выдан, запросите новую ссылку у бота") + + const tokenResponse = await fetch(`${API}/oauth/token`, { + method: "POST", + headers: { "Content-Type": "application/x-www-form-urlencoded" }, + body: new URLSearchParams({ + grant_type: "authorization_code", + code, + redirect_uri: REDIRECT_URI, + client_id: CLIENT_ID, + client_secret: CLIENT_SECRET, + code_verifier: entry.verifier, + }), + }) + if (!tokenResponse.ok) return res.status(502).send("Не удалось получить токен") + const { access_token } = await tokenResponse.json() + + const infoResponse = await fetch(`${API}/oauth/token/info`, { + headers: { Authorization: `Bearer ${access_token}` }, + }) + if (!infoResponse.ok) return res.status(502).send("Не удалось проверить токен") + const { data } = await infoResponse.json() + + // Токен принадлежит тому, кто дал согласие, даже если кнопку ему переслали + await saveToken(data.user_id, access_token) // ваше хранилище токенов + if (data.user_id !== entry.userId) await sendAuthButton(entry.userId) + res.send("Готово, можно вернуться в Пачку") +}) +``` + +## Ошибки и отказы + +Если сотрудник не получает кнопку или бот молчит, дело обычно не в OAuth, а в настройках вокруг него — пройдите [Чек-лист запуска](/guides/oauth/checklist). + +**При обмене кода** + +- `invalid_grant` — код истёк, уже использован или выдан для другого `redirect_uri`, либо `code_verifier` не подходит к `code_challenge`. Отправьте сотруднику новую кнопку. +- `invalid_client` — неверный `client_id` или `client_secret`. Проверьте секрет: после обновления старое значение перестаёт работать сразу. + +**При работе с токеном сотрудника** + +- `401 Unauthorized` — сотрудник отозвал доступ, у бота отключили авторизацию или бот удалён. Удалите токен и, когда сотрудник снова обратится к боту, пришлите кнопку заново. +- `403 Forbidden` с `insufficient_scope` — права нет в выданном наборе или его не позволяет роль сотрудника. Если право есть в `scope` самого токена, дело в роли, и повторная авторизация не поможет. Если в токене права нет, а в настройки бота его уже добавили, пришлите кнопку заново. Подробнее о формате отказа — в разделе [Ошибки авторизации](/api/authorization#oshibki-avtorizatsii). + +## Отзыв токена ботом + +Бот может сам отозвать токен сотрудника, например когда тот отключает интеграцию в вашем сервисе. Серверное приложение отправляет на адрес отзыва `token` вместе с `client_id` и `client_secret`, приложение без секрета — сам токен в теле запроса и в заголовке `Authorization: Bearer`. Как сотрудник отзывает доступ сам — в разделе [Согласие и отзыв](/guides/oauth/consent). + + +## Связанные разделы + +- [Чек-лист запуска](/guides/oauth/checklist) +- [Настройка авторизации](/guides/oauth/setup) +- [Согласие и отзыв](/guides/oauth/consent) +- [Кнопки в сообщениях](/guides/buttons) +- [Авторизация](/api/authorization) diff --git a/apps/docs/public/guides/oauth/overview.md b/apps/docs/public/guides/oauth/overview.md new file mode 100644 index 000000000..7352f5d46 --- /dev/null +++ b/apps/docs/public/guides/oauth/overview.md @@ -0,0 +1,66 @@ +> Расположение: Авторизация от имени сотрудника +> Краткое содержание: Авторизация от имени сотрудника: сотрудник выдаёт боту свои права, и бот делает автоматизации в Пачке и связывает её с другими сервисами от его имени. Как это выглядит для сотрудника, где настраивается у бота и какие ограничения действуют +> Это Markdown-версия конкретной страницы. Для контекста за её пределами (правила API, полный перечень методов, авторизация) ОБЯЗАТЕЛЬНО открой [llms.txt](https://dev.pachca.com/llms.txt) перед ответом — это сэкономит токены и предотвратит неполный ответ. + + +# Авторизация от имени сотрудника + +Обычно бот работает своими правами: видит чаты, в которые его добавили, и пишет как бот. Но многим автоматизациям нужны права конкретного сотрудника: собрать сводку по его чатам, завести задачу от его имени, присылать ему задачи из трекера и отвечать на них прямо из Пачки. Для этого сотрудник авторизует бота — выдаёт ему свои права, и дальше бот работает от его имени. + +Механизм — OAuth 2.0 с кодом авторизации: бот отправляет сотрудника на экран согласия, получает код и обменивает его на токен, которым вызывает API от имени сотрудника. + +## Где включается + +Авторизация включается на вкладке **OAuth** в карточке бота: там выдаются `client_id` и `client_secret`, задаются адреса возврата и набор прав, который бот попросит у сотрудника. Подробнее — в разделе [Настройка авторизации](/guides/oauth/setup). + +Одной вкладки мало: авторизация проходит через диалог с ботом, поэтому боту нужны ещё исходящий вебхук и токен. Всё, что должно быть включено, собрано в [Чек-листе запуска](/guides/oauth/checklist). + +## Как это выглядит для сотрудника + + + ### Шаг 1. Сотрудник пишет боту + +Находит бота в [витрине](/guides/bots/showcase) или в поиске и пишет ему, например `/start`. + + + ### Шаг 2. Бот присылает кнопку + +В ответ бот отправляет сообщение с кнопкой авторизации. Кнопка — обычная ссылка на экран согласия. + + + ### Шаг 3. Сотрудник соглашается + +На экране согласия видны имя бота, пространство и запрашиваемые права. Сотрудник нажимает **Разрешить**. + + + ### Шаг 4. Бот получает токен + +Браузер возвращается на адрес вашего сервера с кодом, сервер обменивает код на токен сотрудника. В витрине у бота появляется отметка **Подключено**. + + +Как собрать кнопку и обменять код — в разделе [Получение токена](/guides/oauth/flow). + +## Ограничения + +- **Только своё пространство.** Авторизовать бота может сотрудник того же пространства, где создан бот. +- **По умолчанию — только администраторам.** Авторизовать бота может тот, кому разрешено создавать персональные токены. По умолчанию это только администраторы: пока владелец или администратор не выберет **Все сотрудники** в настройке **Кто может создавать персональные токены**, сотрудники и мульти-гости авторизовать бота не могут. Доступ, выданный до смены настройки, продолжает работать. Подробнее — в разделе [Кто может создавать токены](/api/authorization#kto-mozhet-sozdavat-tokeny). +- **Гостям недоступно.** Гость не может авторизовать бота ни при какой настройке, а мульти-гость может, как и сотрудник. +- **Роль урезает права.** Право из набора, недоступное роли сотрудника, работать не будет: вызов с таким токеном вернёт `403`. +- **Набор прав один.** Бот не выбирает права при каждой авторизации: запрашивается ровно то, что задано в его настройках. + +## Разделы + +- [Чек-лист запуска](/guides/oauth/checklist) — Что включить у бота, чтобы сотрудник смог написать ему, получить кнопку и авторизовать бота +- [Настройка авторизации](/guides/oauth/setup) — Вкладка «OAuth»: где хранится секрет, адреса возврата и запрашиваемый доступ +- [Получение токена](/guides/oauth/flow) — Кнопка авторизации, обмен кода на токен, PKCE и обработка отказов +- [Согласие и отзыв](/guides/oauth/consent) — Что видит сотрудник, как роль урезает права и что происходит после отзыва + + + +## Связанные разделы + +- [Чек-лист запуска](/guides/oauth/checklist) +- [Настройка авторизации](/guides/oauth/setup) +- [Получение токена](/guides/oauth/flow) +- [Авторизация](/api/authorization) +- [Боты: Витрина](/guides/bots/showcase) diff --git a/apps/docs/public/guides/oauth/setup.md b/apps/docs/public/guides/oauth/setup.md new file mode 100644 index 000000000..c171d92a1 --- /dev/null +++ b/apps/docs/public/guides/oauth/setup.md @@ -0,0 +1,131 @@ +> Расположение: Авторизация от имени сотрудника +> Краткое содержание: Как включить у бота авторизацию от имени сотрудника: где хранится секрет, адреса возврата, client_id и client_secret, запрашиваемый доступ, страница на витрине, отключение и те же настройки через API +> Это Markdown-версия конкретной страницы. Для контекста за её пределами (правила API, полный перечень методов, авторизация) ОБЯЗАТЕЛЬНО открой [llms.txt](https://dev.pachca.com/llms.txt) перед ответом — это сэкономит токены и предотвратит неполный ответ. + + +# Настройка авторизации + +Авторизация от имени сотрудника и страница бота в витрине настраиваются на вкладке **OAuth** в карточке бота. Менять их могут создатель бота и администраторы пространства, если бот открыт им для редактирования — подробнее в разделе [Настройки бота](/guides/bots/settings#kto-mozhet-redaktirovat-nastroyki-bota). + +> Одной вкладки **OAuth** для авторизации мало: сотрудник должен суметь написать боту, а бот — узнать о сообщении и ответить кнопкой. Всё, что должно быть включено у бота, собрано в [Чек-листе запуска](/guides/oauth/checklist). + + +## Включение + +Откройте бота на вкладке **Управление** в разделе **Интеграции** > **Боты** и перейдите на вкладку **OAuth**. Пока авторизация выключена, на ней одна карточка с кнопкой **Включить**. + +![Вкладка «OAuth» в карточке бота до включения авторизации: карточка с кнопкой «Включить»](/images/oauth/oauth_disabled.webp) + +*Вкладка «OAuth» до включения авторизации* + + +Нажмите **Включить**: откроется окно **Включение авторизации** с тремя полями. + +![Окно «Включение авторизации»: где хранится секрет, Redirect URI и запрашиваемый доступ](/images/oauth/oauth_enable.webp) + +*Окно «Включение авторизации»* + + +**Где хранится секрет** — от этого зависит, как бот обменивает код авторизации на токен: + +- **Серверное, с секретом** — код обменивает ваш сервер, а `client_secret` хранится только на нём. Подходит боту, у которого есть свой бэкенд. +- **Браузер, мобильное, CLI** — секрета нет, код обменивается по PKCE. Подходит приложению, которое работает на устройстве сотрудника и не может спрятать секрет. + +**Адреса возврата** (поле **Redirect URI**) — куда браузер вернёт сотрудника после согласия, каждый адрес с новой строки. Правила: + +- HTTPS обязателен для всех адресов, кроме адресов на этом же компьютере: `localhost` и `127.0.0.1`. +- Адрес в ссылке авторизации должен совпадать с одним из списка точно. Параметры запроса при сравнении не учитываются, а у `localhost` и `127.0.0.1` — ещё и порт: приложению на компьютере сотрудника подойдёт любой свободный. +- Нужен хотя бы один адрес. + +**Запрашиваемый доступ** — права, которые бот попросит у сотрудника на экране согласия. Отметьте только нужные, их можно найти поиском: без выбора авторизацию не включить. Подробнее — в разделе [Запрашиваемый доступ](#zaprashivaemyy-dostup). + +Нажмите **Включить** в окне. У серверного приложения сразу откроется окно **Авторизация включена** с `client_id` и `client_secret`: секрет показывается один раз, скопируйте его кнопкой **Скопировать и закрыть**. + +## Идентификатор и секрет + +![Вкладка «OAuth» с включённой авторизацией: где хранится секрет, client_id, client_secret и адреса возврата](/images/oauth/oauth_tab.webp) + +*Вкладка «OAuth» в карточке бота* + + +После включения на вкладке видны `client_id` и замаскированный `client_secret`. `client_id` не секретный: он входит в ссылку авторизации. + +Если секрет утёк, нажмите значок обновления рядом с `client_secret` и подтвердите **Обновить секрет**. Старое значение перестанет работать сразу, поэтому сначала подготовьте бота к замене. Уже выданные авторизации и полученные токены продолжат работать, новое значение показывается один раз. + +Настройку **Где хранится секрет** можно поменять позже. При переходе на вариант **Серверное, с секретом** `client_secret` показывается один раз, как при включении. + +Адреса возврата меняются в поле **Redirect URI** на той же карточке: поправьте список и нажмите **Сохранить** под полем. + +## Запрашиваемый доступ + +Набор разрешений, которые бот попросит у сотрудника на экране согласия. Его же видно на странице бота в [витрине](/guides/bots/showcase) в блоке **Что бот может запросить**. Набор выбирается при включении, а потом меняется в блоке **Запрашиваемый доступ**: нажмите **Изменить**, отметьте права и сохраните. + +![Блок «Запрашиваемый доступ»: список запрашиваемых разрешений и кнопка «Изменить»](/images/oauth/scopes.webp) + +*Блок «Запрашиваемый доступ»* + + +- Набор один на бота. Параметр `scope` в ссылке авторизации ни на что не влияет: сервер всегда подставляет набор из настроек. +- В набор можно включить только права, доступные самому боту. Права, которые выдаются лишь персональным токенам, запросить нельзя. +- Права каждой авторизации дополнительно ограничены ролью сотрудника: право, недоступное его роли, работать не будет. +- Изменение набора не меняет уже выданные авторизации. Добавленные права сотрудник подтвердит при следующей авторизации, а убранные останутся в выданных токенах, пока сотрудник не отзовёт доступ или авторизацию у бота не отключат. + +Выдавайте минимально необходимое: чем короче список, тем охотнее сотрудники соглашаются. + +## Страница на витрине + +Блок **Страница на витрине** задаёт, как бот выглядит в [витрине](/guides/bots/showcase), и публикует его там. + +![Блок «Страница на витрине»: переключатель «Опубликовать в витрине», описание с кнопкой «Сохранить» и скриншоты](/images/oauth/showcase_page.webp) + +*Блок «Страница на витрине»* + + +- **Опубликовать в витрине** — показывает бота на вкладке **Обзор** в витрине. Пока описание не сохранено, переключатель недоступен, а под ним написано «Сначала добавьте описание». +- **Описание** — чем бот занимается и зачем его подключать. Его видно на карточке бота в витрине и на странице бота. Сохраняется кнопкой **Сохранить** под полем. +- **Скриншоты** — до пяти изображений PNG или JPG с соотношением сторон 16:9 для страницы бота. Кнопка **Добавить** загружает файл, и скриншот сохраняется сразу. Порядок меняется перетаскиванием, а нажатие на скриншот открывает меню с пунктами **Обновить изображение** и **Удалить**. + +Публикация по шагам и то, что видят сотрудники, — в разделе [Витрина](/guides/bots/showcase#kak-opublikovat-bota). + +## Отключение + +Блок **Удаление OAuth-клиента** внизу вкладки отключает авторизацию у бота. + +![Блок «Удаление OAuth-клиента» с кнопкой «Удалить OAuth-клиента»](/images/oauth/oauth_delete.webp) + +*Блок «Удаление OAuth-клиента»* + + +После подтверждения: + +- все авторизации, выданные сотрудниками, отзываются: токены сотрудников у бота перестают работать, и следующий запрос с ними вернёт `401`; +- бот пропадает из витрины, а описание и скриншоты удаляются без возможности вернуть; +- новые авторизации с этим `client_id` не проходят. + +Собственные токены бота продолжают работать. Если авторизацию включить снова, у бота будут прежние `client_id` и `client_secret`, если секрет не обновляли, а в витрину бот вернётся только после новой публикации. + +## Через API + +Те же настройки задаются методом [Редактирование бота](/api/bots/update) или сразу при создании методом [Новый бот](/api/bots/create): + +| На вкладке | В API | +| --- | --- | +| **Включить** и **Где хранится секрет** | `oauth_client.confidential`: `true` — серверное, с секретом, `false` — браузер, мобильное, CLI | +| **Адреса возврата** | `oauth_client.redirect_uris` | +| **Запрашиваемый доступ** | `oauth_client.scopes` | +| **Страница на витрине** | `promo.published`, `promo.description` и `promo.promo_images` | +| **Удаление OAuth-клиента** | `oauth_client: null` | + +Объект `oauth_client` включает авторизацию, если она выключена, и меняет её настройки, если включена. Права для набора берут из [Каталога прав бота](/api/bots/list-scopes). У серверного приложения `client_secret` приходит в ответе один раз: при включении и при переходе на вариант с секретом. Новый секрет выпускает метод [Ротация секрета клиента](/api/bots/rotate-client-secret). + +Включена ли авторизация, показывает поле `oauth_client_enabled` в объекте бота: параметры в `oauth_client` могут прийти и у бота с выключенной авторизацией. + +Скриншоты для витрины загружают так же, как вложения сообщений, методом [Получение подписи, ключа и других параметров](/api/files/uploads), а их `key` передают в `promo.promo_images`. + + +## Связанные разделы + +- [Чек-лист запуска](/guides/oauth/checklist) +- [Получение токена](/guides/oauth/flow) +- [Боты: Витрина](/guides/bots/showcase) +- [Боты: Первый диалог с ботом](/guides/bots/first-contact) diff --git a/apps/docs/public/guides/permissions.md b/apps/docs/public/guides/permissions.md index 8f628daaf..3cd560058 100644 --- a/apps/docs/public/guides/permissions.md +++ b/apps/docs/public/guides/permissions.md @@ -6,7 +6,7 @@ У API почти нет собственной логики доступа. Он работает по тем же правилам, что и интерфейс Пачки: токен видит ровно то, что видит выдавший его сотрудник, и может ровно то же, что может он. Если сотрудник не состоит в закрытом канале, то и его токен не получит оттуда ни сообщений, ни списка участников. -Исключения из правила есть, и все они описаны ниже: гости и мульти-гости не работают с API вовсе, а Владелец пространства может получить перечень всех чатов и всех ботов, состав участников любого чата и выгрузить переписку всего пространства. +Исключения из правила есть, и все они описаны ниже: гости не работают с API вовсе, а Владелец пространства может получить перечень всех чатов и всех ботов, состав участников любого чата и выгрузить переписку всего пространства. [Скоупы](/api/authorization#skoupy) работают поверх этих правил и только сужают доступ. Скоуп открывает методы, но не расширяет видимость: с `chats:read` вы получите те же чаты, что видны в интерфейсе, и ни одним больше. @@ -38,19 +38,33 @@ **Владелец не выделен отдельным значением роли.** В поле `role` у него `admin`, как и у остальных администраторов, и определить Владельца по объекту сотрудника нельзя. Редактировать его чужим токеном нельзя вообще: [Редактирование сотрудника](/api/users/update), [Загрузка аватара сотрудника](/api/users/update-avatar) и [Удаление сотрудника](/api/users/delete) возвращают для Владельца `403`. Своим токеном он меняет собственный профиль, но не может сменить себе роль и не может себя деактивировать. -**Гости и мульти-гости не работают с API.** Создать токен они не могут: для этого нужно право на работу с API, а гостевым ролям оно не выдаётся. Если токен был получен до смены роли, любой запрос вернёт `403`. Ограничение касается только их собственных токенов: сами гости остаются полноценными участниками чатов, куда их добавили, и другие токены видят их как обычных участников. +**Гости не работают с API.** Создать токен, войти в CLI или авторизовать бота гость не может: права на работу с API у этой роли нет. Если токен был получен до смены роли, любой запрос вернёт `403`. Ограничение касается только его собственных токенов: сам гость остаётся полноценным участником чата, куда его пригласили, и другие токены видят его как обычного участника. + +**Мульти-гость работает с API наравне с сотрудником**, но видит через него ровно то же, что в интерфейсе. Он создаёт персональные токены, входит в CLI и авторизует ботов, а создавать и настраивать ботов не может. Подробнее — в разделе [Мульти-гость в API](#multi-gost-v-api). ### Что доступно только Владельцу и Администратору -Большинство скоупов доступно всем ролям, кроме гостевых. Исключения стоит знать заранее, потому что при создании токена такие скоупы просто не появятся в списке: +Большинство скоупов доступно всем ролям, кроме гостя. Исключения стоит знать заранее, потому что при создании токена такие скоупы просто не появятся в списке: - **Только Владелец** — `chat_exports:read`, `chat_exports:write` для [экспорта сообщений](/guides/export), `audit_events:read` для [журнала аудита](/guides/audit-events), `company_chats:read` для метода [Список чатов пространства](/api/chats/list-company) и `company_bots:read` для метода [Список ботов пространства](/api/bots/list-company). Все они доступны на тарифе **Корпорация**. - **Владелец и Администратор** — `users:create`, `users:update`, `users:delete`, `user_status:write`, `user_avatar:write`, `group_tags:write` для [тегов](/guides/tags). - **Только токен бота** — `bot_self:write` и `bot_self:webhook:write` для самоуправления бота. Персональному токену они недоступны при любой роли. -- **Только персональный токен** — `bots:read` и `bots:write` для [управления ботами](/guides/bots/overview) и `drafts:read`, `drafts:write` для черновиков и отложенных сообщений — [Новый черновик](/api/drafts/create) и соседние методы. Роль здесь ни при чём: эти скоупы есть у любого негостевого сотрудника, но токену бота их не выдать, и с ним метод отвечает `403`. То есть бот не может ни завести другого бота, ни написать черновик. +- **Только персональный токен** — `bots:read` и `bots:write` для [управления ботами](/guides/bots/overview) и `drafts:read`, `drafts:write` для черновиков и отложенных сообщений — [Новый черновик](/api/drafts/create) и соседние методы. Скоупы ботов есть у Владельца, Администраторов и Сотрудников, скоупы черновиков — ещё и у мульти-гостя, а токену бота их не выдать вовсе: с ним метод отвечает `403`. То есть бот не может ни завести другого бота, ни написать черновик. Полная таблица скоупов по ролям — в разделе [Авторизация](/api/authorization#dostupnye-skoupy). +### Мульти-гость в API + +Мульти-гость видит в интерфейсе только чаты, куда его добавили, и их участников. API отдаёт ему ровно столько же: + +- **Сотрудники** — [Список сотрудников](/api/users/list), [Информация о сотруднике](/api/users/get) и [Статус сотрудника](/api/users/get-status) отдают его самого, участников общих с ним чатов вместе с ботами и публичных ботов. Треды и архивные чаты общими не считаются, на остальных сотрудников методы отвечают `404`. У чужих сотрудников `list_tags` приходит пустым, а почта и телефон — `null`. +- **Чаты** — [Список чатов](/api/chats/list) с `availability=public` отдаёт только открытые чаты, где он участник. Создать беседу или канал он не может, как и выйти из чата: методы [Новый чат](/api/chats/create) и [Выход из чата](/api/members/leave) отвечают `403`, как и в интерфейсе. +- **Напоминания** — [Список напоминаний](/api/tasks/list) с `chat_ids` отдаёт напоминания только тех чатов, где он участник, и доступных ему тредов: открытые чаты, куда он не вступал, не учитываются. +- **Теги** — [Список тегов](/api/group-tags/list) и [Информация о теге](/api/group-tags/get) отдают только теги активных бесед и каналов, где он участник. [Список сотрудников тега](/api/group-tags/list-users) ему закрыт и отвечает `403`. +- **Упоминания** — `<@id>` в методах [Новое сообщение](/api/messages/create) и [Редактирование сообщения](/api/messages/update) превращается в упоминание только для доступных ему сотрудников, остальные остаются в тексте как есть. +- **Черновики** — черновики и отложенные сообщения доступны ему, как сотруднику: скоупы `drafts:read` и `drafts:write` выдаются и мульти-гостю. +- **Боты** — скоупы `bots:read` и `bots:write` ему не выдаются, поэтому создавать и настраивать ботов он не может. Авторизовать бота и подключить его из [витрины](/guides/bots/showcase) — может. Добавлять ботов в чаты он не может ни при какой настройке бота. + ## Токен и смена роли Права токена сверяются с текущей ролью владельца **при каждом запросе**, а не только в момент создания ключа. Поэтому изменения роли отражаются на токене сразу и пересоздавать его не нужно. @@ -125,7 +139,7 @@ - **Личные сообщения** — доступны только собеседникам. - **Треды** — доступны участникам родительского чата и тем, кого добавили в сам тред. В треде открытого чата — всем сотрудникам пространства. Подробнее — в разделе [Треды](/guides/threads). -Гости и мульти-гости видят только те чаты, в которые их добавили. Открытые чаты пространства им недоступны. +Гости и мульти-гости видят только те чаты, в которые их добавили. Открытые чаты пространства им недоступны. Как это правило действует в API для мульти-гостя — в разделе [Мульти-гость в API](#multi-gost-v-api). ### Что доступно Владельцу пространства сверх остальных @@ -204,6 +218,8 @@ GET /api/shared/v1/company/chats Видимость бота определяется правом на его редактирование, а не участием в чатах. [Список ботов](/api/bots/list) возвращает только тех ботов, которых вам разрешено редактировать: созданных вами и тех, чьи настройки открывают вам доступ. Это правило действует для всех ролей, включая Администратора пространства. +Имя бота, его токены, авторизация от имени сотрудника, страница в витрине и удаление бота доступны только создателю и Администраторам, если настройки бота открывают им доступ. Руководителю чата с ботом эти методы отвечают `403`, даже когда остальные настройки ему открыты. Что из этого доступно вам, показывает поле `permissions` в объекте бота. + ### Инвентаризация ботов пространства Полный перечень ботов пространства отдаёт [Список ботов пространства](/api/bots/list-company): @@ -212,7 +228,7 @@ GET /api/shared/v1/company/chats GET /api/shared/v1/company/bots ``` -Нужен тариф **Корпорация**, скоуп `company_bots:read` и роль Владельца — Администратору метод отвечает `403`. У ботов, недоступных вам для редактирования, приходят только имя и никнейм, а остальные настройки вебхука — `null`: адрес исходящего вебхука, события, команды, скоупы и права на редактирование не раскрываются. Форма объекта при этом та же, что у доступных ботов. Каждый запрос попадает в [журнал аудита](/guides/audit-events) как событие `company_bots_accessed`. +Нужен тариф **Корпорация**, скоуп `company_bots:read` и роль Владельца — Администратору метод отвечает `403`. У ботов, недоступных вам для редактирования, приходят только имя и никнейм, а остальные настройки вебхука и `oauth_client` — `null`: адрес исходящего вебхука, события, команды, скоупы и права на редактирование не раскрываются. Форма объекта при этом та же, что у доступных ботов. Каждый запрос попадает в [журнал аудита](/guides/audit-events) как событие `company_bots_accessed`. Лимит тот же, что у инвентаризации чатов, — около 30 запросов в минуту на токен, он общий на оба метода. diff --git a/apps/docs/public/guides/quickstart.md b/apps/docs/public/guides/quickstart.md index 3916bebca..413c4d034 100644 --- a/apps/docs/public/guides/quickstart.md +++ b/apps/docs/public/guides/quickstart.md @@ -16,10 +16,10 @@ Для работы с API вам нужен токен доступа. Есть два способа его получить: -- **Персональный токен** — в интерфейсе Пачки: **Автоматизации** > **API** (доступно администраторам) -- **Токен бота** — создайте бота в **Автоматизации** > **Интеграции** > **Чат-боты и Вебхуки** или программно методом [Новый бот](/api/bots/create) +- **Персональный токен** — в интерфейсе Пачки: **Интеграции** > **API**. Кому доступна эта страница, решает владелец пространства +- **Токен бота** — создайте бота в **Интеграции** > **Боты** и выпустите токен на вкладке **API** его карточки, или программно методом [Новый бот](/api/bots/create) -> Подробнее о типах токенов и скоупах — в разделе [Авторизация](/api/authorization). +> Подробнее о типах токенов и скоупах — в разделе [Авторизация](/api/authorization). Если бот должен работать с данными сотрудников их правами, используйте [авторизацию от имени сотрудника](/guides/oauth/overview). ### Шаг 2. Проверьте токен diff --git a/apps/docs/public/guides/sdk/csharp.md b/apps/docs/public/guides/sdk/csharp.md index 527e1d0d6..5b6044d11 100644 --- a/apps/docs/public/guides/sdk/csharp.md +++ b/apps/docs/public/guides/sdk/csharp.md @@ -22,7 +22,7 @@ dotnet add package Pachca.Sdk ### Шаг 2. Создание клиента -Получите API-токен в интерфейсе Пачки: **Настройки** > **Автоматизации** > **API** (подробнее — [Авторизация](/api/authorization)). +Получите API-токен в интерфейсе Пачки: **Интеграции** > **API** (подробнее — [Авторизация](/api/authorization)). ```csharp using Pachca.Sdk; @@ -75,6 +75,7 @@ using var client = new PachcaClient("YOUR_TOKEN", "https://custom-api.example.co | `client.Chats.UpdateChatAsync()` | [Редактирование чата](/api/chats/update) | | `client.Chats.ArchiveChatAsync()` | [Архивация чата](/api/chats/archive) | | `client.Chats.UnarchiveChatAsync()` | [Разархивация чата](/api/chats/unarchive) | +| `client.Chats.MarkChatUnreadAsync()` | [Отметка чата непрочитанным](/api/chats/mark-unread) | | `client.Profile.GetProfileAsync()` | [Свой профиль](/api/profile/get) | | `client.Profile.GetStatusAsync()` | [Свой статус](/api/profile/get-status) | | `client.Profile.UpdateProfileAvatarAsync()` | [Загрузка своего аватара](/api/profile/update-avatar) | @@ -138,14 +139,21 @@ using var client = new PachcaClient("YOUR_TOKEN", "https://custom-api.example.co | `client.Bots.CreateBotAsync()` | [Новый бот](/api/bots/create) | | `client.Bots.SelfRecreateBotTokenAsync()` | [Ротация собственного токена бота](/api/bots/recreate-token-self) | | `client.Bots.RecreateBotTokenAsync()` | [Ротация токена бота](/api/bots/recreate-token) | +| `client.Bots.RotateBotClientSecretAsync()` | [Ротация секрета клиента](/api/bots/rotate-client-secret) | +| `client.Bots.CreateBotTokenAsync()` | [Новый токен бота](/api/bots/create-token) | +| `client.Bots.ReissueBotTokenAsync()` | [Перевыпуск токена бота](/api/bots/reissue-token) | | `client.Bots.ListBotsAsync()` | [Список ботов](/api/bots/list) | | `client.Bots.GetBotAsync()` | [Информация о боте](/api/bots/get) | | `client.Bots.ListCompanyBotsAsync()` | [Список ботов пространства](/api/bots/list-company) | | `client.Bots.GetWebhookEventsAsync()` | [История событий](/api/bots/list-events) | +| `client.Bots.GetBotScopesAsync()` | [Каталог прав бота](/api/bots/list-scopes) | +| `client.Bots.ListBotTokensAsync()` | [Список токенов бота](/api/bots/list-tokens) | | `client.Bots.SelfUpdateBotWebhookAsync()` | [Саморегистрация вебхука бота](/api/bots/update-webhook) | | `client.Bots.UpdateBotAsync()` | [Редактирование бота](/api/bots/update) | +| `client.Bots.UpdateBotTokenAsync()` | [Изменение токена бота](/api/bots/update-token) | | `client.Bots.DeleteBotAsync()` | [Удаление бота](/api/bots/delete) | | `client.Bots.DeleteWebhookEventAsync()` | [Удаление события](/api/bots/remove-event) | +| `client.Bots.DeleteBotTokenAsync()` | [Удаление токена бота](/api/bots/delete-token) | | `client.Security.GetAuditEventsAsync()` | [Журнал аудита событий](/api/security/list) | | `client.CustomProperties.ListPropertiesAsync()` | [Список дополнительных полей](/api/custom-properties/list) | | `client.Files.UploadFileAsync()` | [Загрузка файла](/api/files/direct-url) | diff --git a/apps/docs/public/guides/sdk/go.md b/apps/docs/public/guides/sdk/go.md index f59e325b4..bf3976b04 100644 --- a/apps/docs/public/guides/sdk/go.md +++ b/apps/docs/public/guides/sdk/go.md @@ -22,7 +22,7 @@ go get github.com/pachca/openapi/sdk/go/generated ### Шаг 2. Создание клиента -Получите API-токен в интерфейсе Пачки: **Настройки** > **Автоматизации** > **API** (подробнее — [Авторизация](/api/authorization)). +Получите API-токен в интерфейсе Пачки: **Интеграции** > **API** (подробнее — [Авторизация](/api/authorization)). ```go import pachca "github.com/pachca/openapi/sdk/go/generated" @@ -82,6 +82,7 @@ user, err := client.Profile.GetProfile(ctx) | `client.Chats.UpdateChat()` | [Редактирование чата](/api/chats/update) | | `client.Chats.ArchiveChat()` | [Архивация чата](/api/chats/archive) | | `client.Chats.UnarchiveChat()` | [Разархивация чата](/api/chats/unarchive) | +| `client.Chats.MarkChatUnread()` | [Отметка чата непрочитанным](/api/chats/mark-unread) | | `client.Profile.GetProfile()` | [Свой профиль](/api/profile/get) | | `client.Profile.GetStatus()` | [Свой статус](/api/profile/get-status) | | `client.Profile.UpdateProfileAvatar()` | [Загрузка своего аватара](/api/profile/update-avatar) | @@ -145,14 +146,21 @@ user, err := client.Profile.GetProfile(ctx) | `client.Bots.CreateBot()` | [Новый бот](/api/bots/create) | | `client.Bots.SelfRecreateBotToken()` | [Ротация собственного токена бота](/api/bots/recreate-token-self) | | `client.Bots.RecreateBotToken()` | [Ротация токена бота](/api/bots/recreate-token) | +| `client.Bots.RotateBotClientSecret()` | [Ротация секрета клиента](/api/bots/rotate-client-secret) | +| `client.Bots.CreateBotToken()` | [Новый токен бота](/api/bots/create-token) | +| `client.Bots.ReissueBotToken()` | [Перевыпуск токена бота](/api/bots/reissue-token) | | `client.Bots.ListBots()` | [Список ботов](/api/bots/list) | | `client.Bots.GetBot()` | [Информация о боте](/api/bots/get) | | `client.Bots.ListCompanyBots()` | [Список ботов пространства](/api/bots/list-company) | | `client.Bots.GetWebhookEvents()` | [История событий](/api/bots/list-events) | +| `client.Bots.GetBotScopes()` | [Каталог прав бота](/api/bots/list-scopes) | +| `client.Bots.ListBotTokens()` | [Список токенов бота](/api/bots/list-tokens) | | `client.Bots.SelfUpdateBotWebhook()` | [Саморегистрация вебхука бота](/api/bots/update-webhook) | | `client.Bots.UpdateBot()` | [Редактирование бота](/api/bots/update) | +| `client.Bots.UpdateBotToken()` | [Изменение токена бота](/api/bots/update-token) | | `client.Bots.DeleteBot()` | [Удаление бота](/api/bots/delete) | | `client.Bots.DeleteWebhookEvent()` | [Удаление события](/api/bots/remove-event) | +| `client.Bots.DeleteBotToken()` | [Удаление токена бота](/api/bots/delete-token) | | `client.Security.GetAuditEvents()` | [Журнал аудита событий](/api/security/list) | | `client.CustomProperties.ListProperties()` | [Список дополнительных полей](/api/custom-properties/list) | | `client.Files.UploadFile()` | [Загрузка файла](/api/files/direct-url) | diff --git a/apps/docs/public/guides/sdk/kotlin.md b/apps/docs/public/guides/sdk/kotlin.md index 8975f8420..33ebdb662 100644 --- a/apps/docs/public/guides/sdk/kotlin.md +++ b/apps/docs/public/guides/sdk/kotlin.md @@ -26,7 +26,7 @@ dependencies { ### Шаг 2. Создание клиента -Получите API-токен в интерфейсе Пачки: **Настройки** > **Автоматизации** > **API** (подробнее — [Авторизация](/api/authorization)). +Получите API-токен в интерфейсе Пачки: **Интеграции** > **API** (подробнее — [Авторизация](/api/authorization)). ```kotlin import com.pachca.sdk.PachcaClient @@ -90,6 +90,7 @@ client.close() | `client.chats.updateChat()` | [Редактирование чата](/api/chats/update) | | `client.chats.archiveChat()` | [Архивация чата](/api/chats/archive) | | `client.chats.unarchiveChat()` | [Разархивация чата](/api/chats/unarchive) | +| `client.chats.markChatUnread()` | [Отметка чата непрочитанным](/api/chats/mark-unread) | | `client.profile.getProfile()` | [Свой профиль](/api/profile/get) | | `client.profile.getStatus()` | [Свой статус](/api/profile/get-status) | | `client.profile.updateProfileAvatar()` | [Загрузка своего аватара](/api/profile/update-avatar) | @@ -153,14 +154,21 @@ client.close() | `client.bots.createBot()` | [Новый бот](/api/bots/create) | | `client.bots.selfRecreateBotToken()` | [Ротация собственного токена бота](/api/bots/recreate-token-self) | | `client.bots.recreateBotToken()` | [Ротация токена бота](/api/bots/recreate-token) | +| `client.bots.rotateBotClientSecret()` | [Ротация секрета клиента](/api/bots/rotate-client-secret) | +| `client.bots.createBotToken()` | [Новый токен бота](/api/bots/create-token) | +| `client.bots.reissueBotToken()` | [Перевыпуск токена бота](/api/bots/reissue-token) | | `client.bots.listBots()` | [Список ботов](/api/bots/list) | | `client.bots.getBot()` | [Информация о боте](/api/bots/get) | | `client.bots.listCompanyBots()` | [Список ботов пространства](/api/bots/list-company) | | `client.bots.getWebhookEvents()` | [История событий](/api/bots/list-events) | +| `client.bots.getBotScopes()` | [Каталог прав бота](/api/bots/list-scopes) | +| `client.bots.listBotTokens()` | [Список токенов бота](/api/bots/list-tokens) | | `client.bots.selfUpdateBotWebhook()` | [Саморегистрация вебхука бота](/api/bots/update-webhook) | | `client.bots.updateBot()` | [Редактирование бота](/api/bots/update) | +| `client.bots.updateBotToken()` | [Изменение токена бота](/api/bots/update-token) | | `client.bots.deleteBot()` | [Удаление бота](/api/bots/delete) | | `client.bots.deleteWebhookEvent()` | [Удаление события](/api/bots/remove-event) | +| `client.bots.deleteBotToken()` | [Удаление токена бота](/api/bots/delete-token) | | `client.security.getAuditEvents()` | [Журнал аудита событий](/api/security/list) | | `client.customProperties.listProperties()` | [Список дополнительных полей](/api/custom-properties/list) | | `client.files.uploadFile()` | [Загрузка файла](/api/files/direct-url) | diff --git a/apps/docs/public/guides/sdk/python.md b/apps/docs/public/guides/sdk/python.md index 8bb7bf093..24ebb4d91 100644 --- a/apps/docs/public/guides/sdk/python.md +++ b/apps/docs/public/guides/sdk/python.md @@ -22,7 +22,7 @@ pip install pachca-sdk ### Шаг 2. Создание клиента -Получите API-токен в интерфейсе Пачки: **Настройки** > **Автоматизации** > **API** (подробнее — [Авторизация](/api/authorization)). +Получите API-токен в интерфейсе Пачки: **Интеграции** > **API** (подробнее — [Авторизация](/api/authorization)). ```python from pachca.client import PachcaClient @@ -80,6 +80,7 @@ await client.close() | `client.chats.update_chat()` | [Редактирование чата](/api/chats/update) | | `client.chats.archive_chat()` | [Архивация чата](/api/chats/archive) | | `client.chats.unarchive_chat()` | [Разархивация чата](/api/chats/unarchive) | +| `client.chats.mark_chat_unread()` | [Отметка чата непрочитанным](/api/chats/mark-unread) | | `client.profile.get_profile()` | [Свой профиль](/api/profile/get) | | `client.profile.get_status()` | [Свой статус](/api/profile/get-status) | | `client.profile.update_profile_avatar()` | [Загрузка своего аватара](/api/profile/update-avatar) | @@ -143,14 +144,21 @@ await client.close() | `client.bots.create_bot()` | [Новый бот](/api/bots/create) | | `client.bots.self_recreate_bot_token()` | [Ротация собственного токена бота](/api/bots/recreate-token-self) | | `client.bots.recreate_bot_token()` | [Ротация токена бота](/api/bots/recreate-token) | +| `client.bots.rotate_bot_client_secret()` | [Ротация секрета клиента](/api/bots/rotate-client-secret) | +| `client.bots.create_bot_token()` | [Новый токен бота](/api/bots/create-token) | +| `client.bots.reissue_bot_token()` | [Перевыпуск токена бота](/api/bots/reissue-token) | | `client.bots.list_bots()` | [Список ботов](/api/bots/list) | | `client.bots.get_bot()` | [Информация о боте](/api/bots/get) | | `client.bots.list_company_bots()` | [Список ботов пространства](/api/bots/list-company) | | `client.bots.get_webhook_events()` | [История событий](/api/bots/list-events) | +| `client.bots.get_bot_scopes()` | [Каталог прав бота](/api/bots/list-scopes) | +| `client.bots.list_bot_tokens()` | [Список токенов бота](/api/bots/list-tokens) | | `client.bots.self_update_bot_webhook()` | [Саморегистрация вебхука бота](/api/bots/update-webhook) | | `client.bots.update_bot()` | [Редактирование бота](/api/bots/update) | +| `client.bots.update_bot_token()` | [Изменение токена бота](/api/bots/update-token) | | `client.bots.delete_bot()` | [Удаление бота](/api/bots/delete) | | `client.bots.delete_webhook_event()` | [Удаление события](/api/bots/remove-event) | +| `client.bots.delete_bot_token()` | [Удаление токена бота](/api/bots/delete-token) | | `client.security.get_audit_events()` | [Журнал аудита событий](/api/security/list) | | `client.custom_properties.list_properties()` | [Список дополнительных полей](/api/custom-properties/list) | | `client.files.upload_file()` | [Загрузка файла](/api/files/direct-url) | diff --git a/apps/docs/public/guides/sdk/swift.md b/apps/docs/public/guides/sdk/swift.md index 78a15c0ee..2bec52c91 100644 --- a/apps/docs/public/guides/sdk/swift.md +++ b/apps/docs/public/guides/sdk/swift.md @@ -28,7 +28,7 @@ dependencies: [ ### Шаг 2. Создание клиента -Получите API-токен в интерфейсе Пачки: **Настройки** > **Автоматизации** > **API** (подробнее — [Авторизация](/api/authorization)). +Получите API-токен в интерфейсе Пачки: **Интеграции** > **API** (подробнее — [Авторизация](/api/authorization)). ```swift import PachcaSDK @@ -81,6 +81,7 @@ let client = PachcaClient(token: "YOUR_TOKEN", baseURL: "https://custom-api.exam | `client.chats.updateChat()` | [Редактирование чата](/api/chats/update) | | `client.chats.archiveChat()` | [Архивация чата](/api/chats/archive) | | `client.chats.unarchiveChat()` | [Разархивация чата](/api/chats/unarchive) | +| `client.chats.markChatUnread()` | [Отметка чата непрочитанным](/api/chats/mark-unread) | | `client.profile.getProfile()` | [Свой профиль](/api/profile/get) | | `client.profile.getStatus()` | [Свой статус](/api/profile/get-status) | | `client.profile.updateProfileAvatar()` | [Загрузка своего аватара](/api/profile/update-avatar) | @@ -144,14 +145,21 @@ let client = PachcaClient(token: "YOUR_TOKEN", baseURL: "https://custom-api.exam | `client.bots.createBot()` | [Новый бот](/api/bots/create) | | `client.bots.selfRecreateBotToken()` | [Ротация собственного токена бота](/api/bots/recreate-token-self) | | `client.bots.recreateBotToken()` | [Ротация токена бота](/api/bots/recreate-token) | +| `client.bots.rotateBotClientSecret()` | [Ротация секрета клиента](/api/bots/rotate-client-secret) | +| `client.bots.createBotToken()` | [Новый токен бота](/api/bots/create-token) | +| `client.bots.reissueBotToken()` | [Перевыпуск токена бота](/api/bots/reissue-token) | | `client.bots.listBots()` | [Список ботов](/api/bots/list) | | `client.bots.getBot()` | [Информация о боте](/api/bots/get) | | `client.bots.listCompanyBots()` | [Список ботов пространства](/api/bots/list-company) | | `client.bots.getWebhookEvents()` | [История событий](/api/bots/list-events) | +| `client.bots.getBotScopes()` | [Каталог прав бота](/api/bots/list-scopes) | +| `client.bots.listBotTokens()` | [Список токенов бота](/api/bots/list-tokens) | | `client.bots.selfUpdateBotWebhook()` | [Саморегистрация вебхука бота](/api/bots/update-webhook) | | `client.bots.updateBot()` | [Редактирование бота](/api/bots/update) | +| `client.bots.updateBotToken()` | [Изменение токена бота](/api/bots/update-token) | | `client.bots.deleteBot()` | [Удаление бота](/api/bots/delete) | | `client.bots.deleteWebhookEvent()` | [Удаление события](/api/bots/remove-event) | +| `client.bots.deleteBotToken()` | [Удаление токена бота](/api/bots/delete-token) | | `client.security.getAuditEvents()` | [Журнал аудита событий](/api/security/list) | | `client.customProperties.listProperties()` | [Список дополнительных полей](/api/custom-properties/list) | | `client.files.uploadFile()` | [Загрузка файла](/api/files/direct-url) | diff --git a/apps/docs/public/guides/sdk/typescript.md b/apps/docs/public/guides/sdk/typescript.md index 0ef201a02..d14806013 100644 --- a/apps/docs/public/guides/sdk/typescript.md +++ b/apps/docs/public/guides/sdk/typescript.md @@ -22,7 +22,7 @@ npm install @pachca/sdk ### Шаг 2. Создание клиента -Получите API-токен в интерфейсе Пачки: **Настройки** > **Автоматизации** > **API** (подробнее — [Авторизация](/api/authorization)). +Получите API-токен в интерфейсе Пачки: **Интеграции** > **API** (подробнее — [Авторизация](/api/authorization)). ```typescript import { PachcaClient } from "@pachca/sdk" @@ -73,6 +73,7 @@ const client = new PachcaClient("YOUR_TOKEN", "https://custom-api.example.com/ap | `client.chats.updateChat()` | [Редактирование чата](/api/chats/update) | | `client.chats.archiveChat()` | [Архивация чата](/api/chats/archive) | | `client.chats.unarchiveChat()` | [Разархивация чата](/api/chats/unarchive) | +| `client.chats.markChatUnread()` | [Отметка чата непрочитанным](/api/chats/mark-unread) | | `client.profile.getProfile()` | [Свой профиль](/api/profile/get) | | `client.profile.getStatus()` | [Свой статус](/api/profile/get-status) | | `client.profile.updateProfileAvatar()` | [Загрузка своего аватара](/api/profile/update-avatar) | @@ -136,14 +137,21 @@ const client = new PachcaClient("YOUR_TOKEN", "https://custom-api.example.com/ap | `client.bots.createBot()` | [Новый бот](/api/bots/create) | | `client.bots.selfRecreateBotToken()` | [Ротация собственного токена бота](/api/bots/recreate-token-self) | | `client.bots.recreateBotToken()` | [Ротация токена бота](/api/bots/recreate-token) | +| `client.bots.rotateBotClientSecret()` | [Ротация секрета клиента](/api/bots/rotate-client-secret) | +| `client.bots.createBotToken()` | [Новый токен бота](/api/bots/create-token) | +| `client.bots.reissueBotToken()` | [Перевыпуск токена бота](/api/bots/reissue-token) | | `client.bots.listBots()` | [Список ботов](/api/bots/list) | | `client.bots.getBot()` | [Информация о боте](/api/bots/get) | | `client.bots.listCompanyBots()` | [Список ботов пространства](/api/bots/list-company) | | `client.bots.getWebhookEvents()` | [История событий](/api/bots/list-events) | +| `client.bots.getBotScopes()` | [Каталог прав бота](/api/bots/list-scopes) | +| `client.bots.listBotTokens()` | [Список токенов бота](/api/bots/list-tokens) | | `client.bots.selfUpdateBotWebhook()` | [Саморегистрация вебхука бота](/api/bots/update-webhook) | | `client.bots.updateBot()` | [Редактирование бота](/api/bots/update) | +| `client.bots.updateBotToken()` | [Изменение токена бота](/api/bots/update-token) | | `client.bots.deleteBot()` | [Удаление бота](/api/bots/delete) | | `client.bots.deleteWebhookEvent()` | [Удаление события](/api/bots/remove-event) | +| `client.bots.deleteBotToken()` | [Удаление токена бота](/api/bots/delete-token) | | `client.security.getAuditEvents()` | [Журнал аудита событий](/api/security/list) | | `client.customProperties.listProperties()` | [Список дополнительных полей](/api/custom-properties/list) | | `client.files.uploadFile()` | [Загрузка файла](/api/files/direct-url) | diff --git a/apps/docs/public/guides/webhook/events.md b/apps/docs/public/guides/webhook/events.md index 93d781871..cc172fd47 100644 --- a/apps/docs/public/guides/webhook/events.md +++ b/apps/docs/public/guides/webhook/events.md @@ -5,28 +5,28 @@ # Настройка и типы событий -Все настройки исходящего вебхука собраны на вкладке **Исходящий Webhook** в настройках бота. +Все настройки исходящего вебхука собраны на вкладке **Исходящий вебхук** в карточке бота. Пока вебхук выключен, на вкладке одна кнопка **Включить**: она спрашивает URL вашего сервера, а остальные настройки появляются после включения. -![Вкладка Исходящий Webhook в настройках бота](/images/outgoing-webhook.png) +![Вкладка «Исходящий вебхук» в карточке бота: адрес, подпись, история, свои сообщения и список событий](/images/outgoing-webhook.webp) -*Вкладка Исходящий Webhook в настройках бота* +*Вкладка «Исходящий вебхук» в карточке бота* ## Общие настройки - **Webhook URL** — адрес, на который Пачка отправляет события -- **Signing secret** — секрет для проверки подписи запроса. Подробнее — в разделе [Безопасность и обработчик](/guides/webhook/handler). +- **Signing secret** — ключ HMAC-SHA256 для проверки подписи из заголовка `Pachca-Signature`. Появляется после включения вебхука. Подробнее — в разделе [Безопасность и обработчик](/guides/webhook/handler). - **Сохранять историю событий** — бот сохраняет все исходящие вебхуки в очередь, и их можно получить через API. Поле `events_history_enabled`. Подробнее — в разделе [Поллинг](/guides/webhook/polling). - **Игнорировать свои сообщения** — не получать вебхуки о сообщениях, отправленных самим ботом. Поле `ignore_self_messages`. Предотвращает зацикливание, когда бот реагирует на собственные сообщения. Нажатия кнопок обрабатываются всегда, вне зависимости от этой настройки. -Обе настройки задаются не только в интерфейсе, но и через API — методами [Новый бот](/api/bots/create) и [Редактирование бота](/api/bots/update), и возвращаются в объекте бота. +История событий и «Игнорировать свои сообщения» задаются не только в интерфейсе, но и через API — методами [Новый бот](/api/bots/create) и [Редактирование бота](/api/bots/update), и возвращаются в объекте бота. **Webhook URL** можно задать не только здесь, но и программно — это удобно для автоматизации (например, [n8n](/guides/n8n/trigger) регистрирует свой адрес сам): -- метод [Редактирование бота](/api/bots/update) — токеном администратора (скоуп `bots:write` и доступ редактора к боту) можно прописать `URL` любому боту; -- метод [Саморегистрация вебхука бота](/api/bots/update-webhook) — бот прописывает свой `URL` собственным токеном (скоуп `bot_self:webhook:write`), без участия администратора. +- метод [Редактирование бота](/api/bots/update) — персональным токеном со скоупом `bots:write` можно прописать `URL` боту, настройки которого вам доступны; +- метод [Саморегистрация вебхука бота](/api/bots/update-webhook) — бот прописывает свой `URL` собственным токеном (скоуп `bot_self:webhook:write`), без участия администратора. Боту с включённым [разворачиванием ссылок](/guides/link-previews) адрес меняет только администратор или владелец, и саморегистрация вернёт ошибку. -Чтобы отключить вебхук, передайте пустую строку в `outgoing_url`. +Чтобы отключить вебхук, передайте пустую строку в `outgoing_url`. В интерфейсе для этого есть кнопка **Удалить вебхук** внизу вкладки: события перестают доставляться, а настройки и подпись удаляются, и для работы вебхук придётся включить заново. ## Сообщения @@ -37,10 +37,13 @@ Для новых сообщений доступны два режима отслеживания: -- **О любых сообщениях** — все новые сообщения, включая треды -- **Сообщения, начинающиеся с команд** — только сообщения, начинающиеся с указанных команд (например, `/help`, `/deploy`). Команды начинаются с `/` и пишутся на английском. Полезно, если вы не хотите получать поток событий, а вам нужно вызвать сценарий только по требованию пользователя. +- **Любые сообщения** — все новые сообщения, включая треды +- **Начинающиеся с команд** — только сообщения, начинающиеся с указанных команд (например, `/help`, `/deploy`). Команды перечисляются через запятую, начинаются с `/` и пишутся на английском. Полезно, если вы не хотите получать поток событий, а вам нужно вызвать сценарий только по требованию пользователя. -> Режим «О любых сообщениях» присылает событие и для сообщений без текста, например только с файлом или картинкой. Режим «Сообщения, начинающиеся с команд» для них не сработает, потому что команда определяется по первому слову текста, которого в таком сообщении нет. +> Режим «Любые сообщения» присылает событие и для сообщений без текста, например только с файлом или картинкой. Режим «Начинающиеся с команд» для них не сработает, потому что команда определяется по первому слову текста, которого в таком сообщении нет. + + +> **Внимание:** Новый бот стоит в режиме «Начинающиеся с команд» с пустым списком команд и о новых сообщениях не узнаёт. Так у ботов, созданных и в интерфейсе, и методом [Новый бот](/api/bots/create) без `trigger_on`. Выберите режим «Любые сообщения» или перечислите команды. Подробнее — в разделе [Первый диалог с ботом](/guides/bots/first-contact). #### MessageWebhookPayload @@ -144,6 +147,9 @@ Вебхук отправляется при изменении состава участников чатов, где состоит бот, и в тредах этих чатов. +> Когда сотрудник впервые открывает личную переписку с ботом, события нет — ни об изменении участников, ни о новом чате. Бот узнаёт о сотруднике из его первого сообщения. + + #### ChatMemberWebhookPayload - `type: string` (required) — Тип объекта. Пример: `"chat_member"` @@ -180,7 +186,7 @@ ## Отправка ссылок -Вебхук отправляется при появлении ссылки на один из доменов, указанных в настройках Unfurl-бота. Для получения таких событий необходимо создать специального Unfurl-бота. После получения вы можете воспользоваться методом [Unfurl (разворачивание ссылок)](/api/messages/unfurl) и создать предпросмотр ссылки в сообщении. Подробнее — в разделе [Разворачивание ссылок](/guides/link-previews). +Вебхук отправляется при появлении в сообщении ссылки на один из доменов бота — из любого чата пространства, добавлять бота в чаты не нужно. Событие **Отправка ссылок в сообщении (unfurl)** и его домены (до 5, через запятую) включает только администратор или владелец пространства. После получения вы можете воспользоваться методом [Unfurl (разворачивание ссылок)](/api/messages/unfurl) и создать предпросмотр ссылки в сообщении. Подробнее — в разделе [Разворачивание ссылок](/guides/link-previews). #### LinkSharedWebhookPayload @@ -195,6 +201,12 @@ - `domain: string` (required) — Домен ссылки. Пример: `"example.com"` - `skip: boolean` (required) — Признак того, что автор сообщения скрыл превью для этой ссылки. Если `true` — бот не должен создавать превью. Пример: `false` - `user_id: integer, int32` (required) — Идентификатор отправителя сообщения. Пример: `2345` +- `entity_type: string` (required) — Тип сущности, к которой относится сообщение со ссылкой + Значения: `discussion` — Беседа или канал, `thread` — Тред, `user` — Пользователь +- `entity_id: integer, int32` (required, nullable) — Идентификатор сущности: беседы или канала, треда. В личной переписке `null`: бот в ней не участвует, и собеседника ему не раскрывают. Пример: `23438` +- `thread: object` (required) — Тред, в котором отправлено сообщение со ссылкой. `null`, если сообщение отправлено не в треде. + - `message_id: integer, int32` (required, nullable) — Идентификатор сообщения, к которому был создан тред. `null` у треда без сообщения-родителя — такие создаёт [Новый самостоятельный тред](/api/threads/create). Пример: `12345` + - `message_chat_id: integer, int32` (required, nullable) — Идентификатор чата сообщения, к которому был создан тред. `null` у треда без сообщения-родителя. Пример: `67890` - `created_at: date-time` (required) — Дата и время создания сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2024-09-18T19:53:14.000Z"` - `webhook_timestamp: integer, int32` (required) — Дата и время отправки вебхука (UTC+0) в формате UNIX. Пример: `1726685594` diff --git a/apps/docs/public/guides/webhook/handler.md b/apps/docs/public/guides/webhook/handler.md index 496a5276e..cceee3636 100644 --- a/apps/docs/public/guides/webhook/handler.md +++ b/apps/docs/public/guides/webhook/handler.md @@ -39,10 +39,10 @@ content-length: 358 ### Шаг 1. Проверьте подпись -Для проверки подписи необходимо вычислить её самостоятельно, используя секрет вебхука `Signing secret`, который доступен в настройках бота во вкладке «Исходящий webhook». Рекомендуется использовать сырой (raw) контент тела запроса для вычисления хеша, так как при JSON-парсинге содержимое может быть изменено. +Для проверки подписи необходимо вычислить её самостоятельно, используя секрет вебхука `Signing secret` с вкладки «Исходящий вебхук» в карточке бота. Рекомендуется использовать сырой (raw) контент тела запроса для вычисления хеша, так как при JSON-парсинге содержимое может быть изменено. ```javascript title="Вычисление и сравнение подписи" -// WEBHOOK_SECRET - значение поля Signing secret во вкладке «Исходящий webhook» в настройках бота +// WEBHOOK_SECRET - значение поля Signing secret на вкладке «Исходящий вебхук» в карточке бота const signature = crypto.createHmac("sha256", WEBHOOK_SECRET).update(rawBody).digest("hex"); if (signature !== request.headers['pachca-signature']) { @@ -68,7 +68,7 @@ IP-адрес Пачки: `37.200.70.177` import express from "express" import crypto from "crypto" -const SIGNING_SECRET = "your_signing_secret" // Из настроек бота → Исходящий Webhook → Signing Secret +const SIGNING_SECRET = "your_signing_secret" // Карточка бота → Исходящий вебхук → Signing secret const app = express() // Важно: используем express.raw для получения сырого тела запроса (для корректной проверки HMAC) @@ -122,7 +122,7 @@ app.listen(3000) import hmac, hashlib, json, time from flask import Flask, request, abort -SIGNING_SECRET = "your_signing_secret" # Из настроек бота → Исходящий Webhook → Signing Secret +SIGNING_SECRET = "your_signing_secret" # Карточка бота → Исходящий вебхук → Signing secret app = Flask(__name__) @app.route("/webhook", methods=["POST"]) diff --git a/apps/docs/public/guides/webhook/overview.md b/apps/docs/public/guides/webhook/overview.md index 6ac162d57..a8682c392 100644 --- a/apps/docs/public/guides/webhook/overview.md +++ b/apps/docs/public/guides/webhook/overview.md @@ -1,5 +1,5 @@ > Расположение: Исходящие вебхуки -> Краткое содержание: Исходящие вебхуки в Пачке: что это, как настроить и какие настройки доступны на вкладке Исходящий Webhook в боте +> Краткое содержание: Исходящие вебхуки в Пачке: что это, как включить и какие настройки доступны на вкладке «Исходящий вебхук» в карточке бота > Это Markdown-версия конкретной страницы. Для контекста за её пределами (правила API, полный перечень методов, авторизация) ОБЯЗАТЕЛЬНО открой [llms.txt](https://dev.pachca.com/llms.txt) перед ответом — это сэкономит токены и предотвратит неполный ответ. @@ -18,12 +18,12 @@ ### Шаг 1. Создайте бота -Перейдите в **Автоматизации** > **Интеграции** > **Чат-боты и Вебхуки** и создайте бота. Подробнее — в разделе [Боты](/guides/bots/overview). +Откройте **Интеграции** > **Боты** и нажмите **Создать бота**. Подробнее — в разделе [Боты](/guides/bots/overview). - ### Шаг 2. Укажите Webhook URL + ### Шаг 2. Включите вебхук -В настройках бота перейдите на вкладку **Исходящий Webhook** и укажите URL вашего сервера, на который Пачка будет отправлять события. +В карточке бота на вкладке **Исходящий вебхук** нажмите **Включить** и укажите URL вашего сервера, на который Пачка будет отправлять события. ### Шаг 3. Выберите типы событий @@ -33,7 +33,7 @@ ### Шаг 4. Добавьте бота в чаты -Большинство событий приходят только из чатов, в которых состоит бот. Глобальные события (например, изменение состава участников пространства) не требуют добавления в чат. +Большинство событий приходят только из чатов, в которых состоит бот. Глобальные события — изменение участников пространства и ссылки на домены бота — не требуют добавления в чат. ## Настройка через API @@ -48,7 +48,7 @@ ## Разделы -- [Настройка и типы событий](/guides/webhook/events) — Все настройки на вкладке Исходящий Webhook и список доступных типов событий с payload'ом +- [Настройка и типы событий](/guides/webhook/events) — Все настройки на вкладке «Исходящий вебхук» и список доступных типов событий с payload'ом - [Безопасность и обработчик](/guides/webhook/handler) — Проверка подписи, защита от replay-атак, примеры обработчика на TypeScript и Python - [Поллинг](/guides/webhook/polling) — Получение событий через API, когда принимать входящие HTTP-запросы нельзя diff --git a/apps/docs/public/guides/webhook/polling.md b/apps/docs/public/guides/webhook/polling.md index 606eb1f47..7a1b98633 100644 --- a/apps/docs/public/guides/webhook/polling.md +++ b/apps/docs/public/guides/webhook/polling.md @@ -7,7 +7,7 @@ Если у вас нет возможности принимать входящие HTTP-запросы (локальная разработка, жёсткие firewall-правила), используйте **поллинг** — получение событий через API или готовые helpers в SDK. -Включите настройку **Сохранять историю событий** на вкладке **Исходящий Webhook** в настройках бота (подробнее — в разделе [Настройка и типы событий](/guides/webhook/events#obschie-nastroyki)), чтобы получать события через метод [История событий](/api/bots/list-events). Без неё метод отдаёт пустой список. Включить настройку можно и программно — полем `events_history_enabled` в методах [Новый бот](/api/bots/create) и [Редактирование бота](/api/bots/update). +Включите настройку **Сохранять историю событий** на вкладке **Исходящий вебхук** в карточке бота (подробнее — в разделе [Настройка и типы событий](/guides/webhook/events#obschie-nastroyki)), чтобы получать события через метод [История событий](/api/bots/list-events). Без неё метод отдаёт пустой список. В интерфейсе настройка появляется только после включения вебхука, то есть когда указан URL. Если принимать запросы нельзя совсем, включите историю программно — полем `events_history_enabled` в методах [Новый бот](/api/bots/create) и [Редактирование бота](/api/bots/update): адрес вебхука для этого не нужен. > SDK helpers по умолчанию начинают читать только события, созданные после запуска воркера, и дедуплицируют уже обработанные delivery ID в памяти. diff --git a/apps/docs/public/guides/workflows.md b/apps/docs/public/guides/workflows.md index 1378c2308..8601a5a97 100644 --- a/apps/docs/public/guides/workflows.md +++ b/apps/docs/public/guides/workflows.md @@ -318,7 +318,7 @@ 2. Сохрани `access_token` из ответа — он возвращается единственный раз. Повторно его не показывают, можно только перевыпустить командой `pachca bots recreate-token ` 3. В ответе также придёт `id` бота (его `user_id`) — он нужен для дальнейших вызовов, например чтобы добавить бота в чат -> Создавать ботов можно только пользовательским токеном — токеном бота нельзя. `access_token` отдаётся один раз при создании, дальше его можно посмотреть и скопировать в интерфейсе. +> Создавать ботов можно только пользовательским токеном — токеном бота нельзя. `access_token` отдаётся один раз при создании, увидеть его снова нельзя, только перевыпустить. С флагом `--empty` бот создаётся без токена и входящего вебхука, как в интерфейсе, а токены ему выпускает `pachca bots create-token`. **Настроить бота с исходящим вебхуком** @@ -337,16 +337,33 @@ **Ротация токена бота** -1. Пользовательским токеном (администратор, владелец компании или создатель бота) — перевыпусти токен по `id` бота. Прежний токен инвалидируется сразу -2. Или: бот перевыпускает собственный токен своим же токеном (скоуп `bot_self:write`). Токен, которым выполнен запрос, инвалидируется сразу — обязательно сохрани новый `access_token` из ответа, иначе бот потеряет доступ к API -3. Сохрани новый `access_token` из ответа — он возвращается единственный раз. Обнови секрет в CI или хранилище секретов +1. Пользовательским токеном (создатель бота или администратор, если бот открыт администраторам) — перевыпусти основной токен по `id` бота: тот, что без имени, а если такого нет, самый старый. Прежнее значение инвалидируется сразу +2. Или: бот перевыпускает свой основной токен сам (скоуп `bot_self:write`). Если запрос сделан основным токеном, он инвалидируется сразу — обязательно сохрани новый `access_token` из ответа, иначе бот потеряет доступ к API +3. Отдельный токен бота перевыпускай по его `id` из `pachca bots list-tokens`: значение меняется, имя и права остаются +4. Сохрани новый `access_token` из ответа — он возвращается единственный раз. Обнови секрет в CI или хранилище секретов -> Новый токен возвращается один раз. Self-путь (`POST /bot/recreate_token`) инвалидирует именно тот токен, которым выполнен запрос, — захвати новый токен из ответа в той же операции. +> Новое значение возвращается один раз. Self-путь (`POST /bot/recreate_token`) перевыпускает основной токен бота — если бот ходит им, захвати новый токен из ответа в той же операции. + +**Выпустить боту отдельный токен** + +1. Пользовательским токеном (создатель бота или администратор, если бот открыт администраторам) получи каталог прав, которые можно выдать этому боту +2. Выпусти токен с именем и правами из каталога. Без `--scopes` токен выпускается без прав, право не из каталога отклоняется с `400` +3. Сохрани `token` из ответа — полное значение возвращается единственный раз. Дальше в списке `pachca bots list-tokens` он приходит замаскированным + +> Отдельный токен удобен на каждый сервис, который работает от имени бота: его отзывают командой `pachca bots delete-token`, не трогая остальные. Права меняет `pachca bots update-token` — они действуют сразу, перевыпускать токен не нужно. + +**Включить боту авторизацию от имени сотрудника** + +1. Пользовательским токеном (создатель бота или администратор, если бот открыт администраторам) включи авторизацию: где хранится секрет, адреса возврата и права, которые бот попросит у сотрудника. Права бери из `pachca bots list-scopes` +2. Сохрани `client_secret` из ответа серверного клиента — он возвращается единственный раз. `client_id` приходит в `oauth_client` и не секретный +3. Чтобы бот появился в витрине, добавь описание и опубликуй страницу + +> Включена ли авторизация, показывает `oauth_client_enabled`: `oauth_client` может прийти и у бота с выключенной авторизацией. `--oauth-client=null` выключает её и отзывает выданные сотрудниками авторизации, новый секрет выпускает `pachca bots rotate-client-secret`. **Найти и удалить бота** 1. Пользовательским токеном (скоуп `bots:read`) получи список ботов, доступных тебе для редактирования: созданных тобой и тех, чьи настройки открывают тебе доступ. Фильтруй по имени параметром `query`, следующую страницу бери из `meta.paginate.next_page` -2. Возьми `id` нужного бота из списка и удали его (скоуп `bots:write`). Доступно администратору, владельцу компании или создателю бота — владельцы чатов удалять бота не могут. Прежний токен инвалидируется сразу, бот исключается из всех чатов, его исходящий вебхук удаляется +2. Возьми `id` нужного бота из списка и удали его (скоуп `bots:write`). Доступно создателю бота и администратору, если бот открыт администраторам, — владельцы чатов удалять бота не могут. Все токены бота инвалидируются сразу, бот исключается из всех чатов, его вебхуки удаляются > Удаление необратимо: токен бота инвалидируется сразу, бот исключается из чатов. Событие фиксируется в журнале аудита как `bot_deleted`. @@ -362,12 +379,12 @@ **Разворачивание ссылок (unfurling)** -1. Создай специального Unfurl-бота и укажи отслеживаемые домены +1. В карточке бота на вкладке «Исходящий вебхук» включи событие «Отправка ссылок в сообщении (unfurl)» и укажи до 5 доменов — это может только администратор или владелец пространства 2. При появлении ссылки бот получает вебхук `"event": "link_shared"` с массивом `links`. Каждый объект содержит `url`, `domain` и `skip: boolean` — если `skip` равен `true`, автор скрыл превью и бот должен пропустить эту ссылку 3. Извлеки данные из своей системы по URL из `links` (пропуская объекты с `skip: true`) 4. Отправь превью-данные -> Эндпоинт привязан к конкретному сообщению. Необходим специальный Unfurl-бот с указанными доменами. +> Эндпоинт привязан к конкретному сообщению. Боту нужно событие разворачивания ссылок с доменами: ссылки приходят из всех чатов пространства, добавлять бота в чаты не нужно. **Обработать нажатие кнопки (callback)** @@ -395,7 +412,7 @@ **Обработка событий через историю (polling)** -1. В настройках бота включи «Сохранять историю событий». Webhook URL указывать не обязательно. +1. Включи историю событий флагом `--events-history-enabled` (Webhook URL для этого не нужен) или настройкой «Сохранять историю событий» на вкладке «Исходящий вебхук» — в интерфейсе она появляется после включения вебхука 2. Получи накопленные события 3. Обработай каждое событие (тот же формат, что и в real-time вебхуке) 4. Удали обработанное событие diff --git a/apps/docs/public/images/authorization/token_access.webp b/apps/docs/public/images/authorization/token_access.webp index 13566eafc..41005aeb6 100644 Binary files a/apps/docs/public/images/authorization/token_access.webp and b/apps/docs/public/images/authorization/token_access.webp differ diff --git a/apps/docs/public/images/authorization/user_tokens_list.webp b/apps/docs/public/images/authorization/user_tokens_list.webp index bc89f56f1..dd772abe5 100644 Binary files a/apps/docs/public/images/authorization/user_tokens_list.webp and b/apps/docs/public/images/authorization/user_tokens_list.webp differ diff --git a/apps/docs/public/images/bots/app_page.webp b/apps/docs/public/images/bots/app_page.webp new file mode 100644 index 000000000..7a8ac6530 Binary files /dev/null and b/apps/docs/public/images/bots/app_page.webp differ diff --git a/apps/docs/public/images/bots/bot_main_settings.webp b/apps/docs/public/images/bots/bot_main_settings.webp index fec694d43..aec379bab 100644 Binary files a/apps/docs/public/images/bots/bot_main_settings.webp and b/apps/docs/public/images/bots/bot_main_settings.webp differ diff --git a/apps/docs/public/images/bots/bot_new.webp b/apps/docs/public/images/bots/bot_new.webp index 509f18069..41a940673 100644 Binary files a/apps/docs/public/images/bots/bot_new.webp and b/apps/docs/public/images/bots/bot_new.webp differ diff --git a/apps/docs/public/images/bots/bot_token_new.webp b/apps/docs/public/images/bots/bot_token_new.webp new file mode 100644 index 000000000..f149b7a37 Binary files /dev/null and b/apps/docs/public/images/bots/bot_token_new.webp differ diff --git a/apps/docs/public/images/bots/bot_tokens.webp b/apps/docs/public/images/bots/bot_tokens.webp new file mode 100644 index 000000000..48d13a987 Binary files /dev/null and b/apps/docs/public/images/bots/bot_tokens.webp differ diff --git a/apps/docs/public/images/bots/bot_webhook_api_settings.webp b/apps/docs/public/images/bots/bot_webhook_api_settings.webp index 9ad2d69fa..b6b9df7c7 100644 Binary files a/apps/docs/public/images/bots/bot_webhook_api_settings.webp and b/apps/docs/public/images/bots/bot_webhook_api_settings.webp differ diff --git a/apps/docs/public/images/bots/bots_management.webp b/apps/docs/public/images/bots/bots_management.webp new file mode 100644 index 000000000..90847ee04 Binary files /dev/null and b/apps/docs/public/images/bots/bots_management.webp differ diff --git a/apps/docs/public/images/bots/first_contact.webp b/apps/docs/public/images/bots/first_contact.webp new file mode 100644 index 000000000..56998d50a Binary files /dev/null and b/apps/docs/public/images/bots/first_contact.webp differ diff --git a/apps/docs/public/images/bots/showcase.webp b/apps/docs/public/images/bots/showcase.webp new file mode 100644 index 000000000..3f073dea8 Binary files /dev/null and b/apps/docs/public/images/bots/showcase.webp differ diff --git a/apps/docs/public/images/incoming-webhooks/inc_webhook.webp b/apps/docs/public/images/incoming-webhooks/inc_webhook.webp index 0d12aeb7c..c6577cfa0 100644 Binary files a/apps/docs/public/images/incoming-webhooks/inc_webhook.webp and b/apps/docs/public/images/incoming-webhooks/inc_webhook.webp differ diff --git a/apps/docs/public/images/oauth/access_request.webp b/apps/docs/public/images/oauth/access_request.webp new file mode 100644 index 000000000..e1c923932 Binary files /dev/null and b/apps/docs/public/images/oauth/access_request.webp differ diff --git a/apps/docs/public/images/oauth/authorizations.webp b/apps/docs/public/images/oauth/authorizations.webp new file mode 100644 index 000000000..ce54ec8f2 Binary files /dev/null and b/apps/docs/public/images/oauth/authorizations.webp differ diff --git a/apps/docs/public/images/oauth/consent.webp b/apps/docs/public/images/oauth/consent.webp new file mode 100644 index 000000000..e61998890 Binary files /dev/null and b/apps/docs/public/images/oauth/consent.webp differ diff --git a/apps/docs/public/images/oauth/oauth_delete.webp b/apps/docs/public/images/oauth/oauth_delete.webp new file mode 100644 index 000000000..c2fecfdcc Binary files /dev/null and b/apps/docs/public/images/oauth/oauth_delete.webp differ diff --git a/apps/docs/public/images/oauth/oauth_disabled.webp b/apps/docs/public/images/oauth/oauth_disabled.webp new file mode 100644 index 000000000..22592d205 Binary files /dev/null and b/apps/docs/public/images/oauth/oauth_disabled.webp differ diff --git a/apps/docs/public/images/oauth/oauth_enable.webp b/apps/docs/public/images/oauth/oauth_enable.webp new file mode 100644 index 000000000..913c94e44 Binary files /dev/null and b/apps/docs/public/images/oauth/oauth_enable.webp differ diff --git a/apps/docs/public/images/oauth/oauth_tab.webp b/apps/docs/public/images/oauth/oauth_tab.webp new file mode 100644 index 000000000..3e7351dfe Binary files /dev/null and b/apps/docs/public/images/oauth/oauth_tab.webp differ diff --git a/apps/docs/public/images/oauth/scopes.webp b/apps/docs/public/images/oauth/scopes.webp new file mode 100644 index 000000000..8b37023b1 Binary files /dev/null and b/apps/docs/public/images/oauth/scopes.webp differ diff --git a/apps/docs/public/images/oauth/showcase_page.webp b/apps/docs/public/images/oauth/showcase_page.webp new file mode 100644 index 000000000..9c917964f Binary files /dev/null and b/apps/docs/public/images/oauth/showcase_page.webp differ diff --git a/apps/docs/public/images/outgoing-webhook.png b/apps/docs/public/images/outgoing-webhook.png deleted file mode 100644 index 9dc856bcc..000000000 Binary files a/apps/docs/public/images/outgoing-webhook.png and /dev/null differ diff --git a/apps/docs/public/images/outgoing-webhook.webp b/apps/docs/public/images/outgoing-webhook.webp new file mode 100644 index 000000000..faf47643e Binary files /dev/null and b/apps/docs/public/images/outgoing-webhook.webp differ diff --git a/apps/docs/public/index.md b/apps/docs/public/index.md index 06b1d1555..b787a71c4 100644 --- a/apps/docs/public/index.md +++ b/apps/docs/public/index.md @@ -58,9 +58,10 @@ curl "https://api.pachca.com/api/shared/v1/messages" \ ## Боты и автоматизации -Создавайте ботов, обрабатывайте команды, добавляйте кнопки и формы в сообщения, получайте события через вебхуки. +Создавайте ботов, обрабатывайте команды, добавляйте кнопки и формы в сообщения, получайте события через вебхуки и работайте с данными сотрудников их правами. - [Боты](/guides/bots/overview) — Создание и настройка ботов +- [От имени сотрудника](/guides/oauth/overview) — Бот работает правами сотрудника - [Кнопки](/guides/buttons) — Ссылки и действия в сообщениях - [Формы](/guides/forms/overview) — Модальные окна с полями ввода - [Входящие вебхуки](/guides/incoming-webhooks) — Сообщения по URL без кода diff --git a/apps/docs/public/llms-en.txt b/apps/docs/public/llms-en.txt index 794d4217b..13c15ab5b 100644 --- a/apps/docs/public/llms-en.txt +++ b/apps/docs/public/llms-en.txt @@ -12,7 +12,7 @@ - All requests require Bearer token in Authorization header: `Authorization: Bearer ` - Two token types: **personal** — acts as a person and sees exactly what that person sees; **bot** — acts as a service account, sees every open channel of the workspace plus the closed chats and threads the bot was added to - Scopes decide which methods a token may call. They never widen the data beyond the boundary of the token type -- Get a personal token: Settings → Automations → API, choosing its scopes. Get a bot token: per-bot in Settings → Automations +- Get a personal token: Integrations → API, choosing its scopes. Get a bot token: Integrations → Bots, then the API tab of the bot, one token per purpose with its own scopes - A personal token issued in the interface does not expire; one obtained by `pachca auth login` lives an hour and renews itself - What a token may do also follows the current role of its owner, checked on every request — lowering the role starts returning 403 without touching the token - TypeScript SDK: `const client = new PachcaClient("YOUR_TOKEN")` @@ -46,13 +46,13 @@ - SDK (@pachca/sdk, pachca-sdk) handles retry automatically: 3 retries, respects Retry-After, exponential backoff for 5xx ## Webhooks (Real-time Events) -- Create a bot in Pachca: Automations → Integrations → Bots -- Set webhook URL in bot settings → Outgoing Webhook tab +- Create a bot in Pachca: Integrations → Bots → Create bot +- On the bot's Outgoing webhook tab, press Enable and give your URL - Events: `new_message`, `edit_message`, `delete_message`, `new_reaction`, `delete_reaction`, `button_pressed`, `view_submit`, `chat_member_changed`, `company_member_changed`, `link_shared` - Verify: HMAC-SHA256 of raw body with bot's Signing Secret - Header: `Pachca-Signature` contains hex digest - Replay protection: check `webhook_timestamp` within ±60 seconds of current time -- Alternative to webhooks: polling via GET /webhooks/events (enable "Save event history" in bot settings) +- Alternative to webhooks: polling via GET /webhooks/events (enable "Save event history" on the Outgoing webhook tab, or `events_history_enabled` via the API when there is no URL at all) - IP whitelist: Pachca webhook IP is `37.200.70.177` ## File Uploads (3-step process) @@ -145,7 +145,7 @@ profile = await client.profile.get_profile() print(profile.id, profile.first_name) ``` -Token types: **admin** (full access, get in Settings → Automations → API), **bot** (messaging + webhooks, per-bot in Integrations), **user** (limited). +Token types: **admin** (full access, get in Integrations → API), **bot** (messaging + webhooks, API tab of the bot in Integrations → Bots), **user** (limited). ## How to paginate through results @@ -274,18 +274,18 @@ Chat types: `channel: true` creates a channel (one-way announcements), `channel: ## How to set up webhooks for real-time updates ### Step-by-step setup -1. Create a bot in Pachca: **Automations** → **Integrations** → **Bots** -2. In bot settings, go to **Outgoing Webhook** tab and set your HTTPS URL +1. Create a bot in Pachca: **Integrations** → **Bots** → **Create bot** +2. On the bot's **Outgoing webhook** tab press **Enable** and set your HTTPS URL 3. Copy the **Signing Secret** for signature verification 4. Select event types: new messages, reactions, button presses, form submissions, etc. -5. Add the bot to chats where you want to receive events (global events like company member changes work without adding to chat) +5. Add the bot to chats where you want to receive events (company member changes and links on the bot's domains arrive without adding it to a chat) ### TypeScript webhook handler (Express.js) ```typescript import express from "express" import crypto from "crypto" -const SIGNING_SECRET = "your_signing_secret" // From bot settings → Outgoing Webhook +const SIGNING_SECRET = "your_signing_secret" // Bot card → Outgoing webhook → Signing secret const app = express() app.post("/webhook", express.raw({ type: "application/json" }), (req, res) => { @@ -331,7 +331,7 @@ app.listen(3000) import hmac, hashlib, json, time from flask import Flask, request, abort -SIGNING_SECRET = "your_signing_secret" # From bot settings → Outgoing Webhook +SIGNING_SECRET = "your_signing_secret" # Bot card → Outgoing webhook → Signing secret app = Flask(__name__) @app.route("/webhook", methods=["POST"]) @@ -368,10 +368,10 @@ def webhook(): | view_submit | Form submitted | payload (form field values), user_id, trigger_id | | chat_member (new/delete) | Member added/removed from chat | chat_id, user_id, event | | company_member (new/update/delete) | Workspace member changes | user_id, event (no chat needed) | -| link_shared | URL shared (unfurl bots) | url, message_id, chat_id | +| link_shared | URL on one of the bot's domains shared anywhere in the workspace | url, message_id, chat_id | ### Alternative: Polling (when webhook URL is not available) -Enable "Save event history" in bot settings, then poll: +Enable "Save event history" on the bot's Outgoing webhook tab (or `events_history_enabled` via the API when there is no URL at all), then poll: ```typescript // Poll for events periodically const events = await client.bots.getWebhookEvents() @@ -816,11 +816,11 @@ Information about the token the request itself was made with: its scopes, its ow ## Chats ### GET /api/shared/v1/chats -By default — the conversations, channels, and direct messages the token owner belongs to. With `availability=public` the method returns instead all public chats of the workspace, including the ones the caller has not joined. Threads never come in this list; for them there is [List threads](/api/threads/list). `archived=true` does not switch the results to the archive, it adds archived chats to the active ones. +By default — the conversations, channels, and direct messages the token owner belongs to. With `availability=public` the method returns instead all public chats of the workspace, including the ones the caller has not joined. For a multi-guest — only the public chats they are a member of. Threads never come in this list; for them there is [List threads](/api/threads/list). `archived=true` does not switch the results to the archive, it adds archived chats to the active ones. Parameters: sort?, order?, availability?, archived?, last_message_at_after?, last_message_at_before?, personal?, limit?, cursor? ### POST /api/shared/v1/chats -Creates a conversation or a channel. The token owner becomes the chat owner, and this role is not transferred later on. To create a one-on-one direct message with a user, use the [New message](/api/messages/create) method. To discuss a particular message there is no need to create a chat — a thread is started under it with the [New thread](/api/threads/add) method. Members can be passed right away: `member_ids` adds them one by one, `group_tag_ids` brings in everyone who belongs to the tag and keeps the membership up to date afterwards. IDs that do not exist in the workspace, as well as suspended and deleted employees, are silently dropped — the response is successful but the employee is not in the chat, so check the membership in the response. +Creates a conversation or a channel. The token owner becomes the chat owner, and this role is not transferred later on. A multi-guest cannot create chats, as in the interface: the method responds `403` to them. To create a one-on-one direct message with a user, use the [New message](/api/messages/create) method. To discuss a particular message there is no need to create a chat — a thread is started under it with the [New thread](/api/threads/add) method. Members can be passed right away: `member_ids` adds them one by one, `group_tag_ids` brings in everyone who belongs to the tag and keeps the membership up to date afterwards. IDs that do not exist in the workspace, as well as suspended and deleted employees, are silently dropped — the response is successful but the employee is not in the chat, so check the membership in the response. Bots are stricter: if a bot's "Who can add the bot to chats" setting does not let you add it, the chat is not created, and the method responds `403` with the `bot_add_denied` code and the IDs of such bots in `value`. Body: { chat: { name*, member_ids, group_tag_ids, channel, public } } ### POST /api/shared/v1/chats/exports @@ -848,6 +848,11 @@ Parameters: id Brings a conversation or a channel back from the archive: the chat appears in the lists again, and it becomes possible to write into it again. On a chat that is not in the archive anyway the method responds with success. Parameters: id +### PUT /api/shared/v1/chats/{id}/unread +Marks a chat as unread for the token owner, like "Mark as unread" in the interface. Only their own counter changes, the other members notice nothing. Without `message_id` the last message of the chat becomes unread, with `message_id` — this message and all messages after it. A repeated request with the same message changes nothing, and in a chat without messages the method responds with success and does nothing. Works in conversations, channels, direct chats and threads the token owner belongs to. A hidden direct chat appears in the list again. For a chat the token owner is not in, and for a message from another chat, the method responds `404`. +Parameters: id +Body: { message_id } + ### GET /api/shared/v1/company/chats The conversations and channels of the whole workspace, including private ones you are not a member of. Direct messages and threads are not returned. Both active and archived chats are returned by default. The `activity` parameter keeps only one of the states in the selection. The method is available to the workspace owner. Every request is written to the [audit log](/guides/audit-events) with the `company_chats_accessed` key. Parameters: activity?, limit?, cursor? @@ -877,7 +882,7 @@ Removes the status from the token owner, along with away mode and its text. If t ## Users ### GET /api/shared/v1/users -Every employee of the workspace except the deleted ones. Suspended employees come together with the rest and are distinguished by the `suspended` field. Bots in the workspace are employees too and come in the common list with `bot: true`. But they are excluded from the results for `query`: to find a bot by name, page through the list without a search query or use [List bots](/api/bots/list). Email and phone come back as `null` if the display of personal data is turned off in the workspace and the caller is not an administrator. The profile of a single employee is returned by [Employee info](/api/users/get), and your own by [Own profile](/api/profile/get). +Every employee of the workspace except the deleted ones. Suspended employees come together with the rest and are distinguished by the `suspended` field. Bots in the workspace are employees too and come in the common list with `bot: true`. But they are excluded from the results for `query`: to find a bot by name, page through the list without a search query or use [List bots](/api/bots/list). For a multi-guest the method returns not the whole workspace but the people they see in the interface: themselves, members of their shared chats including bots, and public bots. Threads and archived chats do not count as shared. Email and phone come back as `null` if the display of personal data is turned off in the workspace and the caller is not an administrator. For a multi-guest they always come back as `null`. A `query` search may not finish in time: then the method responds `504` with the `timeout` code, and the query is worth narrowing. The profile of a single employee is returned by [Employee info](/api/users/get), and your own by [Own profile](/api/profile/get). Parameters: query?, limit?, cursor? ### POST /api/shared/v1/users @@ -885,11 +890,11 @@ Creates an employee in the workspace and sends them an invitation by email. Avai Body: { user*, skip_email_notify } ### GET /api/shared/v1/users/{id} -The employee's profile. A suspended employee is returned with `suspended: true`, a deleted one as `404`, like a non-existent one. A bot also comes here as an employee, with `bot: true`. Email and phone come back as `null` if the display of personal data is turned off in the workspace and the caller is not an administrator. An employee sees their own profile in full — the same one is returned by the [Own profile](/api/profile/get) method, and without the `users:read` scope. +The employee's profile. A suspended employee is returned with `suspended: true`, a deleted one as `404`, like a non-existent one. A bot also comes here as an employee, with `bot: true`. For a multi-guest the method returns only those who come to them in [List employees](/api/users/list), and responds `404` for the rest. Email and phone come back as `null` if the display of personal data is turned off in the workspace and the caller is not an administrator. For a multi-guest they always come back as `null`. An employee sees their own profile in full — the same one is returned by the [Own profile](/api/profile/get) method, and without the `users:read` scope. Parameters: id ### PUT /api/shared/v1/users/{id} -Changes the employee's profile: only the fields you pass are overwritten. Custom property IDs are returned by [List custom properties](/api/custom-properties/list). The `list_tags` field replaces the whole set of tags, so send the tags that are being kept along with the new one. A removed tag takes the employee out of the chats this tag brought them into, and a name that does not exist in the workspace yet creates a new tag together with the assignment. `suspended: true` suspends the employee: they lose access but remain in chats, tags, and tasks, while `suspended: false` brings them back. An employee is removed for good by [Delete employee](/api/users/delete). The workspace owner can be edited only by themselves, and their role can be changed only to administrator. Turning a regular employee into a guest is impossible — in both cases the response is `403`. An unknown role value is silently ignored by the method: the response is successful and the role stays as it was. +Changes the employee's profile: only the fields you pass are overwritten. Custom property IDs are returned by [List custom properties](/api/custom-properties/list). The `list_tags` field replaces the whole set of tags, so send the tags that are being kept along with the new one. A removed tag takes the employee out of the chats this tag brought them into, and a name that does not exist in the workspace yet creates a new tag together with the assignment. `suspended: true` suspends the employee: they lose access but remain in chats, tags, and tasks, while `suspended: false` brings them back. An employee is removed for good by [Delete employee](/api/users/delete). The workspace owner can be edited only by themselves, and their role can be changed only to administrator. Turning a regular employee into a guest is impossible — in both cases the response is `403`. An unknown role value is silently ignored by the method: the response is successful and the role stays as it was. A bot's nickname must end with `_bot` and be unique in the workspace, otherwise the method responds `422` with an error on the `nickname` field: `invalid` or `already_exists`. A bot's existing nickname is checked only when it is changed. Parameters: id Body: { user: { first_name, last_name, email, phone_number, nickname, department, title, role, suspended, list_tags, custom_properties } } @@ -907,7 +912,7 @@ Removes the avatar of another employee; the interface then shows initials. Avail Parameters: user_id ### GET /api/shared/v1/users/{user_id}/status -The status of another employee: the emoji, the title, the expiry, and away mode. If no status is set, the method returns `200` and `null` in the response body — with no wrapper object. A status whose `expires_at` has passed may still be returned for a short time until it is cleared, so check `expires_at` on the client side. +The status of another employee: the emoji, the title, the expiry, and away mode. For a multi-guest the method returns statuses only of those who come to them in [List employees](/api/users/list), and responds `404` for the rest. If no status is set, the method returns `200` and `null` in the response body — with no wrapper object. A status whose `expires_at` has passed may still be returned for a short time until it is cleared, so check `expires_at` on the client side. Parameters: user_id ### PUT /api/shared/v1/users/{user_id}/status @@ -922,7 +927,7 @@ Parameters: user_id ## Group tags ### GET /api/shared/v1/group_tags -All tags of the workspace with the number of employees in each. They are visible the same way to all roles, regardless of which chats they are linked to. The `names` parameter looks tags up by name — this is the way to get an `id` from a name known from the interface. It accepts no more than 100 names per request. Who belongs to a particular tag is returned by [List tag employees](/api/group-tags/list-users). +All tags of the workspace with the number of employees in each, regardless of which chats they are linked to. A multi-guest gets only the tags of active conversations and channels they are a member of. The `names` parameter looks tags up by name — this is the way to get an `id` from a name known from the interface. It accepts no more than 100 names per request, and for more the method responds `400` with the `too_long` code. Who belongs to a particular tag is returned by [List tag employees](/api/group-tags/list-users). Parameters: names?, limit?, cursor? ### POST /api/shared/v1/group_tags @@ -930,7 +935,7 @@ Creates a tag. A tag is a way to keep chat membership up to date by itself: it i Body: { group_tag: { name* } } ### GET /api/shared/v1/group_tags/{id} -The tag name and the number of employees in it. Only active employees are counted in `users_count`: suspended ones do not make it into the counter, although they remain in [List tag employees](/api/group-tags/list-users). +The tag name and the number of employees in it. Only active employees are counted in `users_count`: suspended ones do not make it into the counter, although they remain in [List tag employees](/api/group-tags/list-users). Only the tags that come to a multi-guest in [List tags](/api/group-tags/list) are available to them; for the rest the method responds `404`. Parameters: id ### PUT /api/shared/v1/group_tags/{id} @@ -943,7 +948,7 @@ Removes a tag from the workspace: it is taken off every employee and unlinked fr Parameters: id ### GET /api/shared/v1/group_tags/{id}/users -Who belongs to the tag. Suspended employees come in the list, although they are not counted in the tag's own `users_count`; deleted ones do not come. Bots marked with the tag also make it into the results. The membership of a tag is changed in an employee's profile — [Edit employee](/api/users/update) with the `list_tags` field, one employee at a time. +Who belongs to the tag. Suspended employees come in the list, although they are not counted in the tag's own `users_count`; deleted ones do not come. Bots marked with the tag also make it into the results. The membership of a tag is changed in an employee's profile — [Edit employee](/api/users/update) with the `list_tags` field, one employee at a time. For a multi-guest the method responds `403`: the list of workspace employees is closed to them, as in the interface. Parameters: id, limit?, cursor? ## Members @@ -966,7 +971,7 @@ Who belongs to a conversation, a channel, or a thread. Bots come on equal terms Parameters: id, role?, limit?, cursor? ### POST /api/shared/v1/chats/{id}/members -Adds employees and bots to a conversation, a channel, or a thread. A bot is added the same way as an employee: its `id` in `member_ids`. In a channel it receives the editor role, and in a conversation it becomes an ordinary member — and only after that can it write there. The role in the chat is assigned at the moment of adding: the workspace owner and an administrator become chat administrators, everyone else becomes an ordinary member. After that it is not recalculated by itself, and promoting an employee in the workspace changes nothing where they already belong. To change a role, use the [Edit role](/api/members/update) method. Those who already belong to the chat are silently skipped by the method, and this is not treated as an error. An unknown or inactive ID, however, stops the whole request: the method responds `404` and lists such values, and nobody is added. Adding a whole department at once is more convenient with a tag — [Add tags](/api/members/add-group-tags): then the chat membership is maintained by itself. +Adds employees and bots to a conversation, a channel, or a thread. A bot is added the same way as an employee: its `id` in `member_ids`. In a channel it receives the editor role, and in a conversation it becomes an ordinary member — and only after that can it write there. The role in the chat is assigned at the moment of adding: the workspace owner and an administrator become chat administrators, everyone else becomes an ordinary member. After that it is not recalculated by itself, and promoting an employee in the workspace changes nothing where they already belong. To change a role, use the [Edit role](/api/members/update) method. Those who already belong to the chat are silently skipped by the method, and this is not treated as an error. An unknown or inactive ID, however, stops the whole request: the method responds `404` and lists such values, and nobody is added. A bot is added only by someone its "Who can add the bot to chats" setting allows — see [Bot settings](/guides/bots/settings#kto-mozhet-dobavlyat-bota-v-chaty). If `member_ids` contains a bot you are not allowed to add, the method adds nobody and responds `403` with the `bot_add_denied` code and the IDs of such bots in `value`. If the same request also has an unknown ID, the response is `404` with both errors. Adding a whole department at once is more convenient with a tag — [Add tags](/api/members/add-group-tags): then the chat membership is maintained by itself. Parameters: id Body: { member_ids*, silent } @@ -993,17 +998,17 @@ Parameters: last_message_at_after?, last_message_at_before?, limit?, cursor? Creates a thread that is not linked to anything: a place for a conversation, a dialogue with an agent, or a call that needs no chat of its own. Any employees can be gathered in it. No request body is required. The thread creator becomes its only member, and the `message_id` and `message_chat_id` fields in the response are returned as `null`. The easiest way to add members to the thread is a mention: `@nickname` or `@tag` at the start or the end of the message text. The [Add users](/api/members/add) method by the `chat_id` of the thread works too. A thread has no name, so send the first message into it right away — that is how employees will understand what it is about. A thread cannot be deleted. If what needs discussing is a particular message in a chat, start a thread under it with the [New thread](/api/threads/add) method, and if a permanent place with a name is needed, use the [New chat](/api/chats/create) method. ### GET /api/shared/v1/threads/{id} -The thread's identifiers: its own `id`, the `chat_id` for reading and sending messages, and the message it hangs under. For a standalone thread `message_id` and `message_chat_id` come back as `null`. The response carries identifiers only: a thread has no name and no message counter, and what it is about can be seen from the conversation inside. The messages of a thread are read with the [List chat messages](/api/messages/list) method, and its members with the [List chat members](/api/members/list) method, both by the `chat_id` of the thread. Access to a thread is broader than the results of [List threads](/api/threads/list): a thread that opens by `id` may well not appear in the list. +The identifiers of the thread and of the message it hangs under. The thread's `id` is used to write to it with the [New message](/api/messages/create) method with `entity_type: "thread"`, and its `chat_id` to read its messages. For a standalone thread `message_id` and `message_chat_id` come back as `null`. The response carries identifiers only: a thread has no name and no message counter, and what it is about can be seen from the conversation inside. The messages of a thread are read with the [List chat messages](/api/messages/list) method, and its members with the [List chat members](/api/members/list) method, both by the `chat_id` of the thread. Access to a thread is broader than the results of [List threads](/api/threads/list): a thread that opens by `id` may well not appear in the list. Parameters: id ## Messages ### GET /api/shared/v1/messages -The message feed of a conversation, a channel, a thread, or a direct message — by the `chat_id` of the chat in question. Messages come newest first, that is, the most recent messages of the chat come first. For earlier ones, use the `limit` and `cursor` parameters. Deleted messages do not make it into the list. The messages of a thread are returned by the `chat_id` of the thread itself, not by the chat where the parent message hangs. The thread identifier arrives in the `thread` field of the parent message. +The message feed of a conversation, a channel, a thread, or a direct message — by the `chat_id` of the chat in question. Messages come newest first, that is, the most recent messages of the chat come first. For earlier ones, use the `limit` and `cursor` parameters. Deleted messages do not make it into the list. The messages of a thread are returned by the `chat_id` of the thread itself, not by the chat where the parent message hangs. This `chat_id` arrives in the `thread.chat_id` field of the parent message. Parameters: chat_id, sort?, order?, limit?, cursor? ### POST /api/shared/v1/messages -Sends a message to a conversation or a channel, a direct message to an employee, or a comment to a thread. When using `entity_type: "discussion"` (or simply without specifying `entity_type`), any `chat_id` can be passed in the `entity_id` field. This means you can send a message knowing only the chat ID. A message can also be sent to a thread by the thread's own ID, and a direct message by the employee's ID, but then the matching `entity_type` must be given: `thread` or `user`. There is no need to create the direct chat for this: it appears by itself if there has been no prior conversation between you. Only one direct chat can exist between two employees. Your own ID writes to the chat with yourself — the same place where an employee sends notes to themselves. The text in the `content` field is parsed as markdown: bold, italic, strikethrough, inline code, code block, and links. Lists and tables are not parsed — `-`, `1.`, and `|` stay as they are, a quote loses its `>`, and a line with a hash and a space becomes bold. The details are in the [Text formatting](/guides/markdown) section. `@all` mentions all members of the chat, `@here` those who are currently online, and `@` with a tag name without spaces the employees of that tag. In a thread a mention also works as an invitation: a mentioned employee who is not in the thread is added to it by Pachca and gains access to the thread and its parent message. To prevent that, pass `skip_invite_mentions: true`. In a conversation or a channel a mention adds nobody, and the parameter changes nothing there. Buttons can be shown under the message text — the `buttons` array, where each nested array is a row. They only work on messages sent with a bot token: a click on a button with `data` arrives as a `button_click` event to that same bot, carrying a `trigger_id` — there are 3 seconds to open a form with it, the [Open view](/api/views/open) method. A button with `url` simply follows the link and creates no event. Details are in the [Buttons](/guides/buttons) section. A bot can sign a message with someone else's name and avatar: `display_name` and `display_avatar_url` change the sender for this message only. The **Bot** badge stays, and the sender's profile still shows the real bot. This is how the original author is shown when a conversation is carried over from another system. With a personal token these fields are not available and the response is `403`. Details are in the [Bots](/guides/bots/overview) section. No more than 10 files can be attached to a message. A link preview is built only if `link_preview` is passed at the root of the request body. A daily limit applies to the number of messages into one chat from one sender. When it is exceeded the method responds `429`, and the `Retry-After` header carries the pause before the next attempt. The limit values are in the [Limits](/api/limits) section. +Sends a message to a conversation or a channel, a direct message to an employee, or a comment to a thread. When using `entity_type: "discussion"` (or simply without specifying `entity_type`), any `chat_id` can be passed in the `entity_id` field. This means you can send a message knowing only the chat ID. A message can also be sent to a thread by the thread's own ID, and a direct message by the employee's ID, but then the matching `entity_type` must be given: `thread` or `user`. There is no need to create the direct chat for this: it appears by itself if there has been no prior conversation between you. Only one direct chat can exist between two employees. Your own ID writes to the chat with yourself — the same place where an employee sends notes to themselves. To reply to a specific message with a quote, pass its ID in `parent_message_id`. This works in any chat, including a thread: the reply is sent to the same chat or thread where the original message is. The text in the `content` field is parsed as markdown: bold, italic, strikethrough, inline code, code block, and links. Lists and tables are not parsed — `-`, `1.`, and `|` stay as they are, a quote loses its `>`, and a line with a hash and a space becomes bold. The details are in the [Text formatting](/guides/markdown) section. `@all` mentions all members of the chat, `@here` those who are currently online, and `@` with a tag name without spaces the employees of that tag. In a thread a mention also works as an invitation: a mentioned employee who is not in the thread is added to it by Pachca and gains access to the thread and its parent message. To prevent that, pass `skip_invite_mentions: true`. In a conversation or a channel a mention adds nobody, and the parameter changes nothing there. Buttons can be shown under the message text — the `buttons` array, where each nested array is a row. They only work on messages sent with a bot token: a click on a button with `data` arrives as a `button_click` event to that same bot, carrying a `trigger_id` — there are 3 seconds to open a form with it, the [Open view](/api/views/open) method. A button with `url` simply follows the link and creates no event. Details are in the [Buttons](/guides/buttons) section. A bot can sign a message with someone else's name and avatar: `display_name` and `display_avatar_url` change the sender for this message only. The **Bot** badge stays, and the sender's profile still shows the real bot. This is how the original author is shown when a conversation is carried over from another system. With a personal token these fields are not available and the response is `403`. Details are in the [Bots](/guides/bots/overview) section. No more than 10 files can be attached to a message. A link preview is built only if `link_preview` is passed at the root of the request body. A daily limit applies to the number of messages into one chat from one sender. When it is exceeded the method responds `429`, and the `Retry-After` header carries the pause before the next attempt. The limit values are in the [Limits](/api/limits) section. Body: { message*, link_preview } ### GET /api/shared/v1/messages/{id} @@ -1056,15 +1061,15 @@ Parameters: id, code, name? ## Search ### GET /api/shared/v1/search/chats -Searches for conversations and channels by name, forgiving typos. It also finds the public chats of the workspace the caller has not joined, and of the private ones only those they belong to. Direct messages are not searched by default. Pass `personal=true` and the search will go by the name of the other party rather than by the chat name. The method searches names, not content. To find where something was discussed or agreed, use [Search messages](/api/search/list-messages). +Searches for conversations and channels by name, forgiving typos. It also finds the public chats of the workspace the caller has not joined, and of the private ones only those they belong to. Direct messages are not searched by default. Pass `personal=true` and the search will go by the name of the other party rather than by the chat name. The method searches names, not content. To find where something was discussed or agreed, use [Search messages](/api/search/list-messages). A query that is too heavy may not finish in time: then the method responds `504` with the `timeout` code, and the query is worth narrowing. Parameters: query?, limit?, cursor?, order?, created_from?, created_to?, active?, chat_subtype?, personal? ### GET /api/shared/v1/search/messages -Searches by message text and by the names of attachments, but only in the chats the token owner belongs to. A public channel they have not joined does not make it into the search, even though its feed can be read. Thread messages are included in the results. The words of the query are matched by their forms and by part of a word, and typos are not corrected. A query in quotation marks is searched as an exact phrase, and matching on part of a word does not apply to it. By default messages come from newest to oldest. `sort=relevance` switches the results to how well they match the query, where recent messages are still valued higher. +Searches by message text and by the names of attachments, but only in the chats the token owner belongs to. A public channel they have not joined does not make it into the search, even though its feed can be read. Thread messages are included in the results. The words of the query are matched by their forms and by part of a word, and typos are not corrected. A query in quotation marks is searched as an exact phrase, and matching on part of a word does not apply to it. By default messages come from newest to oldest. `sort=relevance` switches the results to how well they match the query, where recent messages are still valued higher. A query that is too heavy may not finish in time: then the method responds `504` with the `timeout` code, and the query is worth narrowing. Parameters: query?, limit?, cursor?, order?, sort?, created_from?, created_to?, chat_ids?, user_ids?, active? ### GET /api/shared/v1/search/users -Searches for employees by first and last name, nickname, position, and department. Typos are forgiven only in the first and last name; the other fields need an exact word. The method searches by email only for those who can see personal data in the workspace. It does not search by phone at all — for that there is [List employees](/api/users/list) with the `query` parameter. Deleted employees are never found; suspended ones only when a text query is given, and they stand below the rest in the results. Of the bots, only public ones are found. +Searches for employees by first and last name, nickname, position, and department. Typos are forgiven only in the first and last name; the other fields need an exact word. The method searches by email only for those who can see personal data in the workspace. It does not search by phone at all — for that there is [List employees](/api/users/list) with the `query` parameter. Deleted employees are never found; suspended ones only when a text query is given, and they stand below the rest in the results. Of the bots, only public ones are found. A query that is too heavy may not finish in time: then the method responds `504` with the `timeout` code, and the query is worth narrowing. Parameters: query?, limit?, cursor?, sort?, order?, created_from?, created_to?, company_roles? ## Tasks @@ -1127,37 +1132,67 @@ Body: { submit_id*, errors } ## Bots ### POST /api/shared/v1/bot/recreate_token -Allows a bot to generate a new `access_token` for itself using its own token — without an administrator and without knowing its own `id`. The very token the request was made with is rotated, and it is invalidated immediately. The new token is returned in the response once — be sure to save it, otherwise the bot loses access to the API. The scopes are carried over from the previous token. +Allows a bot to generate a new `access_token` for itself using its own token — without an administrator and without knowing its own `id`. The bot's main token is reissued — the one without a name, or the oldest one if there is none — and it is invalidated immediately. If the bot works with an additional token, that token stays as it was. The new token is returned in the response once — be sure to save it, otherwise the bot loses access to the API. The scopes are carried over from the previous token. ### PUT /api/shared/v1/bot/webhook Allows a bot to change its own outgoing webhook `URL` using its own token — without an administrator and without knowing its own `id`. The webhook of the bot that owns the token is changed. To disable the webhook, send an empty string in `outgoing_url`. Body: { webhook: { outgoing_url* } } ### GET /api/shared/v1/bots -The bots the caller is entitled to configure: those they created themselves and those whose settings grant them edit access. The `query` parameter selects bots by part of the name, without typos. Bot tokens do not come in the list — they are shown once at creation and at rotation. The list of all bots in the workspace, including other people's, is available to the owner on the "Corporation" plan — [List workspace bots](/api/bots/list-company). There other people's bots come with only a name and a nickname, and the rest of the settings are hidden. +The bots the caller is entitled to configure: those they created themselves and those whose settings grant them edit access. The `query` parameter selects bots by part of the name, without typos. Bot tokens do not come in the list: a token value is shown once, and the bot's tokens themselves are returned by [Bot token list](/api/bots/list-tokens). The list of all bots in the workspace, including other people's, is available to the owner on the "Corporation" plan — [List workspace bots](/api/bots/list-company). There other people's bots come with only a name and a nickname, and the rest of the settings are hidden. Parameters: query?, limit?, cursor? ### POST /api/shared/v1/bots -Creates a bot in the workspace and immediately returns its `access_token`. Save the token at creation: the same one is not shown again, and what remains is to reissue it with [Bot token rotation](/api/bots/recreate-token). A newly created bot does not write anywhere yet. It writes into a conversation and a channel only as a member, and it is added like an employee — with the [Add users](/api/members/add) method, passing the bot's `id`. In a channel the bot receives the editor role. Direct messages and threads in public chats do not require membership. The bot's incoming webhook sends a message at once to every conversation and channel the bot belongs to, so it is the set of its chats that decides where it lands. No token is needed for that, the webhook address is enough. To write into one particular chat, take the [New message](/api/messages/create) method — that one does need a token. The nickname must end with `_bot` and be free in the workspace. The `single_chat` restriction is set only here: when editing a bot it can no longer be changed. -Body: { webhook: { name*, nickname, outgoing_url, events, trigger_on, commands, scopes, template, template_engine, challenge_key, link_preview_enabled, ignore_self_messages, events_history_enabled, who_can_add, can_edit, single_chat } } +Creates a bot in the workspace. By default the bot gets an incoming webhook in its own format and immediately returns its `access_token`. Save the token at creation: the same one is not shown again, and what remains is to reissue it with [Bot token rotation](/api/bots/recreate-token). With `empty: true` an empty bot is created, as in the interface: only a name and a nickname, without a token and without an incoming webhook. Tokens are issued to it with [New bot token](/api/bots/create-token), and the incoming webhook is enabled with the `kind` field in the `webhook` object. A newly created bot does not write anywhere yet. It writes into a conversation and a channel only as a member, and it is added like an employee — with the [Add users](/api/members/add) method, passing the bot's `id`. In a channel the bot receives the editor role. Direct messages and threads in public chats do not require membership. The bot's incoming webhook sends a message at once to every conversation and channel the bot belongs to, so it is the set of its chats that decides where it lands. No token is needed for that, the webhook address is enough. To write into one particular chat, take the [New message](/api/messages/create) method — that one does need a token. Authorization on behalf of an employee can be enabled right away by passing `oauth_client`, and the catalog page can be filled in `promo`. For a server-side client the secret comes in `client_secret` once. Learn more in [Authorization setup](/guides/oauth/setup). The nickname must end with `_bot` and be free in the workspace. +Body: { empty, webhook*, oauth_client, promo } ### GET /api/shared/v1/bots/{id} -The bot's settings. The token does not come in the response — it is shown once at the bot's creation and at [Bot token rotation](/api/bots/recreate-token). The method returns only the bots the caller is entitled to configure: their own, and, if the bot's settings allow it, also as a workspace administrator or as the owner of a chat the bot belongs to. For someone else's bot the method responds `403`. The list of all bots in the workspace, including other people's, is available to the owner on the "Corporation" plan — [List workspace bots](/api/bots/list-company). +The bot's settings. The token does not come in the response — it is shown once at the bot's creation and at [Bot token rotation](/api/bots/recreate-token). The bot's tokens are returned by [Bot token list](/api/bots/list-tokens). The method returns only the bots the caller is entitled to configure: their own, and, if the bot's settings allow it, also as a workspace administrator or as an owner or admin of a chat the bot belongs to. For someone else's bot the method responds `403`. The list of all bots in the workspace, including other people's, is available to the owner on the "Corporation" plan — [List workspace bots](/api/bots/list-company). Parameters: id ### PUT /api/shared/v1/bots/{id} -Changes a bot's settings: only the fields you pass are overwritten. The `single_chat` field is accepted only when a bot is created. In this method it is silently ignored: the response is successful and the bot's mode does not change. The nickname must end with `_bot` and be free in the workspace, otherwise the method responds with a validation error. Commands and scopes are replaced by the passed list as a whole, and the new set of scopes is applied to the bot's current token right away — there is no need to reissue it. You cannot edit a bot whose settings are not accessible to you (the "Who can edit bot settings" field is located on the "General" tab in the bot settings). +Changes a bot's settings: only the fields you pass are overwritten. The nickname must end with `_bot` and be free in the workspace, otherwise the method responds with a validation error. Commands and scopes are replaced by the passed list as a whole. Scopes apply to the bot's main token — the one without a name, or the oldest one if there is none — and take effect on it right away, there is no need to reissue it. The scopes of an additional token are changed by [Edit bot token](/api/bots/update-token). The `oauth_client` object enables authorization on behalf of an employee or changes its settings, and `null` disables it: authorizations granted by employees are revoked, the catalog page is deleted, and the bot's own tokens keep working. When the client becomes server-side, its secret comes in `client_secret` once. The catalog page is set by `promo` while authorization is enabled. Only a workspace administrator or owner can enable the `message_link_shared` event, and for a bot with it change the domains, the webhook address and the event history. The bot name, authorization on behalf of an employee and the catalog page are changed only by the bot's creator, and a workspace administrator if the bot's settings grant administrators edit access. Other settings cannot be changed for a bot whose settings are not accessible to you (the "Who can edit bot settings" field is located on the "General" tab in the bot settings). Parameters: id -Body: { webhook: { name, nickname, outgoing_url, events, trigger_on, commands, scopes, template, template_engine, challenge_key, link_preview_enabled, ignore_self_messages, events_history_enabled, who_can_add, can_edit } } +Body: { webhook, oauth_client, promo } ### DELETE /api/shared/v1/bots/{id} -Delete a bot. The bot's previous `access_token` is invalidated immediately, the bot is removed from all chats, and its outgoing webhook is deleted. Deletion is available to the bot creator, and to a workspace administrator if the bot's settings grant administrators edit access. Chat owners and admins cannot delete a bot, even if they are allowed to edit it. +Removes the bot from the workspace for good. All of the bot's tokens stop working at once, as do the authorizations employees granted to it. The bot is removed from all chats, and its webhooks and catalog page are deleted. Deletion is available to the bot's creator, and a workspace administrator if the bot's settings grant administrators edit access. Chat owners and admins cannot delete a bot, even if they are allowed to edit it. Parameters: id ### POST /api/shared/v1/bots/{id}/recreate_token -Generates a new `access_token` for the bot and immediately invalidates the previous one. Use it when a token is compromised or for scheduled secret rotation in `CI`. The new token is returned in the response only once — save it right away. Its permissions are the same: the scopes are carried over from the previous token. Rotation is available to the bot creator, and also to a workspace administrator if the bot's settings grant administrators edit access. The owner of a chat the bot belongs to cannot rotate the token, even when the rest of the bot's settings are open to them. +Generates a new `access_token` for the bot and immediately invalidates the previous one. Use it when a token is compromised or for scheduled secret rotation in `CI`. The bot's main token is reissued — the one without a name, or the oldest one if there is none. An additional token is reissued by [Reissue bot token](/api/bots/reissue-token). The new token is returned in the response only once — save it right away. Its permissions are the same: the scopes are carried over from the previous token. Rotation is available to the bot's creator, and a workspace administrator if the bot's settings grant administrators edit access. The owner of a chat the bot belongs to cannot rotate the token, even when the rest of the bot's settings are open to them. +Parameters: id + +### POST /api/shared/v1/bots/{id}/rotate_client_secret +Issues a new `client_secret` for authorization on behalf of an employee. The previous secret stops working at once, so prepare the bot for the replacement first. Authorizations already granted and tokens already received keep working. The new secret comes in `client_secret` once. The method works only for a bot with authorization enabled and a server-side client (`confidential: true`), otherwise it responds `400`. Rotation is available to the bot's creator, and to a workspace administrator if the bot's settings give administrators edit access. Parameters: id +### GET /api/shared/v1/bots/{id}/scopes +The scopes that can be granted to this bot: to its tokens and to authorization on behalf of an employee. Each scope has a description, a category and the ready-made sets it belongs to, as when choosing scopes in the interface. The catalog is available to the same people who see the bot's tokens: the bot's creator, and a workspace administrator if the bot's settings give administrators edit access. +Parameters: id + +### GET /api/shared/v1/bots/{id}/tokens +The bot's active tokens: the main one, issued together with the bot, and additional ones — each with its own name and scopes. The token value is masked here: in full it is shown once, when the token is issued and when it is reissued. Only the bot's creator and a workspace administrator, if the bot's settings give administrators edit access, can work with the bot's tokens. For the owner of a chat with the bot the method responds `403`, even when the bot's other settings are open to them. +Parameters: id, limit?, cursor? + +### POST /api/shared/v1/bots/{id}/tokens +Issues one more token for the bot, with its own name and scopes. A bot can have several tokens: for example, a separate one for each service, so that they can be revoked one by one. The token value comes in the response once — save it right away. The token does not expire and works until it is deleted. Scopes are chosen from those that can be granted to a bot: they are listed by [Bot scope catalog](/api/bots/list-scopes). For a scope that is not in the catalog the method responds `400`. Without `scopes` the token is issued without scopes. Only the bot's creator and a workspace administrator, if the bot's settings give administrators edit access, can work with the bot's tokens. For the owner of a chat with the bot the method responds `403`, even when the bot's other settings are open to them. +Parameters: id +Body: { name*, scopes } + +### PUT /api/shared/v1/bots/{id}/tokens/{token_id} +Changes the token's name or scopes. New scopes take effect immediately: there is no need to reissue the token, and its value stays the same. Scopes are replaced by the passed list as a whole. Only the bot's creator and a workspace administrator, if the bot's settings give administrators edit access, can work with the bot's tokens. For the owner of a chat with the bot the method responds `403`, even when the bot's other settings are open to them. +Parameters: id, token_id +Body: { name, scopes } + +### DELETE /api/shared/v1/bots/{id}/tokens/{token_id} +Deletes the token: requests with it stop passing at once. The bot's other tokens keep working. Only the bot's creator and a workspace administrator, if the bot's settings give administrators edit access, can work with the bot's tokens. For the owner of a chat with the bot the method responds `403`, even when the bot's other settings are open to them. +Parameters: id, token_id + +### POST /api/shared/v1/bots/{id}/tokens/{token_id}/reissue +Replaces the token value with a new one: the previous value stops working at once, the name and scopes stay. The new value comes in the response once — save it right away. The method is needed when a token has leaked or is changed on schedule. The bot's main token can also be reissued with [Bot token rotation](/api/bots/recreate-token). Only the bot's creator and a workspace administrator, if the bot's settings give administrators edit access, can work with the bot's tokens. For the owner of a chat with the bot the method responds `403`, even when the bot's other settings are open to them. +Parameters: id, token_id + ### GET /api/shared/v1/company/bots Every bot in the workspace, including the ones you cannot edit. For those, only the name and the nickname are returned, the rest of the settings come as `null`. The method is available to the workspace owner. Every request is written to the [audit log](/guides/audit-events) with the `company_bots_accessed` key. Parameters: query?, limit?, cursor? diff --git a/apps/docs/public/llms-full.txt b/apps/docs/public/llms-full.txt index 0e61947f2..26f251f90 100644 --- a/apps/docs/public/llms-full.txt +++ b/apps/docs/public/llms-full.txt @@ -14,91 +14,100 @@ | Раздел | Строки | |--------|--------| -| LIBRARY RULES — правила: auth, пагинация, лимиты, ошибки, SDK | 103–212 | -| How-to Guides — рецепты задач с кодом TS/Python | 213–896 | -| Руководства — гайды: SDK, вебхуки, боты, формы, n8n, CLI | 897–12987 | -| · Обзор | 902–1005 | -| · Быстрый старт | 1006–1095 | -| · AI агенты | 1096–1235 | -| · Взаимодействие с агентом | 1236–1307 | -| · Черновик вместо отправки | 1308–1390 | -| · Оформление ответов | 1391–1461 | -| · Треды | 1462–1604 | -| · Теги | 1605–1730 | -| · Боты | 1731–1793 | -| · Создание и настройка | 1794–1937 | -| · Доступы к чатам и сообщениям | 1938–2012 | -| · Готовые примеры реализации | 2013–2047 | -| · Входящие вебхуки | 2048–2200 | -| · Исходящие вебхуки | 2201–2255 | -| · Настройка и типы событий | 2256–2501 | -| · Безопасность и обработчик | 2502–2694 | -| · Поллинг | 2695–2878 | -| · Кнопки в сообщениях | 2879–3040 | -| · Формы | 3041–3112 | -| · Блоки представления | 3113–3327 | -| · Обработка форм | 3328–3507 | -| · Разворачивание ссылок | 3508–3622 | -| · Экспорт сообщений | 3623–3769 | -| · DLP-система | 3770–3974 | -| · Шифрование и безопасный контур | 3975–4067 | -| · Журнал аудита событий | 4068–4280 | -| · Права и роли | 4281–4542 | -| · Форматирование текста | 4543–4640 | -| · Сценарии | 4641–5182 | -| · CLI | 5183–5278 | -| · Установка | 5279–5386 | -| · Авторизация | 5387–5579 | -| · Вывод | 5580–5683 | -| · Флаги и скрипты | 5684–5912 | -| · Сценарии | 5913–5960 | -| · Файлы | 5961–6011 | -| · Прямые запросы | 6012–6122 | -| · Команды | 6123–6274 | -| · SDK и генератор | 6275–6367 | -| · TypeScript | 6368–6800 | -| · Python | 6801–7227 | -| · Go | 7228–7679 | -| · Kotlin | 7680–8122 | -| · Swift | 8123–8534 | -| · C# | 8535–9007 | -| · n8n | 9008–9083 | -| · Начало работы | 9084–9315 | -| · Ресурсы и операции | 9316–9714 | -| · Триггер | 9715–9966 | -| · Тестирование | 9967–10240 | -| · Примеры workflow | 10241–10455 | -| · Продвинутые функции | 10456–10692 | -| · Устранение ошибок | 10693–10874 | -| · Миграция с v1 | 10875–10995 | -| · Последние обновления | 10996–11005 | -| · Обзор | 11006–11107 | -| · Авторизация | 11108–11341 | -| · Запросы и ответы | 11342–11534 | -| · Пагинация | 11535–11771 | -| · Загрузка файлов | 11772–12020 | -| · Ошибки | 12021–12097 | -| · Лимиты | 12098–12242 | -| · Модели | 12243–12987 | -| API-методы — все эндпоинты со схемами и примерами | 12988–33518 | -| · OAuth | 12990–13093 | -| · Chats | 13094–14974 | -| · Profile | 14975–15896 | -| · Users | 15897–18378 | -| · Group tags | 18379–19798 | -| · Members | 19799–21163 | -| · Threads | 21164–21868 | -| · Messages | 21869–24093 | -| · Read members | 24094–24344 | -| · Reactions | 24345–24993 | -| · Search | 24994–25822 | -| · Tasks | 25823–27143 | -| · Drafts | 27144–28864 | -| · Views | 28865–29723 | -| · Bots | 29724–32492 | -| · Security | 32493–32851 | -| · Custom Properties | 32852–33061 | -| · Files | 33062–33518 | +| LIBRARY RULES — правила: auth, пагинация, лимиты, ошибки, SDK | 112–221 | +| How-to Guides — рецепты задач с кодом TS/Python | 222–905 | +| Руководства — гайды: SDK, вебхуки, боты, формы, n8n, CLI | 906–14222 | +| · Обзор | 911–1015 | +| · Быстрый старт | 1016–1105 | +| · AI агенты | 1106–1245 | +| · Взаимодействие с агентом | 1246–1317 | +| · Черновик вместо отправки | 1318–1400 | +| · Оформление ответов | 1401–1471 | +| · Треды | 1472–1614 | +| · Теги | 1615–1740 | +| · Боты | 1741–1832 | +| · Создание бота | 1833–1925 | +| · Настройки бота | 1926–2000 | +| · Токены бота | 2001–2096 | +| · Первый диалог с ботом | 2097–2209 | +| · Доступы к чатам и сообщениям | 2210–2284 | +| · Витрина | 2285–2383 | +| · Готовые примеры реализации | 2384–2418 | +| · Авторизация от имени сотрудника | 2419–2485 | +| · Чек-лист запуска | 2486–2538 | +| · Настройка авторизации | 2539–2670 | +| · Получение токена сотрудника | 2671–2911 | +| · Согласие и отзыв | 2912–2986 | +| · Входящие вебхуки | 2987–3156 | +| · Исходящие вебхуки | 3157–3211 | +| · Настройка и типы событий | 3212–3469 | +| · Безопасность и обработчик | 3470–3662 | +| · Поллинг | 3663–3846 | +| · Кнопки в сообщениях | 3847–4008 | +| · Формы | 4009–4080 | +| · Блоки представления | 4081–4295 | +| · Обработка форм | 4296–4477 | +| · Разворачивание ссылок | 4478–4602 | +| · Экспорт сообщений | 4603–4749 | +| · DLP-система | 4750–4954 | +| · Шифрование и безопасный контур | 4955–5047 | +| · Журнал аудита событий | 5048–5265 | +| · Права и роли | 5266–5543 | +| · Форматирование текста | 5544–5641 | +| · Сценарии | 5642–6200 | +| · CLI | 6201–6296 | +| · Установка | 6297–6404 | +| · Авторизация | 6405–6599 | +| · Вывод | 6600–6703 | +| · Флаги и скрипты | 6704–6932 | +| · Сценарии | 6933–6980 | +| · Файлы | 6981–7031 | +| · Прямые запросы | 7032–7142 | +| · Команды | 7143–7302 | +| · SDK и генератор | 7303–7395 | +| · TypeScript | 7396–7836 | +| · Python | 7837–8271 | +| · Go | 8272–8731 | +| · Kotlin | 8732–9182 | +| · Swift | 9183–9602 | +| · C# | 9603–10083 | +| · n8n | 10084–10159 | +| · Начало работы | 10160–10391 | +| · Ресурсы и операции | 10392–10798 | +| · Триггер | 10799–11050 | +| · Тестирование | 11051–11324 | +| · Примеры workflow | 11325–11539 | +| · Продвинутые функции | 11540–11776 | +| · Устранение ошибок | 11777–11958 | +| · Миграция с v1 | 11959–12079 | +| · Последние обновления | 12080–12089 | +| · Обзор | 12090–12191 | +| · Авторизация | 12192–12438 | +| · Запросы и ответы | 12439–12631 | +| · Пагинация | 12632–12868 | +| · Загрузка файлов | 12869–13117 | +| · Ошибки | 13118–13197 | +| · Лимиты | 13198–13342 | +| · Модели | 13343–14222 | +| API-методы — все эндпоинты со схемами и примерами | 14223–37460 | +| · OAuth | 14225–14328 | +| · Chats | 14329–16457 | +| · Profile | 16458–17379 | +| · Users | 17380–19901 | +| · Group tags | 19902–21325 | +| · Members | 21326–22712 | +| · Threads | 22713–23417 | +| · Messages | 23418–25644 | +| · Read members | 25645–25895 | +| · Reactions | 25896–26544 | +| · Search | 26545–27469 | +| · Tasks | 27470–28790 | +| · Drafts | 28791–30511 | +| · Views | 30512–31370 | +| · Bots | 31371–36418 | +| · Security | 36419–36793 | +| · Custom Properties | 36794–37003 | +| · Files | 37004–37460 | # LIBRARY RULES @@ -106,7 +115,7 @@ - All requests require Bearer token in Authorization header: `Authorization: Bearer ` - Two token types: **personal** — acts as a person and sees exactly what that person sees; **bot** — acts as a service account, sees every open channel of the workspace plus the closed chats and threads the bot was added to - Scopes decide which methods a token may call. They never widen the data beyond the boundary of the token type -- Get a personal token: Settings → Automations → API, choosing its scopes. Get a bot token: per-bot in Settings → Automations +- Get a personal token: Integrations → API, choosing its scopes. Get a bot token: Integrations → Bots, then the API tab of the bot, one token per purpose with its own scopes - A personal token issued in the interface does not expire; one obtained by `pachca auth login` lives an hour and renews itself - What a token may do also follows the current role of its owner, checked on every request — lowering the role starts returning 403 without touching the token - TypeScript SDK: `const client = new PachcaClient("YOUR_TOKEN")` @@ -140,13 +149,13 @@ - SDK (@pachca/sdk, pachca-sdk) handles retry automatically: 3 retries, respects Retry-After, exponential backoff for 5xx ## Webhooks (Real-time Events) -- Create a bot in Pachca: Automations → Integrations → Bots -- Set webhook URL in bot settings → Outgoing Webhook tab +- Create a bot in Pachca: Integrations → Bots → Create bot +- On the bot's Outgoing webhook tab, press Enable and give your URL - Events: `new_message`, `edit_message`, `delete_message`, `new_reaction`, `delete_reaction`, `button_pressed`, `view_submit`, `chat_member_changed`, `company_member_changed`, `link_shared` - Verify: HMAC-SHA256 of raw body with bot's Signing Secret - Header: `Pachca-Signature` contains hex digest - Replay protection: check `webhook_timestamp` within ±60 seconds of current time -- Alternative to webhooks: polling via GET /webhooks/events (enable "Save event history" in bot settings) +- Alternative to webhooks: polling via GET /webhooks/events (enable "Save event history" on the Outgoing webhook tab, or `events_history_enabled` via the API when there is no URL at all) - IP whitelist: Pachca webhook IP is `37.200.70.177` ## File Uploads (3-step process) @@ -239,7 +248,7 @@ profile = await client.profile.get_profile() print(profile.id, profile.first_name) ``` -Token types: **admin** (full access, get in Settings → Automations → API), **bot** (messaging + webhooks, per-bot in Integrations), **user** (limited). +Token types: **admin** (full access, get in Integrations → API), **bot** (messaging + webhooks, API tab of the bot in Integrations → Bots), **user** (limited). ## How to paginate through results @@ -368,18 +377,18 @@ Chat types: `channel: true` creates a channel (one-way announcements), `channel: ## How to set up webhooks for real-time updates ### Step-by-step setup -1. Create a bot in Pachca: **Automations** → **Integrations** → **Bots** -2. In bot settings, go to **Outgoing Webhook** tab and set your HTTPS URL +1. Create a bot in Pachca: **Integrations** → **Bots** → **Create bot** +2. On the bot's **Outgoing webhook** tab press **Enable** and set your HTTPS URL 3. Copy the **Signing Secret** for signature verification 4. Select event types: new messages, reactions, button presses, form submissions, etc. -5. Add the bot to chats where you want to receive events (global events like company member changes work without adding to chat) +5. Add the bot to chats where you want to receive events (company member changes and links on the bot's domains arrive without adding it to a chat) ### TypeScript webhook handler (Express.js) ```typescript import express from "express" import crypto from "crypto" -const SIGNING_SECRET = "your_signing_secret" // From bot settings → Outgoing Webhook +const SIGNING_SECRET = "your_signing_secret" // Bot card → Outgoing webhook → Signing secret const app = express() app.post("/webhook", express.raw({ type: "application/json" }), (req, res) => { @@ -425,7 +434,7 @@ app.listen(3000) import hmac, hashlib, json, time from flask import Flask, request, abort -SIGNING_SECRET = "your_signing_secret" # From bot settings → Outgoing Webhook +SIGNING_SECRET = "your_signing_secret" # Bot card → Outgoing webhook → Signing secret app = Flask(__name__) @app.route("/webhook", methods=["POST"]) @@ -462,10 +471,10 @@ def webhook(): | view_submit | Form submitted | payload (form field values), user_id, trigger_id | | chat_member (new/delete) | Member added/removed from chat | chat_id, user_id, event | | company_member (new/update/delete) | Workspace member changes | user_id, event (no chat needed) | -| link_shared | URL shared (unfurl bots) | url, message_id, chat_id | +| link_shared | URL on one of the bot's domains shared anywhere in the workspace | url, message_id, chat_id | ### Alternative: Polling (when webhook URL is not available) -Enable "Save event history" in bot settings, then poll: +Enable "Save event history" on the bot's Outgoing webhook tab (or `events_history_enabled` via the API when there is no URL at all), then poll: ```typescript // Poll for events periodically const events = await client.bots.getWebhookEvents() @@ -955,9 +964,10 @@ curl "https://api.pachca.com/api/shared/v1/messages" \ ## Боты и автоматизации -Создавайте ботов, обрабатывайте команды, добавляйте кнопки и формы в сообщения, получайте события через вебхуки. +Создавайте ботов, обрабатывайте команды, добавляйте кнопки и формы в сообщения, получайте события через вебхуки и работайте с данными сотрудников их правами. - [Боты](/guides/bots/overview) — Создание и настройка ботов +- [От имени сотрудника](/guides/oauth/overview) — Бот работает правами сотрудника - [Кнопки](/guides/buttons) — Ссылки и действия в сообщениях - [Формы](/guides/forms/overview) — Модальные окна с полями ввода - [Входящие вебхуки](/guides/incoming-webhooks) — Сообщения по URL без кода @@ -1017,10 +1027,10 @@ curl "https://api.pachca.com/api/shared/v1/messages" \ Для работы с API вам нужен токен доступа. Есть два способа его получить: -- **Персональный токен** — в интерфейсе Пачки: **Автоматизации** > **API** (доступно администраторам) -- **Токен бота** — создайте бота в **Автоматизации** > **Интеграции** > **Чат-боты и Вебхуки** или программно методом [Новый бот](/api/bots/create) +- **Персональный токен** — в интерфейсе Пачки: **Интеграции** > **API**. Кому доступна эта страница, решает владелец пространства +- **Токен бота** — создайте бота в **Интеграции** > **Боты** и выпустите токен на вкладке **API** его карточки, или программно методом [Новый бот](/api/bots/create) -> Подробнее о типах токенов и скоупах — в разделе [Авторизация](/api/authorization). +> Подробнее о типах токенов и скоупах — в разделе [Авторизация](/api/authorization). Если бот должен работать с данными сотрудников их правами, используйте [авторизацию от имени сотрудника](/guides/oauth/overview). ### Шаг 2. Проверьте токен @@ -1732,7 +1742,7 @@ GET /api/shared/v1/group_tags?names[]=Дизайн&names[]=Питер ## Что такое бот -Бот в Пачке — это посредник между вашим сервисом и мессенджером, действующий от своего имени. Он может отправлять и получать сообщения, реагировать на команды пользователей, открывать интерактивные формы и использовать другие методы, предоставляемые [API](/guides/quickstart). +Бот в Пачке — сервисный участник пространства, на котором строятся интеграции. У него есть имя, аватар и никнейм, он состоит в чатах, пишет сообщения и получает события, но действует от своего имени, а не от имени кого-то из сотрудников. Через ботов работают уведомления из внешних сервисов, чат-боты с командами, кнопки и формы, превью ссылок и автоматизации, которые действуют от имени сотрудника. ![Сообщение от бота в Пачке](/images/bots/bot_message.webp) @@ -1742,27 +1752,56 @@ GET /api/shared/v1/group_tags?names[]=Дизайн&names[]=Питер > **Внимание:** Бот имеет доступ не ко всем методам API. Например, добавление участников в пространство и экспорт сообщений доступны только с персональным токеном. Подробнее о токенах в разделе [Авторизация](/api/authorization). -> Бот позволяет работать с вебхуками, кнопками и формами в Пачке. Подробнее в разделах [Входящие вебхуки](/guides/incoming-webhooks), [Исходящие вебхуки](/guides/webhook/overview), [Кнопки в сообщениях](/guides/buttons), [Формы](/guides/forms/overview) и [Разворачивание ссылок](/guides/link-previews). +## С чего начать +Выберите строку по задаче, которую решает интеграция: -## Типы ботов +| Задача | Что включить у бота | Раздел | +| --- | --- | --- | +| Присылать в чат уведомления из CRM, CI/CD или мониторинга | Входящий вебхук | [Входящие вебхуки](/guides/incoming-webhooks) | +| Отвечать на сообщения и команды сотрудников | Исходящий вебхук и токен | [Первый диалог с ботом](/guides/bots/first-contact) | +| Писать в чаты и читать их из своего кода | Токен | [Токены бота](/guides/bots/tokens) | +| Спросить сотрудника прямо в сообщении | Кнопки или форма | [Кнопки в сообщениях](/guides/buttons), [Формы](/guides/forms/overview) | +| Показывать карточки ссылок на внутренние сервисы | Событие ссылок с доменами | [Разворачивание ссылок](/guides/link-previews) | +| Работать с данными сотрудника его правами: задачи, чаты, сервисы, где он работает | Авторизация от имени сотрудника | [Авторизация от имени сотрудника](/guides/oauth/overview), [Чек-лист запуска](/guides/oauth/checklist) | +| Дать сотрудникам найти и подключить бота самим | Публичный бот или публикация в витрине | [Витрина](/guides/bots/showcase) | + +## Где бот находится в интерфейсе + +Боты пространства собраны в разделе **Интеграции** > **Боты** на двух вкладках: + +- **Обзор** — витрина: публичные боты и опубликованные боты с авторизацией. Её видят сотрудники, администраторы и мульти-гости. +- **Управление** — боты, которых вы можете редактировать. Вкладка и кнопка **Создать бота** в шапке раздела есть у тех, кому разрешено создавать интеграции. -Тип выбирается при создании и не меняется. Подробнее о создании — в разделе [Создание и настройка](/guides/bots/setup). +![Список ботов на вкладке «Управление»: название, создатель, число авторизаций, дата создания и последнее использование](/images/bots/bots_management.webp) -- **Для одного чата** — подойдёт для отправки уведомлений из других сервисов. В одном чате можно собрать всех получателей и обсуждать уведомления в тредах. -- **Для нескольких чатов** — подойдёт, если вы хотите создать личное взаимодействие бота с каждым участником вашей компании или разными группами участников. -- **Unfurl бот** (только администраторам) — подойдёт для получения событий об отправке ссылок во всех чатах вашего пространства и возможности создавать их предпросмотр. +*Вкладка «Управление»* -Ограничение «для одного чата» распространяется только на каналы и беседы — бот по-прежнему может участвовать в тредах и личных сообщениях. Бот любого типа может быть настроен как публичный. -## Доступность бота +На вкладке **Управление** собраны боты, которых вы можете редактировать: созданные вами и те, чьи настройки открывают вам доступ. Для каждого видны создатель, число сотрудников, [авторизовавших бота](/guides/oauth/overview), дата создания и когда бот последний раз обращался к API или получал вебхук. Нажатие на строку открывает карточку бота, а в меню бота есть ещё его профиль и удаление. -Бот взаимодействует с пространством как участник с ролью **«Сотрудник»**: видит открытые каналы, а в закрытые каналы, треды и личные сообщения его нужно подключать отдельно. Дополнительно бота можно сделать **публичным** — тогда любой участник пространства сможет начать с ним диалог и упоминать через `@никнейм`. +У каждого бота есть карточка с пятью вкладками, по одной на возможность: -> Бот получает [исходящие вебхуки](/guides/webhook/overview) только из тех чатов и тредов, в которых он состоит. Глобальные события (например, изменение участников пространства) приходят без добавления в чат. +![Карточка бота с вкладками «Основное», «Входящий вебхук», «Исходящий вебхук», «API» и «OAuth»](/images/bots/bot_webhook_api_settings.webp) + +*Карточка бота* + + +| Вкладка | Что настраивается | Раздел | +| --- | --- | --- | +| **Основное** | Профиль, публичность, кто добавляет бота в чаты и кто его редактирует | [Настройки бота](/guides/bots/settings) | +| **Входящий вебхук** | Адрес для внешних сервисов, источник и шаблон сообщения | [Входящие вебхуки](/guides/incoming-webhooks) | +| **Исходящий вебхук** | Адрес вашего сервера, подпись и события | [Исходящие вебхуки](/guides/webhook/overview) | +| **API** | Токены бота и их права | [Токены бота](/guides/bots/tokens) | +| **OAuth** | Авторизация от имени сотрудников, страница в витрине и запрашиваемый доступ | [Настройка авторизации](/guides/oauth/setup) | +Бот создаётся только с названием и ником, а каждую возможность включают на своей вкладке, когда она понадобится. Подробнее — в разделе [Создание бота](/guides/bots/setup). -Подробнее — в разделе [Доступы к чатам и сообщениям](/guides/bots/access). +## Бот и сотрудник + +Бот взаимодействует с пространством как участник с ролью **«Сотрудник»**: видит открытые каналы вместе с их тредами. В закрытые каналы и беседы его добавляют участником, а в отдельный тред можно добавить и без родительского чата. Публичного бота сотрудники находят в поиске, пишут ему и добавляют в чаты. Подробнее — в разделе [Доступы к чатам и сообщениям](/guides/bots/access). + +Своими правами бот ограничен: он не видит чужие личные переписки и не может действовать как конкретный сотрудник. Когда автоматизации нужны права самого сотрудника, например чтобы собрать сводку по его чатам, завести задачу от его имени или связать его аккаунт в другом сервисе с Пачкой, сотрудник авторизует бота: один раз соглашается на экране согласия, и дальше бот работает от его имени. Подробнее — в разделе [Авторизация от имени сотрудника](/guides/oauth/overview). ## Подмена имени и аватара отправителя @@ -1771,7 +1810,7 @@ GET /api/shared/v1/group_tags?names[]=Дизайн&names[]=Питер *Сообщение от бота с подменой имени и аватара* -Метод [Новое сообщение](/api/messages/create) поддерживает поля `display_name` и `display_avatar_url`, позволяющие указать произвольное имя и аватар отправителя для конкретного сообщения. Бейдж **Бот** при этом сохраняется, а при открытии профиля отправителя пользователь увидит оригинальное имя и аватар бота. +Метод [Новое сообщение](/api/messages/create) поддерживает поля `display_name` и `display_avatar_url`, позволяющие указать произвольное имя и аватар отправителя для конкретного сообщения. Бейдж **Бот** при этом сохраняется, а при открытии профиля отправителя сотрудник увидит оригинальное имя и аватар бота. Это полезно для миграции сообщений из другого сервиса: бот отправляет сообщения от своего имени, но каждое сообщение отображается с именем и аватаром реального автора из исходной системы. @@ -1781,9 +1820,9 @@ GET /api/shared/v1/group_tags?names[]=Дизайн&names[]=Питер ## Связанные разделы -- [Создание и настройка](/guides/bots/setup) -- [Доступы к чатам и сообщениям](/guides/bots/access) -- [Готовые примеры реализации](/guides/bots/examples) +- [Создание бота](/guides/bots/setup) +- [Первый диалог с ботом](/guides/bots/first-contact) +- [Авторизация от имени сотрудника: Обзор](/guides/oauth/overview) - [Исходящие вебхуки](/guides/webhook/overview) --- @@ -1791,51 +1830,50 @@ GET /api/shared/v1/group_tags?names[]=Дизайн&names[]=Питер --- [Document source](https://dev.pachca.com/guides/bots/setup.md) --- -# Создание и настройка +# Создание бота Бота можно создать двумя способами: -- **Через интерфейс** — отдельные настройки (тип бота, аватар) и наглядная пошаговая форма. Подходит для разовой ручной настройки. +- **Через интерфейс** — в разделе **Интеграции** > **Боты**. Подходит для ручной настройки: у каждой возможности бота своя вкладка в его карточке. - **Через API** ([Новый бот](/api/bots/create)) — программно, без интерфейса. Подходит для автоматизации: завести бота из своего сервиса или скрипта и сразу получить `access_token`. -## Создание бота через интерфейс +> **Внимание:** Создавать ботов могут администраторы и сотрудники, а владелец или администратор пространства может оставить это только администраторам. Подробнее — в разделе [Кто может создавать токены](/api/authorization#kto-mozhet-sozdavat-tokeny). -> **Внимание:** Создание и настройка ботов через интерфейс доступны в веб-версии и десктопном приложении Пачки. В мобильных приложениях (iOS и Android) эта возможность недоступна. +## Создание бота через интерфейс -Для создания бота перейдите в **Автоматизации** > **Интеграции** > **Чат-боты и Вебхуки** и нажмите кнопку **«+»**. +> **Внимание:** Создание и настройка ботов через интерфейс доступны в веб-версии и десктопном приложении Пачки. В мобильных приложениях (iOS и Android) эта возможность недоступна. -![Новый бот](/images/bots/bot_new.webp) -*Новый бот* +Откройте **Интеграции** > **Боты** и нажмите **Создать бота**. В диалоге два поля: +- **Название** — имя бота в чатах и в его профиле. +- **Ник для @упоминаний** — можно оставить пустым, тогда ник соберётся из названия. Ник уникален в пространстве и оканчивается на `_bot`. -> **Внимание:** Владелец пространства может ограничить, кто может создавать ботов. Подробнее в разделе [настройка доступа](/api/authorization#kto-mozhet-sozdavat-tokeny). +![Диалог создания бота с полями «Название» и «Ник для @упоминаний»](/images/bots/bot_new.webp) +*Создание бота* - ### Шаг 1. Выберите тип бота -- **Для одного чата** — подойдёт для отправки уведомлений из других сервисов. В одном чате можно собрать всех получателей и обсуждать уведомления в тредах. -- **Для нескольких чатов** — подойдёт, если вы хотите создать личное взаимодействие бота с каждым участником вашей компании или разными группами участников. -- **Unfurl бот** (только администраторам) — подойдёт для получения событий об отправке ссылок во всех чатах вашего пространства и возможности создавать их предпросмотр. +После создания откроется карточка бота. Бот создаётся без токенов и вебхуков, а каждая возможность включается на своей вкладке, когда понадобится. Чаще всего сразу нужны три шага: -Тип бота нельзя изменить после создания. Ограничение «для одного чата» распространяется только на каналы и беседы — бот по-прежнему может участвовать в тредах и личных сообщениях. Бот любого типа может быть настроен как публичный. + ### Шаг 1. Выпустите токен - ### Шаг 2. Скопируйте токен +На вкладке **API** нажмите **Создать токен**, задайте название и права. Значение токена показывается один раз: скопируйте его до закрытия окна. Подробнее — в разделе [Токены бота](/guides/bots/tokens). -После создания бота перейдите на вкладку **API** и скопируйте `access_token` — он потребуется для работы с API от имени бота. Токен не имеет срока жизни. Там же доступен `user_id` бота — используется, например, в методе [Добавление пользователей](/api/members/add). + ### Шаг 2. Настройте доступ - ### Шаг 3. Измените название и аватар (опционально) +На вкладке **Основное** решите, кто может добавлять бота в чаты и кто может его редактировать, и нужен ли публичный бот. Там же меняются имя, аватар и ник. Подробнее — в разделе [Настройки бота](/guides/bots/settings). -На вкладке **Основное** вы можете изменить имя бота и загрузить изображение — они будут отображаться в сообщениях от бота и в его профиле. + ### Шаг 3. Включите исходящий вебхук - ### Шаг 4. Настройте исходящий вебхук (опционально) +Чтобы бот узнавал о сообщениях и нажатиях кнопок, на вкладке **Исходящий вебхук** нажмите **Включить**, укажите URL своего сервера и отметьте события. Для новых сообщений выберите режим: новый бот слушает только команды, а их список пуст. Подробнее — в разделе [Первый диалог с ботом](/guides/bots/first-contact). -Для получения событий от Пачки перейдите на вкладку **Исходящий Webhook**: укажите **Webhook URL**, на который будут приходить уведомления, и выберите типы событий (новые сообщения, реакции, нажатия кнопок и другие). Подробнее — в разделе [Исходящие вебхуки](/guides/webhook/overview). +Созданный бот появится на вкладке **Управление** — подробнее в разделе [Где бот находится в интерфейсе](/guides/bots/overview#gde-bot-nahoditsya-v-interfeyse). ## Создание бота через API @@ -1844,91 +1882,325 @@ GET /api/shared/v1/group_tags?names[]=Дизайн&names[]=Питер ### Шаг 1. Отправьте запрос на создание -Передайте параметры бота в объекте `bot.webhook`: имя, никнейм, Webhook URL, список событий и команды. Никнейм должен заканчиваться на `_bot`. +Передайте параметры бота в объекте `webhook`: имя, никнейм, Webhook URL, список событий и команды. Обязательное поле одно — имя. Никнейм должен заканчиваться на `_bot`. -Обязательное поле одно — имя. Его и никнейм можно передать и на уровне `bot`, тогда объект `bot.webhook` не нужен: `{"bot": {"name": "Бот задач"}}` создаст бота с настройками вебхука по умолчанию. +По умолчанию `trigger_on` равен `commands`, а список команд пуст, поэтому о новых сообщениях бот не узнает. Если бот должен отвечать на сообщения, передайте `trigger_on: "all_messages"` или перечислите команды в `commands`. -Тип бота — в один или несколько чатов — задаётся полем `single_chat` и только при создании: изменить его потом нельзя, как и тип бота в интерфейсе. Ограничение «в один чат» распространяется только на беседы и каналы, треды и личные сообщения не в счёт. +В том же запросе можно включить авторизацию от имени сотрудника объектом `oauth_client` — подробнее в разделе [Настройка авторизации](/guides/oauth/setup#cherez-api). ### Шаг 2. Сохраните access_token -В ответе вы получите `access_token` бота — сразу сохраните его. Посмотреть выданный токен повторно можно только в интерфейсе (вкладка **API** настроек бота), а вот перевыпустить — и там, и через API. Вместе с токеном придёт `id` бота (его `user_id`). +В ответе вы получите `access_token` бота — сразу сохраните его. Повторно значение не показывается ни в интерфейсе, ни через API: потерянный токен перевыпускают. Вместе с токеном придёт `id` бота (его `user_id`). + +Бот, созданный через API, сразу принимает запросы на входящий вебхук в своём формате, с шаблонизатором Liquid. Подробнее — в разделе [Входящие вебхуки](/guides/incoming-webhooks). -Получить параметры существующего бота можно методом [Информация о боте](/api/bots/get), а изменить — методом [Редактирование бота](/api/bots/update). Бот может и сам прописать `URL` своего исходящего вебхука собственным токеном — методом [Саморегистрация вебхука бота](/api/bots/update-webhook), без участия администратора. +Чтобы создать бота как в интерфейсе, без токена и входящего вебхука, передайте `empty: true`. Токены такому боту выпускают методом [Новый токен бота](/api/bots/create-token), а входящий вебхук включают полем `kind`. -Остальной жизненный цикл бота тоже доступен через API: +## Жизненный цикл через API + +Получить параметры существующего бота можно методом [Информация о боте](/api/bots/get), а изменить — методом [Редактирование бота](/api/bots/update). Бот может и сам прописать `URL` своего исходящего вебхука собственным токеном — методом [Саморегистрация вебхука бота](/api/bots/update-webhook), без участия администратора. Для этого токену нужно право `bot_self:webhook:write`: по умолчанию его нет, выдают его на вкладке **API**. - [Список ботов](/api/bots/list) — боты, доступные вам для редактирования, с поиском по имени в параметре `query`. Полный перечень ботов пространства доступен Владельцу отдельным методом, см. [Права и роли](/guides/permissions#inventarizatsiya-botov-prostranstva). -- [Ротация токена бота](/api/bots/recreate-token) — перевыпуск токена чужому боту (скоуп `bots:write`), и [Ротация собственного токена бота](/api/bots/recreate-token-self) — бот перевыпускает токен сам себе (скоуп `bot_self:write`). Прежний токен инвалидируется сразу, новый приходит в ответе один раз. -- [Удаление бота](/api/bots/delete) — токен инвалидируется, бот исключается из чатов, его исходящий вебхук удаляется. +- [Список токенов бота](/api/bots/list-tokens), [Новый токен бота](/api/bots/create-token) и соседние методы — токены бота со своими именами и правами. Подробнее — в разделе [Токены бота](/guides/bots/tokens#tokeny-cherez-api). +- [Ротация токена бота](/api/bots/recreate-token) и [Ротация собственного токена бота](/api/bots/recreate-token-self) — перевыпуск основного токена. +- [Ротация секрета клиента](/api/bots/rotate-client-secret) — новый `client_secret` для авторизации от имени сотрудника. +- [Удаление бота](/api/bots/delete) — токены отзываются, бот исключается из бесед, каналов и тредов, его вебхуки удаляются. + +Изменения бота попадают в [журнал аудита](/guides/audit-events): выпуск, изменение и перевыпуск токенов, смена адреса исходящего вебхука, настроек истории событий и своих сообщений, списков доступа к боту, смена настроек авторизации, обновление секрета, выключение авторизации и удаление бота. + + +## Связанные разделы + +- [Настройки бота](/guides/bots/settings) +- [Токены бота](/guides/bots/tokens) +- [Первый диалог с ботом](/guides/bots/first-contact) +- [Исходящие вебхуки](/guides/webhook/overview) + +--- + +--- [Document source](https://dev.pachca.com/guides/bots/settings.md) --- + + +# Настройки бота + +Эти настройки находятся на вкладке **Основное** в карточке бота. Они решают, как бот выглядит, кому он доступен и кто может его менять. + +![Вкладка «Основное» в карточке бота: профиль, создатель, ограничение одним чатом, публичность и доступы](/images/bots/bot_main_settings.webp) + +*Вкладка «Основное» в карточке бота* + ## Профиль бота -Бот, как и любой участник пространства, имеет свой профиль. В нём отображаются имя, аватар, никнейм, статус и список общих чатов с ботом. Профиль бота можно редактировать — изменить имя, никнейм и другие поля. +Бот, как и любой участник пространства, имеет свой профиль. В нём отображаются имя, аватар, никнейм, статус и список общих чатов с ботом. Изменить имя, аватар и никнейм можно кнопкой **Редактировать** в шапке вкладки. Там же указан создатель бота. + +**Никнейм** — уникальный идентификатор бота для упоминания через `@`. Именно по никнейму сотрудники могут упоминать бота в сообщениях и добавлять его в [сквозные треды](/guides/bots/access#tredy). Никнейм оканчивается на `_bot`. Через API имя и никнейм меняются методом [Редактирование бота](/api/bots/update) в полях `webhook.name` и `webhook.nickname`, а аватар — методом [Загрузка аватара сотрудника](/api/users/update-avatar), он доступен владельцу и администраторам. -**Никнейм** — уникальный идентификатор бота для упоминания через `@`. Именно по никнейму сотрудники могут упоминать бота в сообщениях и добавлять его в [сквозные треды](/guides/bots/access#tredy). Никнейм и другие поля профиля можно изменить через интерфейс или через API — метод [Редактирование сотрудника](/api/users/update). +## Ограничить одним чатом -## Настройка доступов +Если включить эту настройку, в интерфейсе бота можно будет добавить только в одну беседу или канал, а личные чаты и треды под ограничение не попадают. Бот, который уже состоит в беседе или канале, пропадает из списка добавления. Подходит простым интеграциям вроде уведомлений: в одном чате собираются все получатели, а уведомления обсуждают в тредах. -Эти настройки находятся на вкладке **Основное**. +## Кто может добавлять бота в чаты -![Настройка доступов к боту](/images/bots/bot_main_settings.webp) +Переключатель **Публичный бот** открывает бота всему пространству: он появляется в поиске и на вкладке **Обзор** в [витрине](/guides/bots/showcase), написать ему может любой участник пространства. Добавить публичного бота в чаты и треды, в том числе упоминанием в сообщении, может любой сотрудник, кроме гостей и мульти-гостей. -*Настройка доступов к боту* +Непубличного бота добавляют в каналы и беседы только те, кого выбрали в списке **Кто может добавлять бота в чаты**: +- **Создатель** — только создатель бота, так у нового бота по умолчанию +- **Создатель и Администраторы** — создатель, владелец и администраторы пространства +- **Все участники (кроме гостей)** — любой сотрудник пространства -### Кто может редактировать настройки бота +Если выключить **Публичный бот**, в списке будет выбрано **Создатель и Администраторы**. -Управление доступов участников пространства к поиску бота в разделе **Чат-боты и Вебхуки** и редактированию его настроек (основных, вебхуков и токена API): +Правило одинаково для всех способов добавления: в интерфейсе, упоминанием и через API. Гости и мульти-гости ботов в чаты не добавляют ни при какой настройке. Через API запрос с таким ботом отклоняется целиком: методы [Добавление пользователей](/api/members/add) и [Новый чат](/api/chats/create) отвечают `403` с кодом `bot_add_denied` и идентификаторами таких ботов, никого не добавляют и чат не создают. -- **Создатель** — этот пункт нельзя отключить, создатель бота всегда имеет доступ к настройкам бота +Написать непубличному боту в личные сообщения можно только при общем чате с ним или после того, как бот написал первым. Подробнее — в разделе [Первый диалог с ботом](/guides/bots/first-contact). + +## Кто может редактировать настройки бота + +Кому открыта карточка бота и кто видит его на вкладке **Управление**: + +- **Создатель** — отключить нельзя. Если создавать интеграции разрешено только администраторам, создатель без этой роли теряет доступ к своему боту. - **Администраторы** — владелец и участники пространства с ролью «Администратор» -- **Создатели и руководители чатов, в которые добавлен бот** — этот пункт позволяет управлять доступом к редактированию бота на уровне ролей в чате, куда добавлен бот +- **Руководители бесед и каналов, в которые добавлен бот** — доступ по роли в чате, куда добавлен бот + +У нового бота по умолчанию доступ есть только у создателя: администраторы не видят бота на вкладке **Управление**, пока создатель не отметит **Администраторы**. + +Руководители чатов меняют настройки и вебхуки бота. Имя, токены, авторизация от имени сотрудника, страница в витрине и удаление бота доступны только создателю и администраторам: токен открывает работу от имени бота, поэтому администраторам доступ выдавайте там, где доверили бы им сам токен. Что из этого доступно владельцу токена, в API показывает поле `permissions` в объекте бота. + +## Удаление бота + +Удалить бота можно кнопкой **Удалить бота** внизу вкладки. Бот исчезнет из всех бесед, каналов и тредов, его токены будут отозваны, а вебхуки и выданные ему авторизации перестанут работать. Удаление нельзя отменить. Через API — метод [Удаление бота](/api/bots/delete). + +## Настройка через API + +Те же настройки задаются методом [Редактирование бота](/api/bots/update) или сразу при создании методом [Новый бот](/api/bots/create): + +| Настройка | Поле | Значения | +| --- | --- | --- | +| Имя и никнейм | `webhook.name`, `webhook.nickname` | строки, никнейм оканчивается на `_bot` | +| Кто может добавлять бота в чаты | `who_can_add` | `creator`, `creator_admin`, `creator_admin_user`, а публичному боту соответствует `anyone` | +| Кто может редактировать настройки бота | `can_edit` | роли `admin` и `chat_owners`. Создатель имеет доступ всегда, поэтому пустой массив означает «только создатель» | +| Ограничить одним чатом | `single_chat` | `true` или `false` | + + +## Связанные разделы + +- [Доступы к чатам и сообщениям](/guides/bots/access) +- [Токены бота](/guides/bots/tokens) +- [Витрина](/guides/bots/showcase) +- [Права и роли](/guides/permissions) + +--- + +--- [Document source](https://dev.pachca.com/guides/bots/tokens.md) --- + + +# Токены бота + +Токен бота — ключ, которым ваш код обращается к [API](/guides/quickstart) от имени бота: отправляет сообщения, читает чаты, открывает формы. Токены выпускаются на вкладке **API** в карточке бота. Там же указан `user_id` бота: это его `id` в методах API. + +Вкладка **API** доступна создателю бота и администраторам пространства, если на вкладке **Основное** им открыт доступ к редактированию. Руководителю чата с ботом токены не видны, даже когда остальные настройки бота ему открыты — подробнее в разделе [Настройки бота](/guides/bots/settings#kto-mozhet-redaktirovat-nastroyki-bota). + +```http title="Заголовок авторизации" +Authorization: Bearer <токен бота> +``` + +## Выпуск токена + +![Вкладка «API» в карточке бота: user_id и список токенов бота с кнопкой «Создать токен»](/images/bots/bot_tokens.webp) + +*Вкладка «API» в карточке бота* + + + ### Шаг 1. Создайте токен + +На вкладке **API** нажмите **Создать токен** и задайте название — по нему токен узнаётся в списке, например по имени сервиса, который им пользуется. + + + ### Шаг 2. Выберите права + +Права задаются на каждый токен отдельно. Выдавайте минимально необходимые: токен для уведомлений не должен уметь удалять сообщения. Нужное право можно найти поиском по названию. + +![Окно «Создание токена бота»: название токена, поиск и список прав по категориям](/images/bots/bot_token_new.webp) + +*Окно «Создание токена бота»* + + + ### Шаг 3. Скопируйте значение + +Значение токена показывается один раз, сразу после создания, в окне **Скопируйте ваш API токен**. Скопируйте его кнопкой **Скопировать и закрыть** — повторно значение не покажут ни в интерфейсе, ни через API. + + +Токены бота не имеют срока жизни: токен работает, пока его не перевыпустят, не удалят или пока не удалят самого бота. + +## Несколько токенов + +У бота может быть несколько токенов, у каждого своё название и свои права. Удобно выпускать отдельный токен на каждый сервис, который работает от имени бота: если один из них скомпрометирован или больше не нужен, его отзывают, не трогая остальные. + +В списке у каждого токена видны первые и последние символы значения, число выданных разрешений, дата создания и когда токен последний раз использовался. Меню токена позволяет: + +- **Список разрешений** — посмотреть, что токену разрешено +- **Редактировать** — изменить название и права. Новые права действуют сразу, выпускать токен заново не нужно. +- **Перевыпустить** — старое значение перестаёт работать сразу, новое показывается один раз, а название и права сохраняются +- **Удалить** — токен перестаёт работать, восстановить его нельзя. Если токеном пользовались в последние 7 дней, диалог удаления предупредит об этом. + +## Права токена + +Права определяют, какие методы API можно вызывать этим токеном. Круг данных они не расширяют: бот видит открытые каналы и чаты, куда его добавили, какие бы права ни были у токена. Подробнее — в разделе [Доступы к чатам и сообщениям](/guides/bots/access). + +Часть прав есть только у ботов: + +- `bot_self:webhook:write` — бот сам меняет адрес своего исходящего вебхука методом [Саморегистрация вебхука бота](/api/bots/update-webhook). Так делает, например, [n8n](/guides/n8n/trigger) в автоматическом режиме. +- `bot_self:write` — бот сам перевыпускает свой токен методом [Ротация собственного токена бота](/api/bots/recreate-token-self). + +Права для черновиков, управления ботами и другие права, которые выдаются только персональным токенам, боту недоступны. Полная таблица прав по ролям — в разделе [Доступные скоупы](/api/authorization#dostupnye-skoupy). Проверить права текущего токена можно методом [Информация о токене](/api/oauth/token-info). + +## Токены через API + +Токенами бота управляют те же методы, что стоят за вкладкой **API**: + +- [Список токенов бота](/api/bots/list-tokens) — действующие токены с замаскированным значением. +- [Новый токен бота](/api/bots/create-token) — токен с именем и правами. Значение приходит в ответе один раз. +- [Изменение токена бота](/api/bots/update-token) — новое имя или права, они действуют сразу. +- [Перевыпуск токена бота](/api/bots/reissue-token) — новое значение вместо прежнего, имя и права остаются. +- [Удаление токена бота](/api/bots/delete-token) — токен перестаёт работать сразу. + +Права выбирают из каталога: [Каталог прав бота](/api/bots/list-scopes) перечисляет права, которые можно выдать этому боту, с описаниями и категориями, как на вкладке. Методы вызывают персональным токеном со скоупами `bots:read` и `bots:write`. + +Бот, созданный методом [Новый бот](/api/bots/create), сразу получает основной токен: он приходит в поле `access_token` один раз, а его права задаются полем `webhook.scopes`, без которого бот получит набор по умолчанию. С `empty: true` бот создаётся без токена, как в интерфейсе. + +Основной токен — тот, что в списке без имени, а если такого нет, самый старый. К нему относятся поле `webhook.scopes` метода [Редактирование бота](/api/bots/update) и два метода ротации: [Ротация токена бота](/api/bots/recreate-token) перевыпускает его персональным токеном, а [Ротация собственного токена бота](/api/bots/recreate-token-self) — сам бот, с правом `bot_self:write`. Ротация выпускает основной токен заново: прежнее значение перестаёт работать сразу, у нового другой `id` и нет имени, а значение приходит в ответе один раз. + +Если у бота нет ни одного токена, `webhook.scopes` создаёт основной токен, но его значение не возвращает. Чтобы получить значение, перевыпустите токен. + +## Если токен утёк + +Перевыпустите токен кнопкой **Перевыпустить** или методом [Перевыпуск токена бота](/api/bots/reissue-token): старое значение перестанет работать в ту же секунду. Затем обновите токен в сервисах, которые им пользуются. Если токен больше не нужен, удалите его. + +Токен в руках — это доступ ко всем данным бота. Не храните его в коде и репозиториях, передавайте через переменные окружения и хранилища секретов. + + +## Связанные разделы + +- [Авторизация](/api/authorization) +- [Настройки бота](/guides/bots/settings) +- [Первый диалог с ботом](/guides/bots/first-contact) + +--- + +--- [Document source](https://dev.pachca.com/guides/bots/first-contact.md) --- + + +# Первый диалог с ботом + +Чат-бот начинается с того, что сотрудник ему пишет. Здесь — как сотрудник попадает к боту, что происходит в этот момент и что нужно настроить, чтобы бот ответил. + +## Как сотрудник попадает к боту + +Написать боту в личные сообщения можно в трёх случаях: + +- **Бот публичный** — сотрудник находит его в поиске или на вкладке **Обзор** в [витрине](/guides/bots/showcase) и нажимает **Сообщение**. +- **Есть общий чат** — сотрудник и бот состоят в одной беседе или канале, и этот чат не в архиве. Непубличному боту этого достаточно. +- **Бот написал первым** — бот отправил сотруднику сообщение методом [Новое сообщение](/api/messages/create) с `entity_type: "user"`. После этого сотрудник может отвечать, даже если бот не публичный. + +Публикация в витрине сама по себе написать боту не позволяет: у опубликованного, но непубличного бота кнопки **Сообщение** нет, если с ним нет общего чата. Подробнее о доступах — в разделе [Доступы к чатам и сообщениям](/guides/bots/access). + +## Почему бот молчит + +> **Внимание:** **Личный чат создаётся молча.** Когда сотрудник открывает переписку с ботом, события об этом нет — ни о новом чате, ни о новом участнике. Бот узнаёт о сотруднике только из его первого сообщения, поэтому первый ход всегда за сотрудником. + + +> **Внимание:** **Новый бот слушает только команды, а их список пуст.** Так у любого бота — созданного и в интерфейсе, и методом [Новый бот](/api/bots/create): по умолчанию выбран режим **Начинающиеся с команд**, а команд нет. О новых сообщениях такой бот не узнает, и ошибки при этом нет — в ответе метода видно только `trigger_on: "commands"` и пустой `commands`. + -### Кто может добавлять бота в чаты +## Что настроить заранее -Первые три варианта оставляют бота закрытым и доступным для работы только через добавление его в каналы и беседы. Вариант **Публичный бот** предоставляет всем участникам пространства доступ к работе с ботом: в поиске, через личные сообщения, добавление в тред через упоминание бота в сообщении и тд. +До того как сотрудник напишет, у бота должно быть: -- **Создатель** -- **Создатель и Администраторы** -- **Все участники (кроме гостей)** -- **Публичный бот** -### Настройка через API + ### Шаг 1. Исходящий вебхук с адресом -Эти доступы можно задать не только в интерфейсе, но и через API — методом [Редактирование бота](/api/bots/update) или сразу при создании: +На вкладке **Исходящий вебхук** нажмите **Включить** и укажите URL своего сервера. Локальные и внутренние адреса не принимаются, для разработки подойдёт туннель. Через API — поле `outgoing_url`. -- **Кто может редактировать настройки бота** — поле `can_edit` (роли `admin` и `chat_owners`). Создатель имеет доступ всегда, поэтому в поле перечисляются только дополнительные роли, а пустой массив означает «только создатель». -- **Кто может добавлять бота в чаты** — поле `who_can_add` (`creator`, `creator_admin`, `creator_admin_user`, `anyone`) -## Настройка вебхуков и API + ### Шаг 2. Событие о новых сообщениях и режим -![Вкладки настройки вебхуков и API бота](/images/bots/bot_webhook_api_settings.webp) +Включите **Новые сообщения** и выберите **Любые сообщения** — тогда бот получит всё, что ему пишут. Если бот работает по командам, выберите **Начинающиеся с команд** и перечислите их, включая ту, с которой начинается разговор, например `/start`. Через API — `events` с `message_new` и `trigger_on` со значением `all_messages` или `commands` вместе с `commands`. -*Вкладки настройки вебхуков и API бота* +Если в ответах будут Data-кнопки или формы, включите и событие **Нажатие кнопок** (`button_click`): без него нажатия и отправленные формы до бота не дойдут. -### Входящий Webhook + ### Шаг 3. Проверка подписи и свои сообщения -Позволяет отправлять сообщения в чат от имени бота одним HTTP-запросом — без использования API. В настройках доступны **Webhook URL**, выбор формата отображения (Liquid или Mustache), шаблон сообщения и поле для верификации (например, для интеграции с monday.com). Подробнее — в разделе [Входящие вебхуки](/guides/incoming-webhooks). +Проверяйте подпись каждого запроса по **Signing secret**, чтобы отличать запросы Пачки от чужих. Включите **Игнорировать свои сообщения**, чтобы бот не реагировал на собственные ответы. Подробнее — в разделе [Безопасность и обработчик](/guides/webhook/handler). -### Исходящий Webhook -Позволяет получать уведомления о событиях в реальном времени на указанный вами URL. В настройках доступны **Webhook URL**, **Signing secret** для проверки подлинности запросов, выбор типов событий (новые сообщения, реакции, нажатия кнопок, изменение участников и другие) и фильтрация по командам. Подробнее — в разделе [Исходящие вебхуки](/guides/webhook/overview). + ### Шаг 4. Токен с правом отправки сообщений -### API +Чтобы ответить, нужен токен бота с правом `messages:create`. Подробнее — в разделе [Токены бота](/guides/bots/tokens). -Вкладка с `access_token` и `user_id` бота для работы с [REST API](/guides/quickstart). Токен не имеет срока жизни, но при необходимости его можно перевыпустить кнопкой «Обновить Access token» или методом [Ротация токена бота](/api/bots/recreate-token). Здесь же выбираются скоупы токена — им соответствует поле `scopes` в методах создания и редактирования бота. Подробнее — в разделе [Авторизация](/api/authorization). + +Так выглядит вкладка **Исходящий вебхук** с этими настройками: + +![Вкладка «Исходящий вебхук»: Webhook URL, Signing secret, «Игнорировать свои сообщения», событие «Новые сообщения» с режимом и «Нажатие кнопок»](/images/outgoing-webhook.webp) + +*Вкладка «Исходящий вебхук» в карточке бота* + + +Если бот авторизует сотрудников, к этому добавляется настройка вкладки **OAuth**. Всё вместе собрано в [Чек-листе запуска](/guides/oauth/checklist). + +## Ответ на первое сообщение + +Сотрудник пишет `/start` или сразу свой вопрос. Бот получает событие о новом сообщении: в личной переписке `entity_type` равен `"user"`, а `user_id` — идентификатор сотрудника. + +![Сотрудник пишет боту /start, бот отвечает приветствием и кнопкой «Предоставить доступ»](/images/bots/first_contact.webp) + +*Ответ бота на /start* + + +```json title="Событие о первом сообщении" +{ + "type": "message", + "event": "new", + "id": 1245817, + "entity_type": "user", + "entity_id": 2345, + "chat_id": 9012, + "user_id": 2345, + "content": "/start", + "created_at": "2026-09-24T09:30:00.000Z", + "webhook_timestamp": 1790242200 +} +``` + +Ответ отправляется методом [Новое сообщение](/api/messages/create) в ту же переписку — с `entity_type: "user"` и `entity_id`, равным `user_id` из события. К приветствию удобно сразу приложить [кнопки](/guides/buttons): Data-кнопки для частых действий или URL-кнопку, если сотруднику нужно что-то открыть. + +```bash title="Приветствие с кнопкой" +curl -X POST https://api.pachca.com/api/shared/v1/messages \ + -H "Authorization: Bearer $BOT_TOKEN" \ + -H "Content-Type: application/json" \ + -d '{ + "message": { + "entity_type": "user", + "entity_id": 2345, + "content": "Привет! Я помогу с заявками на отпуск.", + "buttons": [[{ "text": "Новая заявка", "data": "vacation_new" }]] + } + }' +``` + +Нажатие Data-кнопки придёт отдельным событием, если у бота включено **Нажатие кнопок**. Подробнее — в разделе [Кнопки в сообщениях](/guides/buttons). Если боту нужны права самого сотрудника, например чтобы работать с его задачами, в приветствии отправляют кнопку авторизации — подробнее в разделе [Получение токена](/guides/oauth/flow). ## Связанные разделы - [Доступы к чатам и сообщениям](/guides/bots/access) -- [Готовые примеры реализации](/guides/bots/examples) -- [Входящие вебхуки](/guides/incoming-webhooks) -- [Исходящие вебхуки](/guides/webhook/overview) +- [Исходящие вебхуки: Настройка и типы событий](/guides/webhook/events) +- [Кнопки в сообщениях](/guides/buttons) +- [Авторизация от имени сотрудника: Чек-лист запуска](/guides/oauth/checklist) --- @@ -1944,8 +2216,8 @@ GET /api/shared/v1/group_tags?names[]=Дизайн&names[]=Питер Чтобы бот получил доступ к закрытому каналу или беседе, его нужно добавить туда как участника. После добавления бот автоматически получает доступ ко всем тредам этого чата. Добавить бота в чат можно двумя способами: -- Через интерфейс — в диалоге **Добавление участников** на вкладке **Интеграции**. Список доступных ботов зависит от настройки [Кто может добавлять бота в чаты](/guides/bots/setup#kto-mozhet-dobavlyat-bota-v-chaty). -- Через API — метод [Добавление пользователей](/api/members/add), передав `user_id` бота в `member_ids`. +- Через интерфейс — в диалоге **Добавление участников** (в канале — **Добавление подписчиков**) на вкладке **Интеграции**. Список доступных ботов зависит от настройки [Кто может добавлять бота в чаты](/guides/bots/settings#kto-mozhet-dobavlyat-bota-v-chaty). +- Через API — метод [Добавление пользователей](/api/members/add), передав `id` бота в `member_ids`. Настройка действует и здесь: если вам добавлять бота нельзя, метод ответит `403` с кодом `bot_add_denied` и не добавит никого из запроса. ## Треды @@ -1953,17 +2225,13 @@ GET /api/shared/v1/group_tags?names[]=Дизайн&names[]=Питер Добавить бота в тред можно двумя способами: - Через API — метод [Добавление пользователей](/api/members/add), передав `chat_id` треда. -- Через упоминание `@никнейм_бота` в сообщении — доступно, когда бот настроен как **публичный**. +- Через упоминание `@никнейм_бота` в сообщении — доступно, когда бот настроен как **публичный**, всем, кроме гостей и мульти-гостей. ## Личные сообщения -Пользователь может писать боту личные сообщения и взаимодействовать с ним 1 на 1 в трёх случаях: +Написать боту в личные сообщения сотрудник может, если бот публичный, у них есть общая беседа или канал или бот написал ему первым. Подробнее об этих случаях и о том, что происходит при первом сообщении, — в разделе [Первый диалог с ботом](/guides/bots/first-contact#kak-sotrudnik-popadaet-k-botu). -- Бот настроен как **публичный** — любой участник пространства может начать диалог. -- Бот сам ранее отправил пользователю [Новое сообщение](/api/messages/create) через API (с `entity_type: "user"`) — после этого пользователь может отвечать, даже если бот не публичный. -- Бот и пользователь состоят в одной беседе или канале, и этот чат не в архиве — общего чата достаточно, чтобы открыть с ботом личную переписку. - -При этом бота нельзя добавить в существующие личные сообщения между двумя участниками пространства. +Бота нельзя добавить в существующие личные сообщения между двумя участниками пространства. ## Поиск бота @@ -1973,7 +2241,7 @@ GET /api/shared/v1/group_tags?names[]=Дизайн&names[]=Питер Одинаково для всех ролей, включая гостей и мульти-гостей: -- **Публичные боты** — везде в пространстве, даже если у пользователя нет с ними общих чатов. +- **Публичные боты** — везде в пространстве, даже если у сотрудника нет с ними общих чатов. - **Непубличные боты-участники текущего чата** — дополнительно, когда `@` набирается внутри этого чата. Непубличные боты, не состоящие в текущем чате, в подсказках упоминаний не появляются. @@ -1982,31 +2250,134 @@ GET /api/shared/v1/group_tags?names[]=Дизайн&names[]=Питер Поиск из общей строки поиска и при создании личных сообщений ведёт себя по-разному в зависимости от роли: -- **Сотрудники и администраторы** — видят и обычных пользователей, и публичных ботов в пространстве. -- **Гости и мульти-гости** — видят **только тех, с кем уже есть личные сообщения**. Бот появится в выдаче только если с ним уже была переписка — например, потому что бот сам ранее отправил пользователю [Новое сообщение](/api/messages/create). +- **Сотрудники и администраторы** — видят и сотрудников, и публичных ботов в пространстве. +- **Гости и мульти-гости** — видят только тех, с кем у них уже есть личные сообщения, а по запросу от трёх символов — ещё и участников общих чатов. + +Непубличных ботов глобальный поиск не показывает никому, даже если бот уже писал сотруднику: такому боту отвечают в уже открытой переписке. ### Список добавления участников в чат -Зависит от настройки [Кто может добавлять бота в чаты](/guides/bots/setup#kto-mozhet-dobavlyat-bota-v-chaty) каждого бота и роли пользователя: +Зависит от настройки [Кто может добавлять бота в чаты](/guides/bots/settings#kto-mozhet-dobavlyat-bota-v-chaty) каждого бота и роли того, кто добавляет: - **Создатель бота** — всегда видит ботов, которых он создал. -- **Администраторы** — видят ботов с настройками «Все участники», «Публичный бот», «Создатель и Администраторы». -- **Сотрудники** — видят ботов с настройками «Все участники» и «Публичный бот». +- **Администраторы** — видят публичных ботов и ботов с настройками «Все участники (кроме гостей)» и «Создатель и Администраторы». +- **Сотрудники** — видят публичных ботов и ботов с настройкой «Все участники (кроме гостей)». - **Гости и мульти-гости** — в выдаче пусто. -> Бот получает [исходящие вебхуки](/guides/webhook/overview) только из тех чатов и тредов, в которых он состоит. Глобальные события (например, изменение участников пространства) приходят без добавления в чат. +Бот с настройкой [Ограничить одним чатом](/guides/bots/settings#ogranichit-odnim-chatom), который уже состоит в беседе или канале, в списке не показывается никому, в том числе создателю. + +> Бот получает [исходящие вебхуки](/guides/webhook/overview) из чатов, где он состоит, из тредов этих чатов и из тредов, куда его добавили. Без добавления в чат приходят изменения участников пространства, ссылки на домены бота и отправка форм, которые открыл бот. ## Связанные разделы - [Права и роли](/guides/permissions) -- [Создание и настройка](/guides/bots/setup) +- [Создание бота](/guides/bots/setup) - [Треды](/guides/threads) - [Готовые примеры реализации](/guides/bots/examples) --- +--- [Document source](https://dev.pachca.com/guides/bots/showcase.md) --- + + +# Витрина + +Витрина — вкладка **Обзор** в разделе **Интеграции** > **Боты**. Это каталог ботов вашего пространства: здесь сотрудники находят ботов, которыми можно пользоваться, и подключают их сами, без администратора. Витрину видят сотрудники, администраторы и мульти-гости. + +Пока в витрине нет ни одного бота, на вкладке **Обзор** объясняется, что такое боты и витрина, и есть ссылки на документацию. Тем, кто может создавать интеграции, там же видны кнопки быстрого старта: одно нажатие создаёт бота с входящим вебхуком GitLab, Grafana или обычным и открывает его карточку. Пока ботов в витрине не больше пяти, эти кнопки остаются внизу вкладки в строке **Подключить ещё**. + +Витрина общая только внутри пространства: в ней боты вашей компании, а бота из другой компании не видно и авторизовать нельзя. + +![Вкладка «Обзор»: опубликованные боты с авторизацией карточками, список «Публичные боты» и кнопки быстрого старта](/images/bots/showcase.webp) + +*Витрина ботов на вкладке «Обзор»* + + +## Карточки и список + +Наверху вкладки — карточки опубликованных ботов с авторизацией. На карточке имя и аватар бота, отметка **Подключено**, если вы уже авторизовали бота, описание, создатель и кнопка **Сообщение**, если вы можете написать боту. У бота, которого вы можете редактировать, на карточке есть меню с пунктом **Редактировать**. + +Ниже — список **Публичные боты**: имя, ник и кнопка **Сообщение** у каждого. + +| | Карточки | Публичные боты | +| --- | --- | --- | +| Кто попадает | Боты с авторизацией, которых опубликовали в витрине | Все боты с включённым переключателем **Публичный бот** | +| Что нужно от бота | Включённая авторизация и сохранённое описание, скриншоты по желанию | Ничего, кроме публичности | +| Что открывает нажатие | Страницу бота | Профиль бота | + +Публичность и публикация — независимые настройки. Бот, который и опубликован, и публичный, показывается один раз — карточкой. + +## Страница бота + +У бота с авторизацией есть своя страница в витрине. + +![Страница бота в витрине: создатель, кнопка «Сообщение», скриншоты, описание и права, которые бот может запросить](/images/bots/app_page.webp) + +*Страница бота в витрине* + + +На ней: + +- имя, аватар и создатель бота; +- описание — чем бот занимается и зачем его подключать; +- до пяти скриншотов; +- **Что бот может запросить** — права, которые бот попросит на экране согласия: больше этого он не запросит; +- отметка **Подключено**, если вы уже авторизовали бота, и кнопка **Сообщение**, если вы можете ему написать. + +## Как опубликовать бота + +Заполняют страницу и публикуют бота его создатель и администраторы пространства, если бот открыт им для редактирования. Всё делается на вкладке **OAuth** в карточке бота: откройте бота на вкладке **Управление** и перейдите на неё. + + + ### Шаг 1. Включите авторизацию + +Нажмите **Включить** и в окне **Включение авторизации** выберите, где хранится секрет, укажите адреса возврата и запрашиваемый доступ. Подробнее — в разделе [Настройка авторизации](/guides/oauth/setup#vklyuchenie). + + + ### Шаг 2. Заполните страницу на витрине + +В блоке **Страница на витрине** введите описание — чем бот занимается и зачем его подключать — и нажмите **Сохранить** под полем. Если нужно, добавьте кнопкой **Добавить** до пяти скриншотов PNG или JPG с соотношением сторон 16:9: они сохраняются сразу, а порядок меняется перетаскиванием. + +![Блок «Страница на витрине»: переключатель «Опубликовать в витрине», описание с кнопкой «Сохранить» и скриншоты](/images/oauth/showcase_page.webp) + +*Блок «Страница на витрине» на вкладке «OAuth»* + + + ### Шаг 3. Опубликуйте + +Включите **Опубликовать в витрине** в начале того же блока — бот появится карточкой на вкладке **Обзор**. Пока описание не сохранено, переключатель недоступен. + + +Через API те же шаги делают поля `oauth_client` и `promo` метода [Редактирование бота](/api/bots/update) — подробнее в разделе [Настройка авторизации](/guides/oauth/setup#cherez-api). + +> **Внимание:** **Публикация в витрине не даёт права написать боту.** Опубликованного, но непубличного бота сотрудник видит в каталоге, а написать ему может только при общем чате с ботом. Если бот подключается через диалог, сделайте его публичным на вкладке **Основное**. + + +Чтобы убрать бота из витрины, выключите **Опубликовать в витрине**. Удаление OAuth-клиента на той же вкладке ещё и отзывает все выданные авторизации — подробнее в разделе [Настройка авторизации](/guides/oauth/setup#otklyuchenie). + +## Как сотрудник подключает бота + +Бота подключают в разговоре с ним: + +1. Сотрудник находит бота в витрине и нажимает **Сообщение**. +2. Пишет боту, например `/start`. Личный чат создаётся без события, поэтому первым всегда пишет сотрудник — подробнее в разделе [Первый диалог с ботом](/guides/bots/first-contact). +3. Бот отвечает приветствием и кнопкой авторизации. +4. Сотрудник подтверждает права на экране согласия, и бот получает его токен. В витрине у бота появляется отметка **Подключено**. + +Что должно быть включено у бота, чтобы этот путь сработал, — в [Чек-листе запуска](/guides/oauth/checklist). Как собрать кнопку и обменять код на токен — в разделе [Получение токена](/guides/oauth/flow). Выданные авторизации сотрудник видит и отзывает на странице **Интеграции** > **API** — подробнее в разделе [Согласие и отзыв](/guides/oauth/consent). + + +## Связанные разделы + +- [Настройки бота](/guides/bots/settings) +- [Первый диалог с ботом](/guides/bots/first-contact) +- [Авторизация от имени сотрудника: Настройка авторизации](/guides/oauth/setup) +- [Авторизация от имени сотрудника: Согласие и отзыв](/guides/oauth/consent) + +--- + --- [Document source](https://dev.pachca.com/guides/bots/examples.md) --- @@ -2016,7 +2387,7 @@ GET /api/shared/v1/group_tags?names[]=Дизайн&names[]=Питер Автоматическое приветствие новых сотрудников в личных сообщениях. Три шаблона сообщений: `short`, `default`, `extended`. Развёртывание на Vercel или собственном сервере. -> Подробнее — в статье [Welcome Bot](https://www.pachca.com/blog-posts/welcome-bot) и на [GitHub](https://github.com/pachca/public-integrations/tree/main/welcome-bot) +> Подробнее — в статье [Welcome Bot](https://pachca.com/blog/welcome-bot) и на [GitHub](https://github.com/pachca/public-integrations/tree/main/welcome-bot) ## Review Bot @@ -2028,7 +2399,7 @@ GET /api/shared/v1/group_tags?names[]=Дизайн&names[]=Питер ## Unfurl-бот -Бот для создания превью ссылок из рабочих сервисов (Trello, Kaiten, Пачка) прямо в чате. Когда пользователь отправляет ссылку, вместо простого URL все видят информативное превью с заголовком, описанием и изображением. +Бот для создания превью ссылок из рабочих сервисов (Trello, Kaiten, Пачка) прямо в чате. Когда сотрудник отправляет ссылку, вместо простого URL все видят информативное превью с заголовком, описанием и изображением. > Подробнее — в статье [Unfurl-бот](https://pachca.com/blog/unfurl-bot) и на [GitHub](https://github.com/pachca/public-integrations/tree/main/Unfurling-bot) @@ -2042,6 +2413,574 @@ GET /api/shared/v1/group_tags?names[]=Дизайн&names[]=Питер --- +--- [Document source](https://dev.pachca.com/guides/oauth/overview.md) --- + + +# Авторизация от имени сотрудника + +Обычно бот работает своими правами: видит чаты, в которые его добавили, и пишет как бот. Но многим автоматизациям нужны права конкретного сотрудника: собрать сводку по его чатам, завести задачу от его имени, присылать ему задачи из трекера и отвечать на них прямо из Пачки. Для этого сотрудник авторизует бота — выдаёт ему свои права, и дальше бот работает от его имени. + +Механизм — OAuth 2.0 с кодом авторизации: бот отправляет сотрудника на экран согласия, получает код и обменивает его на токен, которым вызывает API от имени сотрудника. + +## Где включается + +Авторизация включается на вкладке **OAuth** в карточке бота: там выдаются `client_id` и `client_secret`, задаются адреса возврата и набор прав, который бот попросит у сотрудника. Подробнее — в разделе [Настройка авторизации](/guides/oauth/setup). + +Одной вкладки мало: авторизация проходит через диалог с ботом, поэтому боту нужны ещё исходящий вебхук и токен. Всё, что должно быть включено, собрано в [Чек-листе запуска](/guides/oauth/checklist). + +## Как это выглядит для сотрудника + + + ### Шаг 1. Сотрудник пишет боту + +Находит бота в [витрине](/guides/bots/showcase) или в поиске и пишет ему, например `/start`. + + + ### Шаг 2. Бот присылает кнопку + +В ответ бот отправляет сообщение с кнопкой авторизации. Кнопка — обычная ссылка на экран согласия. + + + ### Шаг 3. Сотрудник соглашается + +На экране согласия видны имя бота, пространство и запрашиваемые права. Сотрудник нажимает **Разрешить**. + + + ### Шаг 4. Бот получает токен + +Браузер возвращается на адрес вашего сервера с кодом, сервер обменивает код на токен сотрудника. В витрине у бота появляется отметка **Подключено**. + + +Как собрать кнопку и обменять код — в разделе [Получение токена](/guides/oauth/flow). + +## Ограничения + +- **Только своё пространство.** Авторизовать бота может сотрудник того же пространства, где создан бот. +- **По умолчанию — только администраторам.** Авторизовать бота может тот, кому разрешено создавать персональные токены. По умолчанию это только администраторы: пока владелец или администратор не выберет **Все сотрудники** в настройке **Кто может создавать персональные токены**, сотрудники и мульти-гости авторизовать бота не могут. Доступ, выданный до смены настройки, продолжает работать. Подробнее — в разделе [Кто может создавать токены](/api/authorization#kto-mozhet-sozdavat-tokeny). +- **Гостям недоступно.** Гость не может авторизовать бота ни при какой настройке, а мульти-гость может, как и сотрудник. +- **Роль урезает права.** Право из набора, недоступное роли сотрудника, работать не будет: вызов с таким токеном вернёт `403`. +- **Набор прав один.** Бот не выбирает права при каждой авторизации: запрашивается ровно то, что задано в его настройках. + +## Разделы + +- [Чек-лист запуска](/guides/oauth/checklist) — Что включить у бота, чтобы сотрудник смог написать ему, получить кнопку и авторизовать бота +- [Настройка авторизации](/guides/oauth/setup) — Вкладка «OAuth»: где хранится секрет, адреса возврата и запрашиваемый доступ +- [Получение токена](/guides/oauth/flow) — Кнопка авторизации, обмен кода на токен, PKCE и обработка отказов +- [Согласие и отзыв](/guides/oauth/consent) — Что видит сотрудник, как роль урезает права и что происходит после отзыва + + + +## Связанные разделы + +- [Чек-лист запуска](/guides/oauth/checklist) +- [Настройка авторизации](/guides/oauth/setup) +- [Получение токена](/guides/oauth/flow) +- [Авторизация](/api/authorization) +- [Боты: Витрина](/guides/bots/showcase) + +--- + +--- [Document source](https://dev.pachca.com/guides/oauth/checklist.md) --- + + +# Чек-лист запуска + +Авторизация проходит через диалог с ботом: сотрудник пишет боту, бот отвечает кнопкой, сотрудник соглашается, и бот получает токен. Поэтому ломается она чаще всего не на OAuth, а на настройках вокруг него. Пройдите список перед запуском бота и вернитесь к нему, если на этом пути что-то не срабатывает. + + + ### Шаг 1. Сотрудник может написать боту + +- Бот публичный, у сотрудника есть с ботом общий чат, или бот написал сотруднику первым. Переключатель **Публичный бот** — на вкладке **Основное** в карточке бота. +- Публикация в витрине сама по себе написать боту не позволяет. + +Без этого у бота нет кнопки **Сообщение**. Подробнее — в разделе [Как сотрудник попадает к боту](/guides/bots/first-contact#kak-sotrudnik-popadaet-k-botu). + + + ### Шаг 2. Бот узнаёт о сообщении + +- Исходящий вебхук включён и указывает на ваш сервер. +- Включено событие **Новые сообщения** в режиме **Любые сообщения** или с командой, с которой начинается разговор. Новый бот слушает только команды, а их список пуст. +- Сервер проверяет подпись запросов, а бот игнорирует свои сообщения. + +Без вебхука и события сотрудник пишет, а бот молчит. Как настроить — в разделе [Первый диалог с ботом](/guides/bots/first-contact#chto-nastroit-zaranee). + + + ### Шаг 3. Бот отвечает кнопкой + +- У бота есть токен с правом `messages:create`. +- Кнопка ведёт на экран согласия. Как её собрать — в разделе [Получение токена](/guides/oauth/flow#shagi). + +Без права отправки метод [Новое сообщение](/api/messages/create) ответит `403`, и кнопка до сотрудника не дойдёт. Подробнее о правах — в разделе [Токены бота](/guides/bots/tokens#prava-tokena). + + + ### Шаг 4. Авторизация проходит + +- Сотрудникам разрешено выдавать доступ ботам: в настройках пространства **Кто может создавать персональные токены** — **Все сотрудники**. По умолчанию там **Только администраторы**, и тогда сотрудник вместо согласия видит отказ. +- Авторизация на вкладке **OAuth** включена, указан хотя бы один адрес возврата. +- Запрашиваемый доступ задан: в нём только права, которые боту действительно нужны. +- Приложение без секрета передаёт PKCE с методом `S256`, серверное хранит `client_secret` и обменивает код на своей стороне. + +Без этого сотрудник не дойдёт до согласия или бот не сможет обменять код на токен. Настройки вкладки — в разделе [Настройка авторизации](/guides/oauth/setup#vklyuchenie), ошибки обмена — в разделе [Ошибки и отказы](/guides/oauth/flow#oshibki-i-otkazy). + + + + +## Связанные разделы + +- [Настройка авторизации](/guides/oauth/setup) +- [Получение токена](/guides/oauth/flow) +- [Боты: Первый диалог с ботом](/guides/bots/first-contact) + +--- + +--- [Document source](https://dev.pachca.com/guides/oauth/setup.md) --- + + +# Настройка авторизации + +Авторизация от имени сотрудника и страница бота в витрине настраиваются на вкладке **OAuth** в карточке бота. Менять их могут создатель бота и администраторы пространства, если бот открыт им для редактирования — подробнее в разделе [Настройки бота](/guides/bots/settings#kto-mozhet-redaktirovat-nastroyki-bota). + +> Одной вкладки **OAuth** для авторизации мало: сотрудник должен суметь написать боту, а бот — узнать о сообщении и ответить кнопкой. Всё, что должно быть включено у бота, собрано в [Чек-листе запуска](/guides/oauth/checklist). + + +## Включение + +Откройте бота на вкладке **Управление** в разделе **Интеграции** > **Боты** и перейдите на вкладку **OAuth**. Пока авторизация выключена, на ней одна карточка с кнопкой **Включить**. + +![Вкладка «OAuth» в карточке бота до включения авторизации: карточка с кнопкой «Включить»](/images/oauth/oauth_disabled.webp) + +*Вкладка «OAuth» до включения авторизации* + + +Нажмите **Включить**: откроется окно **Включение авторизации** с тремя полями. + +![Окно «Включение авторизации»: где хранится секрет, Redirect URI и запрашиваемый доступ](/images/oauth/oauth_enable.webp) + +*Окно «Включение авторизации»* + + +**Где хранится секрет** — от этого зависит, как бот обменивает код авторизации на токен: + +- **Серверное, с секретом** — код обменивает ваш сервер, а `client_secret` хранится только на нём. Подходит боту, у которого есть свой бэкенд. +- **Браузер, мобильное, CLI** — секрета нет, код обменивается по PKCE. Подходит приложению, которое работает на устройстве сотрудника и не может спрятать секрет. + +**Адреса возврата** (поле **Redirect URI**) — куда браузер вернёт сотрудника после согласия, каждый адрес с новой строки. Правила: + +- HTTPS обязателен для всех адресов, кроме адресов на этом же компьютере: `localhost` и `127.0.0.1`. +- Адрес в ссылке авторизации должен совпадать с одним из списка точно. Параметры запроса при сравнении не учитываются, а у `localhost` и `127.0.0.1` — ещё и порт: приложению на компьютере сотрудника подойдёт любой свободный. +- Нужен хотя бы один адрес. + +**Запрашиваемый доступ** — права, которые бот попросит у сотрудника на экране согласия. Отметьте только нужные, их можно найти поиском: без выбора авторизацию не включить. Подробнее — в разделе [Запрашиваемый доступ](#zaprashivaemyy-dostup). + +Нажмите **Включить** в окне. У серверного приложения сразу откроется окно **Авторизация включена** с `client_id` и `client_secret`: секрет показывается один раз, скопируйте его кнопкой **Скопировать и закрыть**. + +## Идентификатор и секрет + +![Вкладка «OAuth» с включённой авторизацией: где хранится секрет, client_id, client_secret и адреса возврата](/images/oauth/oauth_tab.webp) + +*Вкладка «OAuth» в карточке бота* + + +После включения на вкладке видны `client_id` и замаскированный `client_secret`. `client_id` не секретный: он входит в ссылку авторизации. + +Если секрет утёк, нажмите значок обновления рядом с `client_secret` и подтвердите **Обновить секрет**. Старое значение перестанет работать сразу, поэтому сначала подготовьте бота к замене. Уже выданные авторизации и полученные токены продолжат работать, новое значение показывается один раз. + +Настройку **Где хранится секрет** можно поменять позже. При переходе на вариант **Серверное, с секретом** `client_secret` показывается один раз, как при включении. + +Адреса возврата меняются в поле **Redirect URI** на той же карточке: поправьте список и нажмите **Сохранить** под полем. + +## Запрашиваемый доступ + +Набор разрешений, которые бот попросит у сотрудника на экране согласия. Его же видно на странице бота в [витрине](/guides/bots/showcase) в блоке **Что бот может запросить**. Набор выбирается при включении, а потом меняется в блоке **Запрашиваемый доступ**: нажмите **Изменить**, отметьте права и сохраните. + +![Блок «Запрашиваемый доступ»: список запрашиваемых разрешений и кнопка «Изменить»](/images/oauth/scopes.webp) + +*Блок «Запрашиваемый доступ»* + + +- Набор один на бота. Параметр `scope` в ссылке авторизации ни на что не влияет: сервер всегда подставляет набор из настроек. +- В набор можно включить только права, доступные самому боту. Права, которые выдаются лишь персональным токенам, запросить нельзя. +- Права каждой авторизации дополнительно ограничены ролью сотрудника: право, недоступное его роли, работать не будет. +- Изменение набора не меняет уже выданные авторизации. Добавленные права сотрудник подтвердит при следующей авторизации, а убранные останутся в выданных токенах, пока сотрудник не отзовёт доступ или авторизацию у бота не отключат. + +Выдавайте минимально необходимое: чем короче список, тем охотнее сотрудники соглашаются. + +## Страница на витрине + +Блок **Страница на витрине** задаёт, как бот выглядит в [витрине](/guides/bots/showcase), и публикует его там. + +![Блок «Страница на витрине»: переключатель «Опубликовать в витрине», описание с кнопкой «Сохранить» и скриншоты](/images/oauth/showcase_page.webp) + +*Блок «Страница на витрине»* + + +- **Опубликовать в витрине** — показывает бота на вкладке **Обзор** в витрине. Пока описание не сохранено, переключатель недоступен, а под ним написано «Сначала добавьте описание». +- **Описание** — чем бот занимается и зачем его подключать. Его видно на карточке бота в витрине и на странице бота. Сохраняется кнопкой **Сохранить** под полем. +- **Скриншоты** — до пяти изображений PNG или JPG с соотношением сторон 16:9 для страницы бота. Кнопка **Добавить** загружает файл, и скриншот сохраняется сразу. Порядок меняется перетаскиванием, а нажатие на скриншот открывает меню с пунктами **Обновить изображение** и **Удалить**. + +Публикация по шагам и то, что видят сотрудники, — в разделе [Витрина](/guides/bots/showcase#kak-opublikovat-bota). + +## Отключение + +Блок **Удаление OAuth-клиента** внизу вкладки отключает авторизацию у бота. + +![Блок «Удаление OAuth-клиента» с кнопкой «Удалить OAuth-клиента»](/images/oauth/oauth_delete.webp) + +*Блок «Удаление OAuth-клиента»* + + +После подтверждения: + +- все авторизации, выданные сотрудниками, отзываются: токены сотрудников у бота перестают работать, и следующий запрос с ними вернёт `401`; +- бот пропадает из витрины, а описание и скриншоты удаляются без возможности вернуть; +- новые авторизации с этим `client_id` не проходят. + +Собственные токены бота продолжают работать. Если авторизацию включить снова, у бота будут прежние `client_id` и `client_secret`, если секрет не обновляли, а в витрину бот вернётся только после новой публикации. + +## Через API + +Те же настройки задаются методом [Редактирование бота](/api/bots/update) или сразу при создании методом [Новый бот](/api/bots/create): + +| На вкладке | В API | +| --- | --- | +| **Включить** и **Где хранится секрет** | `oauth_client.confidential`: `true` — серверное, с секретом, `false` — браузер, мобильное, CLI | +| **Адреса возврата** | `oauth_client.redirect_uris` | +| **Запрашиваемый доступ** | `oauth_client.scopes` | +| **Страница на витрине** | `promo.published`, `promo.description` и `promo.promo_images` | +| **Удаление OAuth-клиента** | `oauth_client: null` | + +Объект `oauth_client` включает авторизацию, если она выключена, и меняет её настройки, если включена. Права для набора берут из [Каталога прав бота](/api/bots/list-scopes). У серверного приложения `client_secret` приходит в ответе один раз: при включении и при переходе на вариант с секретом. Новый секрет выпускает метод [Ротация секрета клиента](/api/bots/rotate-client-secret). + +Включена ли авторизация, показывает поле `oauth_client_enabled` в объекте бота: параметры в `oauth_client` могут прийти и у бота с выключенной авторизацией. + +Скриншоты для витрины загружают так же, как вложения сообщений, методом [Получение подписи, ключа и других параметров](/api/files/uploads), а их `key` передают в `promo.promo_images`. + + +## Связанные разделы + +- [Чек-лист запуска](/guides/oauth/checklist) +- [Получение токена](/guides/oauth/flow) +- [Боты: Витрина](/guides/bots/showcase) +- [Боты: Первый диалог с ботом](/guides/bots/first-contact) + +--- + +--- [Document source](https://dev.pachca.com/guides/oauth/flow.md) --- + + +# Получение токена сотрудника + +Бот получает токен сотрудника по стандартной схеме OAuth 2.0 с кодом авторизации ([RFC 6749](https://datatracker.ietf.org/doc/html/rfc6749#section-4.1)) и PKCE ([RFC 7636](https://datatracker.ietf.org/doc/html/rfc7636)). Перед началом включите авторизацию на вкладке **OAuth** в карточке бота — подробнее в разделе [Настройка авторизации](/guides/oauth/setup). Кроме неё, боту нужны исходящий вебхук и токен, иначе сотрудник не получит кнопку. Всё, что должно быть включено, собрано в [Чек-листе запуска](/guides/oauth/checklist). + +**Путь авторизации** + +```mermaid +sequenceDiagram + participant E as Сотрудник + participant P as Пачка + participant S as Сервер бота + + E->>P: Пишет боту + P->>S: Событие о новом сообщении + S->>P: Сообщение с кнопкой авторизации + E->>P: Открывает кнопку и нажимает «Разрешить» + P->>S: Возврат на адрес с code и state + S->>P: POST /oauth/token + P->>S: Токен сотрудника + S->>P: GET /oauth/token/info с токеном сотрудника + S->>P: Запросы от имени сотрудника +``` + + +| Адрес | Назначение | +| --- | --- | +| `https://app.pachca.com/apps/authorize` | Экран согласия, на него ведёт кнопка | +| `https://api.pachca.com/api/shared/v1/oauth/token` | Обмен кода на токен | +| `https://api.pachca.com/api/shared/v1/oauth/revoke` | Отзыв токена | + +Те же адреса публикуются в метаданных сервера авторизации по [RFC 8414](https://datatracker.ietf.org/doc/html/rfc8414): `https://api.pachca.com/.well-known/oauth-authorization-server`. + +## Шаги + + + ### Шаг 1. Сгенерируйте state и пару PKCE + +На каждую кнопку создайте случайный `state` и проверочный код `code_verifier` — случайную строку длиной от 43 до 128 символов. Из него получите `code_challenge`: SHA-256 от `code_verifier` в кодировке base64url без `=` на конце. + +Сохраните `state`, `code_verifier` и идентификатор сотрудника, которому отправляете кнопку: по `state` вы узнаете, чей это возврат. Для варианта **Браузер, мобильное, CLI** PKCE обязателен, для варианта **Серверное, с секретом** — рекомендуется. + + + ### Шаг 2. Соберите ссылку авторизации + +```text title="Ссылка авторизации" +https://app.pachca.com/apps/authorize + ?client_id=CLIENT_ID + &redirect_uri=https%3A%2F%2Fbot.example.com%2Foauth%2Fcallback + &response_type=code + &state=STATE + &code_challenge=CODE_CHALLENGE + &code_challenge_method=S256 +``` + +- `client_id` — с вкладки **OAuth** в карточке бота +- `redirect_uri` — один из адресов возврата бота, совпадение проверяется точно +- `response_type` — всегда `code` +- `state` — значение из первого шага +- `code_challenge` и `code_challenge_method` — PKCE, метод только `S256` + +Параметр `scope` передавать не нужно: набор прав сервер берёт из настроек бота. + + + ### Шаг 3. Отправьте кнопку + +Отправьте ссылку сотруднику URL-кнопкой в личной переписке с ботом — методом [Новое сообщение](/api/messages/create) с `entity_type: "user"`. Подробнее о кнопках — в разделе [Кнопки в сообщениях](/guides/buttons). + +![Бот в ответ на просьбу сотрудника присылает сообщение с кнопкой «Предоставить доступ»](/images/oauth/access_request.webp) + +*Кнопка авторизации в сообщении бота* + + +В тексте рядом с кнопкой объясните, зачем боту доступ и что он будет делать, и попросите не пересылать ссылку. + + + ### Шаг 4. Примите возврат + +Сотрудник видит экран согласия и нажимает **Разрешить**. Браузер возвращается на ваш адрес с параметрами `code`, `state` и `iss` — последний всегда равен `https://api.pachca.com` и подтверждает, что код выдала Пачка. + +```text title="Возврат после согласия" +https://bot.example.com/oauth/callback?code=AUTH_CODE&state=STATE&iss=https%3A%2F%2Fapi.pachca.com +``` + +Найдите сохранённый `state` и сразу удалите его: каждый `state` действует один раз. Если сотрудник нажал **Отменить**, возврата на ваш адрес не будет — браузер просто вернётся назад. Поэтому храните неиспользованные `state` ограниченное время, например сутки. + + + ### Шаг 5. Обменяйте код на токен + +Код живёт 10 минут и обменивается один раз. Серверное приложение передаёт `client_secret` в теле запроса или в заголовке `Authorization: Basic`, приложение без секрета — только `code_verifier`. + +```bash title="Обмен кода на токен" +curl -X POST https://api.pachca.com/api/shared/v1/oauth/token \ + -d grant_type=authorization_code \ + -d code=AUTH_CODE \ + -d redirect_uri=https://bot.example.com/oauth/callback \ + -d client_id=CLIENT_ID \ + -d client_secret=CLIENT_SECRET \ + -d code_verifier=CODE_VERIFIER +``` + +```json title="Ответ" +{ + "access_token": "ACCESS_TOKEN", + "token_type": "Bearer", + "refresh_token": "REFRESH_TOKEN", + "scope": "chats:read messages:read tasks:read tasks:create", + "created_at": 1790242260 +} +``` + +Поля `expires_in` в ответе нет: токен бессрочный и работает, пока сотрудник не отзовёт доступ. Обновлять его не нужно. + + + ### Шаг 6. Проверьте, чей это токен + +Запросите [Информацию о токене](/api/oauth/token-info) с новым токеном: в `data.user_id` придёт сотрудник, который дал согласие. Отдельных прав метод не требует. Сравните его с сотрудником, которому вы отправляли кнопку. + +Сообщение с кнопкой могли переслать, и тогда согласие дал другой сотрудник. Сохраните токен за ним, а тому, кому отправляли кнопку, пришлите её снова. Отзывать такой токен не стоит: если этот сотрудник уже авторизовал бота раньше, Пачка вернула его прежний токен, и отзыв отключит его доступ. + + + ### Шаг 7. Храните токен на сотрудника + +Сохраните токен в привязке к сотруднику и передавайте в заголовке `Authorization: Bearer` при запросах от его имени. Токен даёт доступ ко всему, что видит сотрудник, в пределах выданных прав: храните его как пароль. + + +## Пример на TypeScript + +Серверное приложение на Express: кнопка в ответ на сообщение сотрудника и обработчик возврата. + +```typescript title="oauth.ts" +import crypto from "node:crypto" +import express from "express" + +const API = "https://api.pachca.com/api/shared/v1" +const CLIENT_ID = process.env.PACHCA_CLIENT_ID! +const CLIENT_SECRET = process.env.PACHCA_CLIENT_SECRET! +const BOT_TOKEN = process.env.PACHCA_BOT_TOKEN! +const REDIRECT_URI = "https://bot.example.com/oauth/callback" + +// state → кому отправлена кнопка и проверочный код PKCE +const pending = new Map() + +export async function sendAuthButton(userId: number) { + const state = crypto.randomBytes(16).toString("hex") + const verifier = crypto.randomBytes(32).toString("base64url") + const challenge = crypto.createHash("sha256").update(verifier).digest("base64url") + pending.set(state, { userId, verifier }) + + const url = new URL("https://app.pachca.com/apps/authorize") + url.search = new URLSearchParams({ + client_id: CLIENT_ID, + redirect_uri: REDIRECT_URI, + response_type: "code", + state, + code_challenge: challenge, + code_challenge_method: "S256", + }).toString() + + await fetch(`${API}/messages`, { + method: "POST", + headers: { Authorization: `Bearer ${BOT_TOKEN}`, "Content-Type": "application/json" }, + body: JSON.stringify({ + message: { + entity_type: "user", + entity_id: userId, + content: "Чтобы я мог работать с вашими задачами, разрешите доступ.", + buttons: [[{ text: "Разрешить доступ", url: url.toString() }]], + }, + }), + }) +} + +const app = express() + +app.get("/oauth/callback", async (req, res) => { + const { code, state, error } = req.query as Record + const entry = state ? pending.get(state) : undefined + if (!state || !entry) return res.status(400).send("Ссылка устарела, запросите новую у бота") + pending.delete(state) + if (error || !code) return res.status(400).send("Доступ не выдан, запросите новую ссылку у бота") + + const tokenResponse = await fetch(`${API}/oauth/token`, { + method: "POST", + headers: { "Content-Type": "application/x-www-form-urlencoded" }, + body: new URLSearchParams({ + grant_type: "authorization_code", + code, + redirect_uri: REDIRECT_URI, + client_id: CLIENT_ID, + client_secret: CLIENT_SECRET, + code_verifier: entry.verifier, + }), + }) + if (!tokenResponse.ok) return res.status(502).send("Не удалось получить токен") + const { access_token } = await tokenResponse.json() + + const infoResponse = await fetch(`${API}/oauth/token/info`, { + headers: { Authorization: `Bearer ${access_token}` }, + }) + if (!infoResponse.ok) return res.status(502).send("Не удалось проверить токен") + const { data } = await infoResponse.json() + + // Токен принадлежит тому, кто дал согласие, даже если кнопку ему переслали + await saveToken(data.user_id, access_token) // ваше хранилище токенов + if (data.user_id !== entry.userId) await sendAuthButton(entry.userId) + res.send("Готово, можно вернуться в Пачку") +}) +``` + +## Ошибки и отказы + +Если сотрудник не получает кнопку или бот молчит, дело обычно не в OAuth, а в настройках вокруг него — пройдите [Чек-лист запуска](/guides/oauth/checklist). + +**При обмене кода** + +- `invalid_grant` — код истёк, уже использован или выдан для другого `redirect_uri`, либо `code_verifier` не подходит к `code_challenge`. Отправьте сотруднику новую кнопку. +- `invalid_client` — неверный `client_id` или `client_secret`. Проверьте секрет: после обновления старое значение перестаёт работать сразу. + +**При работе с токеном сотрудника** + +- `401 Unauthorized` — сотрудник отозвал доступ, у бота отключили авторизацию или бот удалён. Удалите токен и, когда сотрудник снова обратится к боту, пришлите кнопку заново. +- `403 Forbidden` с `insufficient_scope` — права нет в выданном наборе или его не позволяет роль сотрудника. Если право есть в `scope` самого токена, дело в роли, и повторная авторизация не поможет. Если в токене права нет, а в настройки бота его уже добавили, пришлите кнопку заново. Подробнее о формате отказа — в разделе [Ошибки авторизации](/api/authorization#oshibki-avtorizatsii). + +## Отзыв токена ботом + +Бот может сам отозвать токен сотрудника, например когда тот отключает интеграцию в вашем сервисе. Серверное приложение отправляет на адрес отзыва `token` вместе с `client_id` и `client_secret`, приложение без секрета — сам токен в теле запроса и в заголовке `Authorization: Bearer`. Как сотрудник отзывает доступ сам — в разделе [Согласие и отзыв](/guides/oauth/consent). + + +## Связанные разделы + +- [Чек-лист запуска](/guides/oauth/checklist) +- [Настройка авторизации](/guides/oauth/setup) +- [Согласие и отзыв](/guides/oauth/consent) +- [Кнопки в сообщениях](/guides/buttons) +- [Авторизация](/api/authorization) + +--- + +--- [Document source](https://dev.pachca.com/guides/oauth/consent.md) --- + + +# Согласие и отзыв + +## Экран согласия + +Кнопка авторизации открывает экран согласия в веб-версии Пачки. + +![Экран согласия: «Авторизовать Jira?», пространство, почта сотрудника, запрашиваемые разрешения и кнопки «Отменить» и «Разрешить»](/images/oauth/consent.webp) + +*Экран согласия* + + +На нём сотрудник видит: + +- вопрос «Авторизовать …?» с именем бота и рядом два аватара — свой и бота; +- пространство и свою почту — чтобы не выдать доступ из чужого аккаунта; +- **Запрашиваемые разрешения** — набор из настроек бота, а когда прав много, они сгруппированы по категориям; +- кнопки **Разрешить** и **Отменить**. + +После **Разрешить** браузер сразу возвращается на адрес бота с кодом авторизации. **Отменить** возвращает браузер назад, и бот ничего не получает. + +> Выбирать отдельные права на экране нельзя: сотрудник соглашается на весь набор или не соглашается вовсе. Поэтому просите у сотрудника только то, что действительно нужно боту. + + +## Кто не может выдать доступ + +Вместо экрана согласия сотрудник увидит отказ в трёх случаях: + +- **Он гость.** Этой роли доступ к API не выдаётся. +- **Выдавать доступ ботам могут только администраторы.** Так по умолчанию, пока в настройке **Кто может создавать персональные токены** не выбрано **Все сотрудники**. Отказ получат все, кто не администратор, в том числе мульти-гости. +- **Бот создан в другом пространстве.** + +## Как роль ограничивает права + +Токен сотрудника никогда не даёт больше, чем может сам сотрудник. Права из набора проверяются на каждом запросе по его текущей роли: если роль не позволяет действие, запрос вернёт `403` с `insufficient_scope`, даже если право есть в наборе. Когда роль меняется, это отражается на токене сразу, выпускать его заново не нужно. Подробнее — в разделе [Права и роли](/guides/permissions). + +## Повторная авторизация + +Если сотрудник снова открывает кнопку, а набор прав в настройках бота не менялся, бот получит тот же токен, а не второй. У серверного приложения повторная авторизация с тем же набором проходит без экрана согласия: браузер сразу возвращается на адрес бота с новым кодом. + +Когда набор в настройках бота расширили, уже выданные авторизации не меняются. Новые права сотрудник увидит и подтвердит при следующей авторизации — для этого бот присылает кнопку заново. + +## Список «Авторизации» + +Все боты, которым сотрудник выдал доступ, собраны в списке **Авторизации** на странице **Интеграции** > **API**. Для каждого видно, когда бот подключён и когда последний раз использовался, а меню позволяет посмотреть выданные разрешения и отозвать доступ. + +![Список «Авторизации» на странице «API»: боты, дата подключения, последнее использование и число разрешений](/images/oauth/authorizations.webp) + +*Список «Авторизации»* + + +Редактор бота видит на вкладке **Управление**, сколько сотрудников его авторизовали, а сотрудник — отметку **Подключено** у бота в [витрине](/guides/bots/showcase). + +## Отзыв доступа + +**Отозвать доступ** в списке «Авторизации» сразу отключает все токены этого бота, выданные сотруднику. Следующий запрос бота с таким токеном вернёт `401`. + +Боту стоит к этому быть готовым: на `401` удалить сохранённый токен и, когда сотрудник снова обратится к боту, прислать кнопку авторизации заново. Сам бот тоже может отозвать токен сотрудника — подробнее в разделе [Отзыв токена ботом](/guides/oauth/flow#otzyv-tokena-botom). + +Доступ заканчивается и без отзыва, если бота удалили или у него отключили авторизацию: тогда перестают работать все выданные ему токены сотрудников. Подробнее — в разделе [Настройка авторизации](/guides/oauth/setup#otklyuchenie). + +Настройка **Кто может создавать персональные токены** выданный доступ не отзывает: значение **Только администраторы** закрывает только новые согласия. + + +## Связанные разделы + +- [Получение токена](/guides/oauth/flow) +- [Настройка авторизации](/guides/oauth/setup) +- [Авторизация](/api/authorization) +- [Права и роли](/guides/permissions) + +--- + --- [Document source](https://dev.pachca.com/guides/incoming-webhooks.md) --- @@ -2055,27 +2994,32 @@ GET /api/shared/v1/group_tags?names[]=Дизайн&names[]=Питер ### Шаг 1. Создайте бота -Перейдите в **Автоматизации** > **Интеграции** > **Чат-боты и Вебхуки** и создайте бота. Подробнее — в разделе [Боты](/guides/bots/overview). +Откройте **Интеграции** > **Боты** и нажмите **Создать бота**. Подробнее — в разделе [Боты](/guides/bots/overview). - ### Шаг 2. Скопируйте Webhook URL + ### Шаг 2. Включите вебхук и выберите источник -В настройках бота перейдите на вкладку **Входящий Webhook** и скопируйте сгенерированный URL. +В карточке бота на вкладке **Входящий вебхук** нажмите **Включить** и выберите, что будет присылать данные: GitLab, Grafana или **Свой формат** для любого другого сервиса. Источник можно поменять позже. - ### Шаг 3. Вставьте URL в настройки внешнего сервиса + ### Шаг 3. Скопируйте адрес вебхука -Укажите скопированный URL как адрес для уведомлений (webhook URL) в вашей CRM, CI/CD, мониторинге или другом сервисе. +После включения на вкладке появится адрес, на который сервис будет отправлять запросы. Скопируйте его. - ### Шаг 4. Добавьте бота в нужные чаты + ### Шаг 4. Вставьте адрес в настройки внешнего сервиса + +Укажите скопированный адрес как адрес для уведомлений (webhook URL) в вашей CRM, CI/CD, мониторинге или другом сервисе. + + + ### Шаг 5. Добавьте бота в нужные чаты Сообщения от вебхука публикуются во все групповые чаты, где состоит бот. Добавьте бота в чаты, в которые хотите получать уведомления — через настройки чата или через API-метод [Добавление пользователей](/api/members/add). - ### Шаг 5. Сервис отправляет POST-запрос + ### Шаг 6. Сервис отправляет POST-запрос -При наступлении события сервис отправляет `POST`-запрос с JSON-данными на Webhook URL. Минимальный формат запроса: +При наступлении события сервис отправляет `POST`-запрос с JSON-данными на адрес вебхука. Для своего формата минимальный запрос такой: ```json { @@ -2083,26 +3027,34 @@ GET /api/shared/v1/group_tags?names[]=Дизайн&names[]=Питер } ``` -Поле `message` содержит текст, который будет опубликован от имени бота. +Поле `message` содержит текст, который будет опубликован от имени бота. Запросы GitLab и Grafana Пачка разбирает сама, в их настройках достаточно указать адрес. - ### Шаг 6. Сообщение появляется в чате + ### Шаг 7. Сообщение появляется в чате Пачка обрабатывает запрос и публикует сообщение от имени бота во все групповые чаты, где он состоит. ## Настройки -Настройки входящего вебхука находятся на вкладке **Входящий Webhook** в настройках бота. +Настройки входящего вебхука находятся на вкладке **Входящий вебхук** в карточке бота и появляются после включения. Кнопка **Удалить вебхук** внизу вкладки выключает его: адрес перестаёт принимать запросы, а настройки и шаблон удаляются. + +![Вкладка «Входящий вебхук» в карточке бота](/images/incoming-webhooks/inc_webhook.webp) -![Вкладка Входящий Webhook в настройках бота](/images/incoming-webhooks/inc_webhook.webp) +*Вкладка «Входящий вебхук» в карточке бота* -*Вкладка Входящий Webhook в настройках бота* +### Источник + +- **GitLab** — пуши, пайплайны, merge request и комментарии +- **Grafana** — алерты со скриншотами графиков +- **Свой формат** — любой сервис: JSON и шаблон сообщения + +Для GitLab и Grafana Пачка сама разбирает запрос и собирает сообщение, поэтому шаблон нужен только своему формату. ### Шаблон сообщения -По умолчанию Пачка публикует содержимое поля `message` из входящего JSON. Если вместо готового текста вы хотите отправлять произвольную JSON-структуру и гибко формировать сообщение из её полей — укажите **формат отображения** и **шаблон**. +По умолчанию Пачка публикует содержимое поля `message` из входящего JSON. Если вместо готового текста вы хотите отправлять произвольную JSON-структуру и гибко формировать сообщение из её полей — выберите **формат шаблона** и заполните **шаблон сообщения**. При пустом шаблоне в сообщение попадает поле `message`. Пачка поддерживает два шаблонизатора: @@ -2150,21 +3102,22 @@ Liquid также поддерживает: - **Фильтры массивов** — `join`, `first`, `last`, `sort`, `uniq`, `where`, `map`, `size` - **Фильтры дат** — `date` с форматированием (`%d.%m.%Y`, `%H:%M` и пр.) -> После отправки вебхука в настройках бота появляется кнопка **«Показать последний полученный объект...»**. Нажмите на неё — откроется модальное окно с содержимым последнего полученного JSON. Используйте его, чтобы определить нужные поля и перенести их в шаблон. +> После первого запроса на вкладке появляется ссылка **Показать последний полученный объект** с датой получения. Нажмите на неё — откроется окно с содержимым последнего полученного JSON. Используйте его, чтобы определить нужные поля и перенести их в шаблон. ### Показывать превью ссылок -Если включено, Пачка будет генерировать превью для ссылок в сообщениях бота — аналогично тому, как это работает для обычных сообщений. +Если включено, Пачка разворачивает ссылки из сообщений вебхука в превью — так же, как в обычных сообщениях. ### Поле для верификации -Некоторые сервисы (например, [monday.com](https://monday.com)) при настройке вебхука отправляют проверочный запрос и ожидают получить в ответе определённое поле. Укажите название поля проверки — Пачка вернёт его значение в ответе на запрос верификации. +Некоторые сервисы (например, [monday.com](https://monday.com)) при настройке вебхука отправляют проверочный запрос и ожидают получить в ответе определённое поле. Укажите название поля проверки — Пачка ответит JSON-объектом с этим полем и его значением. Для monday.com это слово `challenge`. ## Настройка через API Все эти настройки можно задать программно, без интерфейса — методами [Новый бот](/api/bots/create) и [Редактирование бота](/api/bots/update): +- `kind` — источник: `simple` для своего формата, `gitlab` или `grafana` - `template` — шаблон сообщения - `template_engine` — шаблонизатор (`liquid` или `mustache`) - `challenge_key` — поле для верификации @@ -2172,6 +3125,8 @@ Liquid также поддерживает: Текущие значения возвращаются в объекте бота и доступны через метод [Информация о боте](/api/bots/get). +Бот, созданный через API, принимает запросы в своём формате сразу, с шаблонизатором Liquid по умолчанию. Пустой бот, созданный с `empty: true`, входящего вебхука не имеет, пока ему не задали `kind`. + ## Ограничения > **Внимание:** Входящий вебхук не позволяет отправить личное сообщение или указать конкретный чат. Сообщение @@ -2179,6 +3134,7 @@ Liquid также поддерживает: используйте API-метод [Новое сообщение](/api/messages/create). +- **Формат запроса** — Пачка принимает тело в форматах `application/json`, `application/x-www-form-urlencoded` и `multipart/form-data`. На запрос с другим заголовком `Content-Type` или без него вебхук отвечает `415` и перечисляет допустимые форматы в тексте ответа, сообщение не публикуется. - **Максимальная длина сообщения** — 40 000 байт. Для кириллицы это около 20 000 символов, поскольку каждый символ занимает два байта. Если результат шаблона превышает лимит, сообщение не будет отправлено. - **Пустое сообщение** — если шаблон возвращает пустую строку, сообщение не будет отправлено. - **Ошибка в шаблоне** — если шаблон содержит синтаксическую ошибку, в чат будет отправлено сообщение вида `Ошибка в шаблоне: описание ошибки`. @@ -2189,7 +3145,7 @@ Liquid также поддерживает: ## Связанные разделы -- [Боты: Создание и настройка](/guides/bots/setup) +- [Боты: Создание бота](/guides/bots/setup) - [Разворачивание ссылок](/guides/link-previews) - [Кнопки в сообщениях](/guides/buttons) @@ -2213,12 +3169,12 @@ Liquid также поддерживает: ### Шаг 1. Создайте бота -Перейдите в **Автоматизации** > **Интеграции** > **Чат-боты и Вебхуки** и создайте бота. Подробнее — в разделе [Боты](/guides/bots/overview). +Откройте **Интеграции** > **Боты** и нажмите **Создать бота**. Подробнее — в разделе [Боты](/guides/bots/overview). - ### Шаг 2. Укажите Webhook URL + ### Шаг 2. Включите вебхук -В настройках бота перейдите на вкладку **Исходящий Webhook** и укажите URL вашего сервера, на который Пачка будет отправлять события. +В карточке бота на вкладке **Исходящий вебхук** нажмите **Включить** и укажите URL вашего сервера, на который Пачка будет отправлять события. ### Шаг 3. Выберите типы событий @@ -2228,7 +3184,7 @@ Liquid также поддерживает: ### Шаг 4. Добавьте бота в чаты -Большинство событий приходят только из чатов, в которых состоит бот. Глобальные события (например, изменение состава участников пространства) не требуют добавления в чат. +Большинство событий приходят только из чатов, в которых состоит бот. Глобальные события — изменение участников пространства и ссылки на домены бота — не требуют добавления в чат. ## Настройка через API @@ -2243,7 +3199,7 @@ Liquid также поддерживает: ## Разделы -- [Настройка и типы событий](/guides/webhook/events) — Все настройки на вкладке Исходящий Webhook и список доступных типов событий с payload'ом +- [Настройка и типы событий](/guides/webhook/events) — Все настройки на вкладке «Исходящий вебхук» и список доступных типов событий с payload'ом - [Безопасность и обработчик](/guides/webhook/handler) — Проверка подписи, защита от replay-атак, примеры обработчика на TypeScript и Python - [Поллинг](/guides/webhook/polling) — Получение событий через API, когда принимать входящие HTTP-запросы нельзя @@ -2255,28 +3211,28 @@ Liquid также поддерживает: # Настройка и типы событий -Все настройки исходящего вебхука собраны на вкладке **Исходящий Webhook** в настройках бота. +Все настройки исходящего вебхука собраны на вкладке **Исходящий вебхук** в карточке бота. Пока вебхук выключен, на вкладке одна кнопка **Включить**: она спрашивает URL вашего сервера, а остальные настройки появляются после включения. -![Вкладка Исходящий Webhook в настройках бота](/images/outgoing-webhook.png) +![Вкладка «Исходящий вебхук» в карточке бота: адрес, подпись, история, свои сообщения и список событий](/images/outgoing-webhook.webp) -*Вкладка Исходящий Webhook в настройках бота* +*Вкладка «Исходящий вебхук» в карточке бота* ## Общие настройки - **Webhook URL** — адрес, на который Пачка отправляет события -- **Signing secret** — секрет для проверки подписи запроса. Подробнее — в разделе [Безопасность и обработчик](/guides/webhook/handler). +- **Signing secret** — ключ HMAC-SHA256 для проверки подписи из заголовка `Pachca-Signature`. Появляется после включения вебхука. Подробнее — в разделе [Безопасность и обработчик](/guides/webhook/handler). - **Сохранять историю событий** — бот сохраняет все исходящие вебхуки в очередь, и их можно получить через API. Поле `events_history_enabled`. Подробнее — в разделе [Поллинг](/guides/webhook/polling). - **Игнорировать свои сообщения** — не получать вебхуки о сообщениях, отправленных самим ботом. Поле `ignore_self_messages`. Предотвращает зацикливание, когда бот реагирует на собственные сообщения. Нажатия кнопок обрабатываются всегда, вне зависимости от этой настройки. -Обе настройки задаются не только в интерфейсе, но и через API — методами [Новый бот](/api/bots/create) и [Редактирование бота](/api/bots/update), и возвращаются в объекте бота. +История событий и «Игнорировать свои сообщения» задаются не только в интерфейсе, но и через API — методами [Новый бот](/api/bots/create) и [Редактирование бота](/api/bots/update), и возвращаются в объекте бота. **Webhook URL** можно задать не только здесь, но и программно — это удобно для автоматизации (например, [n8n](/guides/n8n/trigger) регистрирует свой адрес сам): -- метод [Редактирование бота](/api/bots/update) — токеном администратора (скоуп `bots:write` и доступ редактора к боту) можно прописать `URL` любому боту; -- метод [Саморегистрация вебхука бота](/api/bots/update-webhook) — бот прописывает свой `URL` собственным токеном (скоуп `bot_self:webhook:write`), без участия администратора. +- метод [Редактирование бота](/api/bots/update) — персональным токеном со скоупом `bots:write` можно прописать `URL` боту, настройки которого вам доступны; +- метод [Саморегистрация вебхука бота](/api/bots/update-webhook) — бот прописывает свой `URL` собственным токеном (скоуп `bot_self:webhook:write`), без участия администратора. Боту с включённым [разворачиванием ссылок](/guides/link-previews) адрес меняет только администратор или владелец, и саморегистрация вернёт ошибку. -Чтобы отключить вебхук, передайте пустую строку в `outgoing_url`. +Чтобы отключить вебхук, передайте пустую строку в `outgoing_url`. В интерфейсе для этого есть кнопка **Удалить вебхук** внизу вкладки: события перестают доставляться, а настройки и подпись удаляются, и для работы вебхук придётся включить заново. ## Сообщения @@ -2287,10 +3243,13 @@ Liquid также поддерживает: Для новых сообщений доступны два режима отслеживания: -- **О любых сообщениях** — все новые сообщения, включая треды -- **Сообщения, начинающиеся с команд** — только сообщения, начинающиеся с указанных команд (например, `/help`, `/deploy`). Команды начинаются с `/` и пишутся на английском. Полезно, если вы не хотите получать поток событий, а вам нужно вызвать сценарий только по требованию пользователя. +- **Любые сообщения** — все новые сообщения, включая треды +- **Начинающиеся с команд** — только сообщения, начинающиеся с указанных команд (например, `/help`, `/deploy`). Команды перечисляются через запятую, начинаются с `/` и пишутся на английском. Полезно, если вы не хотите получать поток событий, а вам нужно вызвать сценарий только по требованию пользователя. -> Режим «О любых сообщениях» присылает событие и для сообщений без текста, например только с файлом или картинкой. Режим «Сообщения, начинающиеся с команд» для них не сработает, потому что команда определяется по первому слову текста, которого в таком сообщении нет. +> Режим «Любые сообщения» присылает событие и для сообщений без текста, например только с файлом или картинкой. Режим «Начинающиеся с команд» для них не сработает, потому что команда определяется по первому слову текста, которого в таком сообщении нет. + + +> **Внимание:** Новый бот стоит в режиме «Начинающиеся с команд» с пустым списком команд и о новых сообщениях не узнаёт. Так у ботов, созданных и в интерфейсе, и методом [Новый бот](/api/bots/create) без `trigger_on`. Выберите режим «Любые сообщения» или перечислите команды. Подробнее — в разделе [Первый диалог с ботом](/guides/bots/first-contact). #### MessageWebhookPayload @@ -2394,6 +3353,9 @@ Liquid также поддерживает: Вебхук отправляется при изменении состава участников чатов, где состоит бот, и в тредах этих чатов. +> Когда сотрудник впервые открывает личную переписку с ботом, события нет — ни об изменении участников, ни о новом чате. Бот узнаёт о сотруднике из его первого сообщения. + + #### ChatMemberWebhookPayload - `type: string` (required) — Тип объекта. Пример: `"chat_member"` @@ -2430,7 +3392,7 @@ Liquid также поддерживает: ## Отправка ссылок -Вебхук отправляется при появлении ссылки на один из доменов, указанных в настройках Unfurl-бота. Для получения таких событий необходимо создать специального Unfurl-бота. После получения вы можете воспользоваться методом [Unfurl (разворачивание ссылок)](/api/messages/unfurl) и создать предпросмотр ссылки в сообщении. Подробнее — в разделе [Разворачивание ссылок](/guides/link-previews). +Вебхук отправляется при появлении в сообщении ссылки на один из доменов бота — из любого чата пространства, добавлять бота в чаты не нужно. Событие **Отправка ссылок в сообщении (unfurl)** и его домены (до 5, через запятую) включает только администратор или владелец пространства. После получения вы можете воспользоваться методом [Unfurl (разворачивание ссылок)](/api/messages/unfurl) и создать предпросмотр ссылки в сообщении. Подробнее — в разделе [Разворачивание ссылок](/guides/link-previews). #### LinkSharedWebhookPayload @@ -2445,6 +3407,12 @@ Liquid также поддерживает: - `domain: string` (required) — Домен ссылки. Пример: `"example.com"` - `skip: boolean` (required) — Признак того, что автор сообщения скрыл превью для этой ссылки. Если `true` — бот не должен создавать превью. Пример: `false` - `user_id: integer, int32` (required) — Идентификатор отправителя сообщения. Пример: `2345` +- `entity_type: string` (required) — Тип сущности, к которой относится сообщение со ссылкой + Значения: `discussion` — Беседа или канал, `thread` — Тред, `user` — Пользователь +- `entity_id: integer, int32` (required, nullable) — Идентификатор сущности: беседы или канала, треда. В личной переписке `null`: бот в ней не участвует, и собеседника ему не раскрывают. Пример: `23438` +- `thread: object` (required) — Тред, в котором отправлено сообщение со ссылкой. `null`, если сообщение отправлено не в треде. + - `message_id: integer, int32` (required, nullable) — Идентификатор сообщения, к которому был создан тред. `null` у треда без сообщения-родителя — такие создаёт [Новый самостоятельный тред](/api/threads/create). Пример: `12345` + - `message_chat_id: integer, int32` (required, nullable) — Идентификатор чата сообщения, к которому был создан тред. `null` у треда без сообщения-родителя. Пример: `67890` - `created_at: date-time` (required) — Дата и время создания сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2024-09-18T19:53:14.000Z"` - `webhook_timestamp: integer, int32` (required) — Дата и время отправки вебхука (UTC+0) в формате UNIX. Пример: `1726685594` @@ -2535,10 +3503,10 @@ content-length: 358 ### Шаг 1. Проверьте подпись -Для проверки подписи необходимо вычислить её самостоятельно, используя секрет вебхука `Signing secret`, который доступен в настройках бота во вкладке «Исходящий webhook». Рекомендуется использовать сырой (raw) контент тела запроса для вычисления хеша, так как при JSON-парсинге содержимое может быть изменено. +Для проверки подписи необходимо вычислить её самостоятельно, используя секрет вебхука `Signing secret` с вкладки «Исходящий вебхук» в карточке бота. Рекомендуется использовать сырой (raw) контент тела запроса для вычисления хеша, так как при JSON-парсинге содержимое может быть изменено. ```javascript title="Вычисление и сравнение подписи" -// WEBHOOK_SECRET - значение поля Signing secret во вкладке «Исходящий webhook» в настройках бота +// WEBHOOK_SECRET - значение поля Signing secret на вкладке «Исходящий вебхук» в карточке бота const signature = crypto.createHmac("sha256", WEBHOOK_SECRET).update(rawBody).digest("hex"); if (signature !== request.headers['pachca-signature']) { @@ -2564,7 +3532,7 @@ IP-адрес Пачки: `37.200.70.177` import express from "express" import crypto from "crypto" -const SIGNING_SECRET = "your_signing_secret" // Из настроек бота → Исходящий Webhook → Signing Secret +const SIGNING_SECRET = "your_signing_secret" // Карточка бота → Исходящий вебхук → Signing secret const app = express() // Важно: используем express.raw для получения сырого тела запроса (для корректной проверки HMAC) @@ -2618,7 +3586,7 @@ app.listen(3000) import hmac, hashlib, json, time from flask import Flask, request, abort -SIGNING_SECRET = "your_signing_secret" # Из настроек бота → Исходящий Webhook → Signing Secret +SIGNING_SECRET = "your_signing_secret" # Карточка бота → Исходящий вебхук → Signing secret app = Flask(__name__) @app.route("/webhook", methods=["POST"]) @@ -2696,7 +3664,7 @@ app.post("/webhook", express.raw({ type: "application/json" }), (req, res) => { Если у вас нет возможности принимать входящие HTTP-запросы (локальная разработка, жёсткие firewall-правила), используйте **поллинг** — получение событий через API или готовые helpers в SDK. -Включите настройку **Сохранять историю событий** на вкладке **Исходящий Webhook** в настройках бота (подробнее — в разделе [Настройка и типы событий](/guides/webhook/events#obschie-nastroyki)), чтобы получать события через метод [История событий](/api/bots/list-events). Без неё метод отдаёт пустой список. Включить настройку можно и программно — полем `events_history_enabled` в методах [Новый бот](/api/bots/create) и [Редактирование бота](/api/bots/update). +Включите настройку **Сохранять историю событий** на вкладке **Исходящий вебхук** в карточке бота (подробнее — в разделе [Настройка и типы событий](/guides/webhook/events#obschie-nastroyki)), чтобы получать события через метод [История событий](/api/bots/list-events). Без неё метод отдаёт пустой список. В интерфейсе настройка появляется только после включения вебхука, то есть когда указан URL. Если принимать запросы нельзя совсем, включите историю программно — полем `events_history_enabled` в методах [Новый бот](/api/bots/create) и [Редактирование бота](/api/bots/update): адрес вебхука для этого не нужен. > SDK helpers по умолчанию начинают читать только события, созданные после запуска воркера, и дедуплицируют уже обработанные delivery ID в памяти. @@ -2886,7 +3854,7 @@ SDK helpers используют метод [История событий](/api ### Шаг 1. Создайте бота -Перейдите в **Автоматизации** > **Интеграции** > **Чат-боты и Вебхуки** и создайте бота. Подробнее — в разделе [Боты](/guides/bots/overview). +Откройте **Интеграции** > **Боты** и нажмите **Создать бота**. Подробнее — в разделе [Боты](/guides/bots/overview). ### Шаг 2. Отправьте сообщение с кнопками @@ -2896,7 +3864,7 @@ SDK helpers используют метод [История событий](/api ### Шаг 3. Настройте исходящий вебхук -Для обработки Data-кнопок укажите Webhook URL в настройках бота на вкладке **Исходящий Webhook** и включите событие **Нажатие кнопок**. Подробнее — в разделе [Исходящие вебхуки](/guides/webhook/overview). +Для обработки Data-кнопок включите вебхук на вкладке **Исходящий вебхук** в карточке бота, указав URL своего сервера, и отметьте событие **Нажатие кнопок**. Подробнее — в разделе [Исходящие вебхуки](/guides/webhook/overview). ### Шаг 4. Обработайте нажатие @@ -3228,7 +4196,7 @@ sequenceDiagram Значения: `radio` — Для радиокнопок всегда radio - `name: string` (required, max length: 255) — Название, которое будет передано в ваше приложение как ключ указанного пользователем выбора. Пример: `"accessibility"` - `label: string` (required, max length: 150) — Подпись к группе радиокнопок. Пример: `"Доступность"` -- `options: array of object` (required, max items: 10) — Массив радиокнопок +- `options: array of object` (required, max items: 20) — Массив радиокнопок - `text: string` (required, max length: 75) — Отображаемый текст. Пример: `"Ничего"` - `value: string` (required, max length: 255) — Уникальное строковое значение, которое будет передано в ваше приложение при выборе этого пункта. Пример: `"nothing"` - `description: string` (max length: 75) — Пояснение, которое будет указано серым цветом в этом пункте под отображаемым текстом. Пример: `"Каждый день бот будет присылать список новых задач в вашей команде"` @@ -3250,7 +4218,7 @@ sequenceDiagram Значения: `checkbox` — Для чекбоксов всегда checkbox - `name: string` (required, max length: 255) — Название, которое будет передано в ваше приложение как ключ указанного пользователем выбора. Пример: `"newsletters"` - `label: string` (required, max length: 150) — Подпись к группе чекбоксов. Пример: `"Рассылки"` -- `options: array of object` (required, max items: 10) — Массив чекбоксов +- `options: array of object` (required, max items: 20) — Массив чекбоксов - `text: string` (required, max length: 75) — Отображаемый текст. Пример: `"Ничего"` - `value: string` (required, max length: 255) — Уникальное строковое значение, которое будет передано в ваше приложение при выборе этого пункта. Пример: `"nothing"` - `description: string` (max length: 75) — Пояснение, которое будет указано серым цветом в этом пункте под отображаемым текстом. Пример: `"Каждый день бот будет присылать список новых задач в вашей команде"` @@ -3339,9 +4307,11 @@ sequenceDiagram ## Получение результатов -После заполнения пользователем полей в представлении и отправки их, в ваше приложение отправляется исходящий вебхук. Вебхук будет отправлен на `Webhook URL`, который вы указали в настройках бота во вкладке «Исходящий Webhook», от имени которого было отправлено сообщение с кнопкой (нажатие на которую и вызвало открытие представления). +После заполнения пользователем полей в представлении и отправки их, в ваше приложение отправляется исходящий вебхук. Вебхук будет отправлен на `Webhook URL` того бота, от имени которого было отправлено сообщение с кнопкой (нажатие на неё и открыло представление). Адрес задаётся на вкладке «Исходящий вебхук» в карточке бота. -Задача вашего приложения - обработать входяший вебхук в короткое время и дать ответ. Это может быть как успех и команда на закрытие представления пользователю в интерфейсе Пачки, так и набор ошибок, которые необходио отобразить пользователю в представлении. +Отправку формы бот получает, только если у него включено событие **Нажатие кнопок** (`button_click`). Добавлять бота в чат для этого не нужно: вебхук приходит тому боту, который открыл форму. + +Задача вашего приложения - обработать входящий вебхук в короткое время и дать ответ. Это может быть как успех и команда на закрытие представления пользователю в интерфейсе Пачки, так и набор ошибок, которые необходимо отобразить пользователю в представлении. Ваше приложение должно дать ответ на вебхук в течение **3 секунд**. В ином случае, пользователь получит ошибку отправки в интерфейсе Пачки. Все значения полей будут сохранены и **пользователь повторит попытку отправки формы**. @@ -3512,19 +4482,19 @@ Unfurling — это создание превью ссылки в сообще ## Как это работает - ### Шаг 1. Создайте Unfurl-бота + ### Шаг 1. Создайте бота -Перейдите в **Автоматизации** > **Интеграции** > **Чат-боты и Вебхуки** и создайте бота с типом **Unfurl бот**. Создать такого бота может только владелец пространства или участник с ролью «Администратор». Подробнее — в разделе [Боты](/guides/bots/overview). +Откройте **Интеграции** > **Боты** и нажмите **Создать бота**. Подробнее — в разделе [Создание бота](/guides/bots/setup). - ### Шаг 2. Укажите домены + ### Шаг 2. Включите исходящий вебхук -В настройках Unfurl-бота укажите до 5 доменов, ссылки на которые бот будет отслеживать. Бот отслеживает ссылки во всех чатах пространства — добавлять его в конкретные чаты не нужно. +В карточке бота на вкладке **Исходящий вебхук** нажмите **Включить** и укажите URL вашего сервера. Подробнее — в разделе [Исходящие вебхуки](/guides/webhook/overview). - ### Шаг 3. Настройте исходящий вебхук + ### Шаг 3. Включите событие и укажите домены -На вкладке **Исходящий Webhook** укажите URL вашего сервера и включите событие **Отправка ссылок**. Подробнее — в разделе [Исходящие вебхуки](/guides/webhook/overview). +В списке событий в группе **Ссылки** включите **Отправка ссылок в сообщении (unfurl)** и перечислите через запятую до 5 доменов, ссылки на которые бот будет отслеживать. Бот получает ссылки из всех чатов пространства, поэтому добавлять его в чаты не нужно, а включить событие, задать домены и менять адрес исходящего вебхука у такого бота может только администратор или владелец пространства. Через API это событие `message_link_shared` в поле `events` и домены в `unfurl_domains` метода [Редактирование бота](/api/bots/update). ### Шаг 4. Обработайте вебхук @@ -3562,10 +4532,20 @@ Unfurling — это создание превью ссылки в сообще - `domain: string` (required) — Домен ссылки. Пример: `"example.com"` - `skip: boolean` (required) — Признак того, что автор сообщения скрыл превью для этой ссылки. Если `true` — бот не должен создавать превью. Пример: `false` - `user_id: integer, int32` (required) — Идентификатор отправителя сообщения. Пример: `2345` +- `entity_type: string` (required) — Тип сущности, к которой относится сообщение со ссылкой + Значения: `discussion` — Беседа или канал, `thread` — Тред, `user` — Пользователь +- `entity_id: integer, int32` (required, nullable) — Идентификатор сущности: беседы или канала, треда. В личной переписке `null`: бот в ней не участвует, и собеседника ему не раскрывают. Пример: `23438` +- `thread: object` (required) — Тред, в котором отправлено сообщение со ссылкой. `null`, если сообщение отправлено не в треде. + - `message_id: integer, int32` (required, nullable) — Идентификатор сообщения, к которому был создан тред. `null` у треда без сообщения-родителя — такие создаёт [Новый самостоятельный тред](/api/threads/create). Пример: `12345` + - `message_chat_id: integer, int32` (required, nullable) — Идентификатор чата сообщения, к которому был создан тред. `null` у треда без сообщения-родителя. Пример: `67890` - `created_at: date-time` (required) — Дата и время создания сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2024-09-18T19:53:14.000Z"` - `webhook_timestamp: integer, int32` (required) — Дата и время отправки вебхука (UTC+0) в формате UNIX. Пример: `1726685594` +Поля `entity_type`, `entity_id` и `thread` — те же, что в вебхуке о новом сообщении: по ним видно, в беседе, канале, треде или личной переписке отправлена ссылка. Бот не состоит в этом чате, поэтому в личной переписке `entity_id` приходит `null`. + +Ссылки из сообщений другого бота приходят, только если у того включён показ превью ссылок во входящем вебхуке. Ссылки из своих сообщений бот не получает, если у него включено «Игнорировать свои сообщения». + ## Создание превью Для создания превью используйте метод [Unfurl (разворачивание ссылок)](/api/messages/unfurl), передав `message_id` из вебхука. @@ -4164,6 +5144,11 @@ curl "https://api.pachca.com/api/shared/v1/messages/194275/link_previews" \ - `bot_token_recreated` — Токен бота перевыпущен (ротация) - `bot_deleted` — Бот удалён - `bot_oauth_client_updated` — Изменены параметры OAuth-клиента бота +- `bot_oauth_client_disabled` — У бота выключена авторизация от имени сотрудника +- `bot_oauth_client_secret_rotated` — Обновлён секрет OAuth-клиента бота +- `bot_token_created` — Выпущен токен бота +- `bot_token_updated` — Изменены имя или скоупы токена бота +- `bot_token_reissued` — Отдельный токен бота перевыпущен - `oauth_authorization_granted` — Пользователь выдал OAuth-клиенту доступ к своим данным - `oauth_authorization_revoked` — Доступ OAuth-клиента к данным пользователя отозван - `oauth_device_authorization_approved` — Сотрудник подтвердил вход приложения с устройства @@ -4282,7 +5267,7 @@ curl "https://api.pachca.com/api/shared/v1/audit_events?start_time=2025-05-01T00 У API почти нет собственной логики доступа. Он работает по тем же правилам, что и интерфейс Пачки: токен видит ровно то, что видит выдавший его сотрудник, и может ровно то же, что может он. Если сотрудник не состоит в закрытом канале, то и его токен не получит оттуда ни сообщений, ни списка участников. -Исключения из правила есть, и все они описаны ниже: гости и мульти-гости не работают с API вовсе, а Владелец пространства может получить перечень всех чатов и всех ботов, состав участников любого чата и выгрузить переписку всего пространства. +Исключения из правила есть, и все они описаны ниже: гости не работают с API вовсе, а Владелец пространства может получить перечень всех чатов и всех ботов, состав участников любого чата и выгрузить переписку всего пространства. [Скоупы](/api/authorization#skoupy) работают поверх этих правил и только сужают доступ. Скоуп открывает методы, но не расширяет видимость: с `chats:read` вы получите те же чаты, что видны в интерфейсе, и ни одним больше. @@ -4314,19 +5299,33 @@ curl "https://api.pachca.com/api/shared/v1/audit_events?start_time=2025-05-01T00 **Владелец не выделен отдельным значением роли.** В поле `role` у него `admin`, как и у остальных администраторов, и определить Владельца по объекту сотрудника нельзя. Редактировать его чужим токеном нельзя вообще: [Редактирование сотрудника](/api/users/update), [Загрузка аватара сотрудника](/api/users/update-avatar) и [Удаление сотрудника](/api/users/delete) возвращают для Владельца `403`. Своим токеном он меняет собственный профиль, но не может сменить себе роль и не может себя деактивировать. -**Гости и мульти-гости не работают с API.** Создать токен они не могут: для этого нужно право на работу с API, а гостевым ролям оно не выдаётся. Если токен был получен до смены роли, любой запрос вернёт `403`. Ограничение касается только их собственных токенов: сами гости остаются полноценными участниками чатов, куда их добавили, и другие токены видят их как обычных участников. +**Гости не работают с API.** Создать токен, войти в CLI или авторизовать бота гость не может: права на работу с API у этой роли нет. Если токен был получен до смены роли, любой запрос вернёт `403`. Ограничение касается только его собственных токенов: сам гость остаётся полноценным участником чата, куда его пригласили, и другие токены видят его как обычного участника. + +**Мульти-гость работает с API наравне с сотрудником**, но видит через него ровно то же, что в интерфейсе. Он создаёт персональные токены, входит в CLI и авторизует ботов, а создавать и настраивать ботов не может. Подробнее — в разделе [Мульти-гость в API](#multi-gost-v-api). ### Что доступно только Владельцу и Администратору -Большинство скоупов доступно всем ролям, кроме гостевых. Исключения стоит знать заранее, потому что при создании токена такие скоупы просто не появятся в списке: +Большинство скоупов доступно всем ролям, кроме гостя. Исключения стоит знать заранее, потому что при создании токена такие скоупы просто не появятся в списке: - **Только Владелец** — `chat_exports:read`, `chat_exports:write` для [экспорта сообщений](/guides/export), `audit_events:read` для [журнала аудита](/guides/audit-events), `company_chats:read` для метода [Список чатов пространства](/api/chats/list-company) и `company_bots:read` для метода [Список ботов пространства](/api/bots/list-company). Все они доступны на тарифе **Корпорация**. - **Владелец и Администратор** — `users:create`, `users:update`, `users:delete`, `user_status:write`, `user_avatar:write`, `group_tags:write` для [тегов](/guides/tags). - **Только токен бота** — `bot_self:write` и `bot_self:webhook:write` для самоуправления бота. Персональному токену они недоступны при любой роли. -- **Только персональный токен** — `bots:read` и `bots:write` для [управления ботами](/guides/bots/overview) и `drafts:read`, `drafts:write` для черновиков и отложенных сообщений — [Новый черновик](/api/drafts/create) и соседние методы. Роль здесь ни при чём: эти скоупы есть у любого негостевого сотрудника, но токену бота их не выдать, и с ним метод отвечает `403`. То есть бот не может ни завести другого бота, ни написать черновик. +- **Только персональный токен** — `bots:read` и `bots:write` для [управления ботами](/guides/bots/overview) и `drafts:read`, `drafts:write` для черновиков и отложенных сообщений — [Новый черновик](/api/drafts/create) и соседние методы. Скоупы ботов есть у Владельца, Администраторов и Сотрудников, скоупы черновиков — ещё и у мульти-гостя, а токену бота их не выдать вовсе: с ним метод отвечает `403`. То есть бот не может ни завести другого бота, ни написать черновик. Полная таблица скоупов по ролям — в разделе [Авторизация](/api/authorization#dostupnye-skoupy). +### Мульти-гость в API + +Мульти-гость видит в интерфейсе только чаты, куда его добавили, и их участников. API отдаёт ему ровно столько же: + +- **Сотрудники** — [Список сотрудников](/api/users/list), [Информация о сотруднике](/api/users/get) и [Статус сотрудника](/api/users/get-status) отдают его самого, участников общих с ним чатов вместе с ботами и публичных ботов. Треды и архивные чаты общими не считаются, на остальных сотрудников методы отвечают `404`. У чужих сотрудников `list_tags` приходит пустым, а почта и телефон — `null`. +- **Чаты** — [Список чатов](/api/chats/list) с `availability=public` отдаёт только открытые чаты, где он участник. Создать беседу или канал он не может, как и выйти из чата: методы [Новый чат](/api/chats/create) и [Выход из чата](/api/members/leave) отвечают `403`, как и в интерфейсе. +- **Напоминания** — [Список напоминаний](/api/tasks/list) с `chat_ids` отдаёт напоминания только тех чатов, где он участник, и доступных ему тредов: открытые чаты, куда он не вступал, не учитываются. +- **Теги** — [Список тегов](/api/group-tags/list) и [Информация о теге](/api/group-tags/get) отдают только теги активных бесед и каналов, где он участник. [Список сотрудников тега](/api/group-tags/list-users) ему закрыт и отвечает `403`. +- **Упоминания** — `<@id>` в методах [Новое сообщение](/api/messages/create) и [Редактирование сообщения](/api/messages/update) превращается в упоминание только для доступных ему сотрудников, остальные остаются в тексте как есть. +- **Черновики** — черновики и отложенные сообщения доступны ему, как сотруднику: скоупы `drafts:read` и `drafts:write` выдаются и мульти-гостю. +- **Боты** — скоупы `bots:read` и `bots:write` ему не выдаются, поэтому создавать и настраивать ботов он не может. Авторизовать бота и подключить его из [витрины](/guides/bots/showcase) — может. Добавлять ботов в чаты он не может ни при какой настройке бота. + ## Токен и смена роли Права токена сверяются с текущей ролью владельца **при каждом запросе**, а не только в момент создания ключа. Поэтому изменения роли отражаются на токене сразу и пересоздавать его не нужно. @@ -4401,7 +5400,7 @@ curl "https://api.pachca.com/api/shared/v1/audit_events?start_time=2025-05-01T00 - **Личные сообщения** — доступны только собеседникам. - **Треды** — доступны участникам родительского чата и тем, кого добавили в сам тред. В треде открытого чата — всем сотрудникам пространства. Подробнее — в разделе [Треды](/guides/threads). -Гости и мульти-гости видят только те чаты, в которые их добавили. Открытые чаты пространства им недоступны. +Гости и мульти-гости видят только те чаты, в которые их добавили. Открытые чаты пространства им недоступны. Как это правило действует в API для мульти-гостя — в разделе [Мульти-гость в API](#multi-gost-v-api). ### Что доступно Владельцу пространства сверх остальных @@ -4480,6 +5479,8 @@ GET /api/shared/v1/company/chats Видимость бота определяется правом на его редактирование, а не участием в чатах. [Список ботов](/api/bots/list) возвращает только тех ботов, которых вам разрешено редактировать: созданных вами и тех, чьи настройки открывают вам доступ. Это правило действует для всех ролей, включая Администратора пространства. +Имя бота, его токены, авторизация от имени сотрудника, страница в витрине и удаление бота доступны только создателю и Администраторам, если настройки бота открывают им доступ. Руководителю чата с ботом эти методы отвечают `403`, даже когда остальные настройки ему открыты. Что из этого доступно вам, показывает поле `permissions` в объекте бота. + ### Инвентаризация ботов пространства Полный перечень ботов пространства отдаёт [Список ботов пространства](/api/bots/list-company): @@ -4488,7 +5489,7 @@ GET /api/shared/v1/company/chats GET /api/shared/v1/company/bots ``` -Нужен тариф **Корпорация**, скоуп `company_bots:read` и роль Владельца — Администратору метод отвечает `403`. У ботов, недоступных вам для редактирования, приходят только имя и никнейм, а остальные настройки вебхука — `null`: адрес исходящего вебхука, события, команды, скоупы и права на редактирование не раскрываются. Форма объекта при этом та же, что у доступных ботов. Каждый запрос попадает в [журнал аудита](/guides/audit-events) как событие `company_bots_accessed`. +Нужен тариф **Корпорация**, скоуп `company_bots:read` и роль Владельца — Администратору метод отвечает `403`. У ботов, недоступных вам для редактирования, приходят только имя и никнейм, а остальные настройки вебхука и `oauth_client` — `null`: адрес исходящего вебхука, события, команды, скоупы и права на редактирование не раскрываются. Форма объекта при этом та же, что у доступных ботов. Каждый запрос попадает в [журнал аудита](/guides/audit-events) как событие `company_bots_accessed`. Лимит тот же, что у инвентаризации чатов, — около 30 запросов в минуту на токен, он общий на оба метода. @@ -4954,7 +5955,7 @@ GET /api/shared/v1/company/bots 2. Сохрани `access_token` из ответа — он возвращается единственный раз. Повторно его не показывают, можно только перевыпустить командой `pachca bots recreate-token ` 3. В ответе также придёт `id` бота (его `user_id`) — он нужен для дальнейших вызовов, например чтобы добавить бота в чат -> Создавать ботов можно только пользовательским токеном — токеном бота нельзя. `access_token` отдаётся один раз при создании, дальше его можно посмотреть и скопировать в интерфейсе. +> Создавать ботов можно только пользовательским токеном — токеном бота нельзя. `access_token` отдаётся один раз при создании, увидеть его снова нельзя, только перевыпустить. С флагом `--empty` бот создаётся без токена и входящего вебхука, как в интерфейсе, а токены ему выпускает `pachca bots create-token`. **Настроить бота с исходящим вебхуком** @@ -4973,16 +5974,33 @@ GET /api/shared/v1/company/bots **Ротация токена бота** -1. Пользовательским токеном (администратор, владелец компании или создатель бота) — перевыпусти токен по `id` бота. Прежний токен инвалидируется сразу -2. Или: бот перевыпускает собственный токен своим же токеном (скоуп `bot_self:write`). Токен, которым выполнен запрос, инвалидируется сразу — обязательно сохрани новый `access_token` из ответа, иначе бот потеряет доступ к API -3. Сохрани новый `access_token` из ответа — он возвращается единственный раз. Обнови секрет в CI или хранилище секретов +1. Пользовательским токеном (создатель бота или администратор, если бот открыт администраторам) — перевыпусти основной токен по `id` бота: тот, что без имени, а если такого нет, самый старый. Прежнее значение инвалидируется сразу +2. Или: бот перевыпускает свой основной токен сам (скоуп `bot_self:write`). Если запрос сделан основным токеном, он инвалидируется сразу — обязательно сохрани новый `access_token` из ответа, иначе бот потеряет доступ к API +3. Отдельный токен бота перевыпускай по его `id` из `pachca bots list-tokens`: значение меняется, имя и права остаются +4. Сохрани новый `access_token` из ответа — он возвращается единственный раз. Обнови секрет в CI или хранилище секретов + +> Новое значение возвращается один раз. Self-путь (`POST /bot/recreate_token`) перевыпускает основной токен бота — если бот ходит им, захвати новый токен из ответа в той же операции. + +**Выпустить боту отдельный токен** + +1. Пользовательским токеном (создатель бота или администратор, если бот открыт администраторам) получи каталог прав, которые можно выдать этому боту +2. Выпусти токен с именем и правами из каталога. Без `--scopes` токен выпускается без прав, право не из каталога отклоняется с `400` +3. Сохрани `token` из ответа — полное значение возвращается единственный раз. Дальше в списке `pachca bots list-tokens` он приходит замаскированным + +> Отдельный токен удобен на каждый сервис, который работает от имени бота: его отзывают командой `pachca bots delete-token`, не трогая остальные. Права меняет `pachca bots update-token` — они действуют сразу, перевыпускать токен не нужно. -> Новый токен возвращается один раз. Self-путь (`POST /bot/recreate_token`) инвалидирует именно тот токен, которым выполнен запрос, — захвати новый токен из ответа в той же операции. +**Включить боту авторизацию от имени сотрудника** + +1. Пользовательским токеном (создатель бота или администратор, если бот открыт администраторам) включи авторизацию: где хранится секрет, адреса возврата и права, которые бот попросит у сотрудника. Права бери из `pachca bots list-scopes` +2. Сохрани `client_secret` из ответа серверного клиента — он возвращается единственный раз. `client_id` приходит в `oauth_client` и не секретный +3. Чтобы бот появился в витрине, добавь описание и опубликуй страницу + +> Включена ли авторизация, показывает `oauth_client_enabled`: `oauth_client` может прийти и у бота с выключенной авторизацией. `--oauth-client=null` выключает её и отзывает выданные сотрудниками авторизации, новый секрет выпускает `pachca bots rotate-client-secret`. **Найти и удалить бота** 1. Пользовательским токеном (скоуп `bots:read`) получи список ботов, доступных тебе для редактирования: созданных тобой и тех, чьи настройки открывают тебе доступ. Фильтруй по имени параметром `query`, следующую страницу бери из `meta.paginate.next_page` -2. Возьми `id` нужного бота из списка и удали его (скоуп `bots:write`). Доступно администратору, владельцу компании или создателю бота — владельцы чатов удалять бота не могут. Прежний токен инвалидируется сразу, бот исключается из всех чатов, его исходящий вебхук удаляется +2. Возьми `id` нужного бота из списка и удали его (скоуп `bots:write`). Доступно создателю бота и администратору, если бот открыт администраторам, — владельцы чатов удалять бота не могут. Все токены бота инвалидируются сразу, бот исключается из всех чатов, его вебхуки удаляются > Удаление необратимо: токен бота инвалидируется сразу, бот исключается из чатов. Событие фиксируется в журнале аудита как `bot_deleted`. @@ -4998,12 +6016,12 @@ GET /api/shared/v1/company/bots **Разворачивание ссылок (unfurling)** -1. Создай специального Unfurl-бота и укажи отслеживаемые домены +1. В карточке бота на вкладке «Исходящий вебхук» включи событие «Отправка ссылок в сообщении (unfurl)» и укажи до 5 доменов — это может только администратор или владелец пространства 2. При появлении ссылки бот получает вебхук `"event": "link_shared"` с массивом `links`. Каждый объект содержит `url`, `domain` и `skip: boolean` — если `skip` равен `true`, автор скрыл превью и бот должен пропустить эту ссылку 3. Извлеки данные из своей системы по URL из `links` (пропуская объекты с `skip: true`) 4. Отправь превью-данные -> Эндпоинт привязан к конкретному сообщению. Необходим специальный Unfurl-бот с указанными доменами. +> Эндпоинт привязан к конкретному сообщению. Боту нужно событие разворачивания ссылок с доменами: ссылки приходят из всех чатов пространства, добавлять бота в чаты не нужно. **Обработать нажатие кнопки (callback)** @@ -5031,7 +6049,7 @@ GET /api/shared/v1/company/bots **Обработка событий через историю (polling)** -1. В настройках бота включи «Сохранять историю событий». Webhook URL указывать не обязательно. +1. Включи историю событий флагом `--events-history-enabled` (Webhook URL для этого не нужен) или настройкой «Сохранять историю событий» на вкладке «Исходящий вебхук» — в интерфейсе она появляется после включения вебхука 2. Получи накопленные события 3. Обработай каждое событие (тот же формат, что и в real-time вебхуке) 4. Удали обработанное событие @@ -5201,7 +6219,7 @@ npm install -g @pachca/cli ### Шаг 2. Вход в аккаунт -Если вход выполняете вы сами, достаточно подтвердить его в браузере — получать токен заранее не нужно. Для CI и агентов, где подтверждать некому, передайте готовый токен из раздела **Автоматизации** > **API**. +Если вход выполняете вы сами, достаточно подтвердить его в браузере — получать токен заранее не нужно. Для CI и агентов, где подтверждать некому, передайте готовый токен со страницы **Интеграции** > **API**. ```bash # Подтверждение в браузере @@ -5411,6 +6429,8 @@ pachca auth login Под капотом — стандартный вход по коду устройства (OAuth 2.0 Device Authorization Grant, [RFC 8628](https://datatracker.ietf.org/doc/html/rfc8628)). CLI не открывает локальный порт и не принимает редирект, поэтому одинаково работает на ноутбуке, в SSH-сессии и в контейнере. +Каждый вход виден в списке **Токены CLI** на странице **Интеграции** > **API** под именем устройства. CLI передаёт имя машины, а для профиля не по умолчанию добавляет его имя в скобках — например, `macbook (ci)`, — поэтому два входа с одного ноутбука в списке различаются. Рядом показаны время входа и последнего вызова, а отзыв из списка завершает вход только на выбранном устройстве. + ## Где хранится токен Токен уходит в хранилище ключей операционной системы: Keychain на macOS, Secret Service на Linux, Диспетчер учётных данных на Windows. Файл конфигурации хранит только имя, почту и права — секрета в нём нет. @@ -5436,7 +6456,7 @@ pachca auth status ## Вход готовым токеном -Получить токен можно в интерфейсе: **Настройки** > **Автоматизации** > **API**. +Персональный токен создаётся на странице **Интеграции** > **API**, токен бота — на вкладке **API** в карточке бота. ```bash echo "$PACHCA_TOKEN" | pachca auth login --token - @@ -5499,8 +6519,8 @@ pachca auth logout bot-notify `pachca auth logout` удаляет профиль **с этой машины**. Что при этом происходит с самим токеном, зависит от способа входа: -- **Вход через браузер.** Токен гасится на сервере сразу — доступ закрывается в момент выхода, а не по истечении срока. Если сервер в этот момент недоступен, CLI об этом скажет: профиль всё равно удаляется, а токен доживает свой час. В списке токенов в **Автоматизации** > **API** такая сессия не появляется: она принадлежит приложению «Pachca CLI», а не вам. -- **Готовый токен.** Продолжит работать — он бессрочный. Удалите его в **Автоматизации** > **API**, если он больше не нужен. +- **Вход через браузер.** Токен гасится на сервере сразу — доступ закрывается в момент выхода, а не по истечении срока, и вход пропадает из списка **Токены CLI**. Если сервер в этот момент недоступен, CLI об этом скажет: профиль всё равно удаляется, а токен доживает свой час. Завершить вход можно и без терминала — кнопкой **Отозвать** в списке **Токены CLI**, например на потерянном ноутбуке. Команды с отозванным профилем отвечают `401` с подсказкой войти заново, в неё подставлено имя профиля. +- **Готовый токен.** Продолжит работать — он бессрочный. Удалите его на странице **Интеграции** > **API** или, если это токен бота, в карточке бота, когда он больше не нужен. ## Приоритет токена @@ -6147,15 +7167,22 @@ dev.pachca.com/api/members/add → pachca members add | `pachca auth status` | Статус текущего профиля | | `pachca auth switch` | Переключение активного профиля | | `pachca bots create` | `POST` Новый бот | +| `pachca bots create-token` | `POST` Новый токен бота | | `pachca bots delete` | `DELETE` Удаление бота | +| `pachca bots delete-token` | `DELETE` Удаление токена бота | | `pachca bots get` | `GET` Информация о боте | | `pachca bots list` | `GET` Список ботов | | `pachca bots list-company` | `GET` Список ботов пространства | | `pachca bots list-events` | `GET` История событий | +| `pachca bots list-scopes` | `GET` Каталог прав бота | +| `pachca bots list-tokens` | `GET` Список токенов бота | | `pachca bots recreate-token` | `POST` Ротация токена бота | | `pachca bots recreate-token-self` | `POST` Ротация собственного токена бота | +| `pachca bots reissue-token` | `POST` Перевыпуск токена бота | | `pachca bots remove-event` | `DELETE` Удаление события | +| `pachca bots rotate-client-secret` | `POST` Ротация секрета клиента | | `pachca bots update` | `PUT` Редактирование бота | +| `pachca bots update-token` | `PUT` Изменение токена бота | | `pachca bots update-webhook` | `PUT` Саморегистрация вебхука бота | | `pachca changelog` | История изменений CLI | | `pachca chats archive` | `PUT` Архивация чата | @@ -6164,6 +7191,7 @@ dev.pachca.com/api/members/add → pachca members add | `pachca chats get` | `GET` Информация о чате | | `pachca chats list` | `GET` Список чатов | | `pachca chats list-company` | `GET` Список чатов пространства | +| `pachca chats mark-unread` | `PUT` Отметка чата непрочитанным | | `pachca chats request-export` | `POST` Экспорт сообщений | | `pachca chats unarchive` | `PUT` Разархивация чата | | `pachca chats update` | `PUT` Редактирование чата | @@ -6384,7 +7412,7 @@ npm install @pachca/sdk ### Шаг 2. Создание клиента -Получите API-токен в интерфейсе Пачки: **Настройки** > **Автоматизации** > **API** (подробнее — [Авторизация](/api/authorization)). +Получите API-токен в интерфейсе Пачки: **Интеграции** > **API** (подробнее — [Авторизация](/api/authorization)). ```typescript import { PachcaClient } from "@pachca/sdk" @@ -6435,6 +7463,7 @@ const client = new PachcaClient("YOUR_TOKEN", "https://custom-api.example.com/ap | `client.chats.updateChat()` | [Редактирование чата](/api/chats/update) | | `client.chats.archiveChat()` | [Архивация чата](/api/chats/archive) | | `client.chats.unarchiveChat()` | [Разархивация чата](/api/chats/unarchive) | +| `client.chats.markChatUnread()` | [Отметка чата непрочитанным](/api/chats/mark-unread) | | `client.profile.getProfile()` | [Свой профиль](/api/profile/get) | | `client.profile.getStatus()` | [Свой статус](/api/profile/get-status) | | `client.profile.updateProfileAvatar()` | [Загрузка своего аватара](/api/profile/update-avatar) | @@ -6498,14 +7527,21 @@ const client = new PachcaClient("YOUR_TOKEN", "https://custom-api.example.com/ap | `client.bots.createBot()` | [Новый бот](/api/bots/create) | | `client.bots.selfRecreateBotToken()` | [Ротация собственного токена бота](/api/bots/recreate-token-self) | | `client.bots.recreateBotToken()` | [Ротация токена бота](/api/bots/recreate-token) | +| `client.bots.rotateBotClientSecret()` | [Ротация секрета клиента](/api/bots/rotate-client-secret) | +| `client.bots.createBotToken()` | [Новый токен бота](/api/bots/create-token) | +| `client.bots.reissueBotToken()` | [Перевыпуск токена бота](/api/bots/reissue-token) | | `client.bots.listBots()` | [Список ботов](/api/bots/list) | | `client.bots.getBot()` | [Информация о боте](/api/bots/get) | | `client.bots.listCompanyBots()` | [Список ботов пространства](/api/bots/list-company) | | `client.bots.getWebhookEvents()` | [История событий](/api/bots/list-events) | +| `client.bots.getBotScopes()` | [Каталог прав бота](/api/bots/list-scopes) | +| `client.bots.listBotTokens()` | [Список токенов бота](/api/bots/list-tokens) | | `client.bots.selfUpdateBotWebhook()` | [Саморегистрация вебхука бота](/api/bots/update-webhook) | | `client.bots.updateBot()` | [Редактирование бота](/api/bots/update) | +| `client.bots.updateBotToken()` | [Изменение токена бота](/api/bots/update-token) | | `client.bots.deleteBot()` | [Удаление бота](/api/bots/delete) | | `client.bots.deleteWebhookEvent()` | [Удаление события](/api/bots/remove-event) | +| `client.bots.deleteBotToken()` | [Удаление токена бота](/api/bots/delete-token) | | `client.security.getAuditEvents()` | [Журнал аудита событий](/api/security/list) | | `client.customProperties.listProperties()` | [Список дополнительных полей](/api/custom-properties/list) | | `client.files.uploadFile()` | [Загрузка файла](/api/files/direct-url) | @@ -6817,7 +7853,7 @@ pip install pachca-sdk ### Шаг 2. Создание клиента -Получите API-токен в интерфейсе Пачки: **Настройки** > **Автоматизации** > **API** (подробнее — [Авторизация](/api/authorization)). +Получите API-токен в интерфейсе Пачки: **Интеграции** > **API** (подробнее — [Авторизация](/api/authorization)). ```python from pachca.client import PachcaClient @@ -6875,6 +7911,7 @@ await client.close() | `client.chats.update_chat()` | [Редактирование чата](/api/chats/update) | | `client.chats.archive_chat()` | [Архивация чата](/api/chats/archive) | | `client.chats.unarchive_chat()` | [Разархивация чата](/api/chats/unarchive) | +| `client.chats.mark_chat_unread()` | [Отметка чата непрочитанным](/api/chats/mark-unread) | | `client.profile.get_profile()` | [Свой профиль](/api/profile/get) | | `client.profile.get_status()` | [Свой статус](/api/profile/get-status) | | `client.profile.update_profile_avatar()` | [Загрузка своего аватара](/api/profile/update-avatar) | @@ -6938,14 +7975,21 @@ await client.close() | `client.bots.create_bot()` | [Новый бот](/api/bots/create) | | `client.bots.self_recreate_bot_token()` | [Ротация собственного токена бота](/api/bots/recreate-token-self) | | `client.bots.recreate_bot_token()` | [Ротация токена бота](/api/bots/recreate-token) | +| `client.bots.rotate_bot_client_secret()` | [Ротация секрета клиента](/api/bots/rotate-client-secret) | +| `client.bots.create_bot_token()` | [Новый токен бота](/api/bots/create-token) | +| `client.bots.reissue_bot_token()` | [Перевыпуск токена бота](/api/bots/reissue-token) | | `client.bots.list_bots()` | [Список ботов](/api/bots/list) | | `client.bots.get_bot()` | [Информация о боте](/api/bots/get) | | `client.bots.list_company_bots()` | [Список ботов пространства](/api/bots/list-company) | | `client.bots.get_webhook_events()` | [История событий](/api/bots/list-events) | +| `client.bots.get_bot_scopes()` | [Каталог прав бота](/api/bots/list-scopes) | +| `client.bots.list_bot_tokens()` | [Список токенов бота](/api/bots/list-tokens) | | `client.bots.self_update_bot_webhook()` | [Саморегистрация вебхука бота](/api/bots/update-webhook) | | `client.bots.update_bot()` | [Редактирование бота](/api/bots/update) | +| `client.bots.update_bot_token()` | [Изменение токена бота](/api/bots/update-token) | | `client.bots.delete_bot()` | [Удаление бота](/api/bots/delete) | | `client.bots.delete_webhook_event()` | [Удаление события](/api/bots/remove-event) | +| `client.bots.delete_bot_token()` | [Удаление токена бота](/api/bots/delete-token) | | `client.security.get_audit_events()` | [Журнал аудита событий](/api/security/list) | | `client.custom_properties.list_properties()` | [Список дополнительных полей](/api/custom-properties/list) | | `client.files.upload_file()` | [Загрузка файла](/api/files/direct-url) | @@ -7244,7 +8288,7 @@ go get github.com/pachca/openapi/sdk/go/generated ### Шаг 2. Создание клиента -Получите API-токен в интерфейсе Пачки: **Настройки** > **Автоматизации** > **API** (подробнее — [Авторизация](/api/authorization)). +Получите API-токен в интерфейсе Пачки: **Интеграции** > **API** (подробнее — [Авторизация](/api/authorization)). ```go import pachca "github.com/pachca/openapi/sdk/go/generated" @@ -7304,6 +8348,7 @@ user, err := client.Profile.GetProfile(ctx) | `client.Chats.UpdateChat()` | [Редактирование чата](/api/chats/update) | | `client.Chats.ArchiveChat()` | [Архивация чата](/api/chats/archive) | | `client.Chats.UnarchiveChat()` | [Разархивация чата](/api/chats/unarchive) | +| `client.Chats.MarkChatUnread()` | [Отметка чата непрочитанным](/api/chats/mark-unread) | | `client.Profile.GetProfile()` | [Свой профиль](/api/profile/get) | | `client.Profile.GetStatus()` | [Свой статус](/api/profile/get-status) | | `client.Profile.UpdateProfileAvatar()` | [Загрузка своего аватара](/api/profile/update-avatar) | @@ -7367,14 +8412,21 @@ user, err := client.Profile.GetProfile(ctx) | `client.Bots.CreateBot()` | [Новый бот](/api/bots/create) | | `client.Bots.SelfRecreateBotToken()` | [Ротация собственного токена бота](/api/bots/recreate-token-self) | | `client.Bots.RecreateBotToken()` | [Ротация токена бота](/api/bots/recreate-token) | +| `client.Bots.RotateBotClientSecret()` | [Ротация секрета клиента](/api/bots/rotate-client-secret) | +| `client.Bots.CreateBotToken()` | [Новый токен бота](/api/bots/create-token) | +| `client.Bots.ReissueBotToken()` | [Перевыпуск токена бота](/api/bots/reissue-token) | | `client.Bots.ListBots()` | [Список ботов](/api/bots/list) | | `client.Bots.GetBot()` | [Информация о боте](/api/bots/get) | | `client.Bots.ListCompanyBots()` | [Список ботов пространства](/api/bots/list-company) | | `client.Bots.GetWebhookEvents()` | [История событий](/api/bots/list-events) | +| `client.Bots.GetBotScopes()` | [Каталог прав бота](/api/bots/list-scopes) | +| `client.Bots.ListBotTokens()` | [Список токенов бота](/api/bots/list-tokens) | | `client.Bots.SelfUpdateBotWebhook()` | [Саморегистрация вебхука бота](/api/bots/update-webhook) | | `client.Bots.UpdateBot()` | [Редактирование бота](/api/bots/update) | +| `client.Bots.UpdateBotToken()` | [Изменение токена бота](/api/bots/update-token) | | `client.Bots.DeleteBot()` | [Удаление бота](/api/bots/delete) | | `client.Bots.DeleteWebhookEvent()` | [Удаление события](/api/bots/remove-event) | +| `client.Bots.DeleteBotToken()` | [Удаление токена бота](/api/bots/delete-token) | | `client.Security.GetAuditEvents()` | [Журнал аудита событий](/api/security/list) | | `client.CustomProperties.ListProperties()` | [Список дополнительных полей](/api/custom-properties/list) | | `client.Files.UploadFile()` | [Загрузка файла](/api/files/direct-url) | @@ -7700,7 +8752,7 @@ dependencies { ### Шаг 2. Создание клиента -Получите API-токен в интерфейсе Пачки: **Настройки** > **Автоматизации** > **API** (подробнее — [Авторизация](/api/authorization)). +Получите API-токен в интерфейсе Пачки: **Интеграции** > **API** (подробнее — [Авторизация](/api/authorization)). ```kotlin import com.pachca.sdk.PachcaClient @@ -7764,6 +8816,7 @@ client.close() | `client.chats.updateChat()` | [Редактирование чата](/api/chats/update) | | `client.chats.archiveChat()` | [Архивация чата](/api/chats/archive) | | `client.chats.unarchiveChat()` | [Разархивация чата](/api/chats/unarchive) | +| `client.chats.markChatUnread()` | [Отметка чата непрочитанным](/api/chats/mark-unread) | | `client.profile.getProfile()` | [Свой профиль](/api/profile/get) | | `client.profile.getStatus()` | [Свой статус](/api/profile/get-status) | | `client.profile.updateProfileAvatar()` | [Загрузка своего аватара](/api/profile/update-avatar) | @@ -7827,14 +8880,21 @@ client.close() | `client.bots.createBot()` | [Новый бот](/api/bots/create) | | `client.bots.selfRecreateBotToken()` | [Ротация собственного токена бота](/api/bots/recreate-token-self) | | `client.bots.recreateBotToken()` | [Ротация токена бота](/api/bots/recreate-token) | +| `client.bots.rotateBotClientSecret()` | [Ротация секрета клиента](/api/bots/rotate-client-secret) | +| `client.bots.createBotToken()` | [Новый токен бота](/api/bots/create-token) | +| `client.bots.reissueBotToken()` | [Перевыпуск токена бота](/api/bots/reissue-token) | | `client.bots.listBots()` | [Список ботов](/api/bots/list) | | `client.bots.getBot()` | [Информация о боте](/api/bots/get) | | `client.bots.listCompanyBots()` | [Список ботов пространства](/api/bots/list-company) | | `client.bots.getWebhookEvents()` | [История событий](/api/bots/list-events) | +| `client.bots.getBotScopes()` | [Каталог прав бота](/api/bots/list-scopes) | +| `client.bots.listBotTokens()` | [Список токенов бота](/api/bots/list-tokens) | | `client.bots.selfUpdateBotWebhook()` | [Саморегистрация вебхука бота](/api/bots/update-webhook) | | `client.bots.updateBot()` | [Редактирование бота](/api/bots/update) | +| `client.bots.updateBotToken()` | [Изменение токена бота](/api/bots/update-token) | | `client.bots.deleteBot()` | [Удаление бота](/api/bots/delete) | | `client.bots.deleteWebhookEvent()` | [Удаление события](/api/bots/remove-event) | +| `client.bots.deleteBotToken()` | [Удаление токена бота](/api/bots/delete-token) | | `client.security.getAuditEvents()` | [Журнал аудита событий](/api/security/list) | | `client.customProperties.listProperties()` | [Список дополнительных полей](/api/custom-properties/list) | | `client.files.uploadFile()` | [Загрузка файла](/api/files/direct-url) | @@ -8145,7 +9205,7 @@ dependencies: [ ### Шаг 2. Создание клиента -Получите API-токен в интерфейсе Пачки: **Настройки** > **Автоматизации** > **API** (подробнее — [Авторизация](/api/authorization)). +Получите API-токен в интерфейсе Пачки: **Интеграции** > **API** (подробнее — [Авторизация](/api/authorization)). ```swift import PachcaSDK @@ -8198,6 +9258,7 @@ let client = PachcaClient(token: "YOUR_TOKEN", baseURL: "https://custom-api.exam | `client.chats.updateChat()` | [Редактирование чата](/api/chats/update) | | `client.chats.archiveChat()` | [Архивация чата](/api/chats/archive) | | `client.chats.unarchiveChat()` | [Разархивация чата](/api/chats/unarchive) | +| `client.chats.markChatUnread()` | [Отметка чата непрочитанным](/api/chats/mark-unread) | | `client.profile.getProfile()` | [Свой профиль](/api/profile/get) | | `client.profile.getStatus()` | [Свой статус](/api/profile/get-status) | | `client.profile.updateProfileAvatar()` | [Загрузка своего аватара](/api/profile/update-avatar) | @@ -8261,14 +9322,21 @@ let client = PachcaClient(token: "YOUR_TOKEN", baseURL: "https://custom-api.exam | `client.bots.createBot()` | [Новый бот](/api/bots/create) | | `client.bots.selfRecreateBotToken()` | [Ротация собственного токена бота](/api/bots/recreate-token-self) | | `client.bots.recreateBotToken()` | [Ротация токена бота](/api/bots/recreate-token) | +| `client.bots.rotateBotClientSecret()` | [Ротация секрета клиента](/api/bots/rotate-client-secret) | +| `client.bots.createBotToken()` | [Новый токен бота](/api/bots/create-token) | +| `client.bots.reissueBotToken()` | [Перевыпуск токена бота](/api/bots/reissue-token) | | `client.bots.listBots()` | [Список ботов](/api/bots/list) | | `client.bots.getBot()` | [Информация о боте](/api/bots/get) | | `client.bots.listCompanyBots()` | [Список ботов пространства](/api/bots/list-company) | | `client.bots.getWebhookEvents()` | [История событий](/api/bots/list-events) | +| `client.bots.getBotScopes()` | [Каталог прав бота](/api/bots/list-scopes) | +| `client.bots.listBotTokens()` | [Список токенов бота](/api/bots/list-tokens) | | `client.bots.selfUpdateBotWebhook()` | [Саморегистрация вебхука бота](/api/bots/update-webhook) | | `client.bots.updateBot()` | [Редактирование бота](/api/bots/update) | +| `client.bots.updateBotToken()` | [Изменение токена бота](/api/bots/update-token) | | `client.bots.deleteBot()` | [Удаление бота](/api/bots/delete) | | `client.bots.deleteWebhookEvent()` | [Удаление события](/api/bots/remove-event) | +| `client.bots.deleteBotToken()` | [Удаление токена бота](/api/bots/delete-token) | | `client.security.getAuditEvents()` | [Журнал аудита событий](/api/security/list) | | `client.customProperties.listProperties()` | [Список дополнительных полей](/api/custom-properties/list) | | `client.files.uploadFile()` | [Загрузка файла](/api/files/direct-url) | @@ -8551,7 +9619,7 @@ dotnet add package Pachca.Sdk ### Шаг 2. Создание клиента -Получите API-токен в интерфейсе Пачки: **Настройки** > **Автоматизации** > **API** (подробнее — [Авторизация](/api/authorization)). +Получите API-токен в интерфейсе Пачки: **Интеграции** > **API** (подробнее — [Авторизация](/api/authorization)). ```csharp using Pachca.Sdk; @@ -8604,6 +9672,7 @@ using var client = new PachcaClient("YOUR_TOKEN", "https://custom-api.example.co | `client.Chats.UpdateChatAsync()` | [Редактирование чата](/api/chats/update) | | `client.Chats.ArchiveChatAsync()` | [Архивация чата](/api/chats/archive) | | `client.Chats.UnarchiveChatAsync()` | [Разархивация чата](/api/chats/unarchive) | +| `client.Chats.MarkChatUnreadAsync()` | [Отметка чата непрочитанным](/api/chats/mark-unread) | | `client.Profile.GetProfileAsync()` | [Свой профиль](/api/profile/get) | | `client.Profile.GetStatusAsync()` | [Свой статус](/api/profile/get-status) | | `client.Profile.UpdateProfileAvatarAsync()` | [Загрузка своего аватара](/api/profile/update-avatar) | @@ -8667,14 +9736,21 @@ using var client = new PachcaClient("YOUR_TOKEN", "https://custom-api.example.co | `client.Bots.CreateBotAsync()` | [Новый бот](/api/bots/create) | | `client.Bots.SelfRecreateBotTokenAsync()` | [Ротация собственного токена бота](/api/bots/recreate-token-self) | | `client.Bots.RecreateBotTokenAsync()` | [Ротация токена бота](/api/bots/recreate-token) | +| `client.Bots.RotateBotClientSecretAsync()` | [Ротация секрета клиента](/api/bots/rotate-client-secret) | +| `client.Bots.CreateBotTokenAsync()` | [Новый токен бота](/api/bots/create-token) | +| `client.Bots.ReissueBotTokenAsync()` | [Перевыпуск токена бота](/api/bots/reissue-token) | | `client.Bots.ListBotsAsync()` | [Список ботов](/api/bots/list) | | `client.Bots.GetBotAsync()` | [Информация о боте](/api/bots/get) | | `client.Bots.ListCompanyBotsAsync()` | [Список ботов пространства](/api/bots/list-company) | | `client.Bots.GetWebhookEventsAsync()` | [История событий](/api/bots/list-events) | +| `client.Bots.GetBotScopesAsync()` | [Каталог прав бота](/api/bots/list-scopes) | +| `client.Bots.ListBotTokensAsync()` | [Список токенов бота](/api/bots/list-tokens) | | `client.Bots.SelfUpdateBotWebhookAsync()` | [Саморегистрация вебхука бота](/api/bots/update-webhook) | | `client.Bots.UpdateBotAsync()` | [Редактирование бота](/api/bots/update) | +| `client.Bots.UpdateBotTokenAsync()` | [Изменение токена бота](/api/bots/update-token) | | `client.Bots.DeleteBotAsync()` | [Удаление бота](/api/bots/delete) | | `client.Bots.DeleteWebhookEventAsync()` | [Удаление события](/api/bots/remove-event) | +| `client.Bots.DeleteBotTokenAsync()` | [Удаление токена бота](/api/bots/delete-token) | | `client.Security.GetAuditEventsAsync()` | [Журнал аудита событий](/api/security/list) | | `client.CustomProperties.ListPropertiesAsync()` | [Список дополнительных полей](/api/custom-properties/list) | | `client.Files.UploadFileAsync()` | [Загрузка файла](/api/files/direct-url) | @@ -9229,8 +10305,8 @@ Credentials — данные для авторизации. Перейдите В Пачке доступны два типа токенов: -- **Персональный токен** — доступен в разделе **Автоматизации** > **Интеграции** > **API** -- **Токен бота** — доступен в настройках бота на вкладке **API** +- **Персональный токен** — создаётся на странице **Интеграции** > **API** +- **Токен бота** — создаётся в карточке бота на вкладке **API** (**Интеграции** > **Боты** > **Управление**) Доступные операции зависят от [скоупов](/api/authorization#skoupy) токена, а не от его типа. Подробнее — в разделе [Авторизация](/api/authorization). @@ -9334,7 +10410,7 @@ Workflow — визуальный редактор, в котором выстр | # | Ресурс | Операций | Описание | Только v2 | |---|--------|:---:|----------|:---:| | 1 | [Message](#message) | 8 | Сообщения: создание, редактирование, удаление, закрепление, unfurl | | -| 2 | [Chat](#chat) | 8 | Чаты: создание, обновление, архивация, экспорт | | +| 2 | [Chat](#chat) | 10 | Чаты: создание, обновление, архивация, экспорт, отметка непрочитанным | | | 3 | [Chat Member](#chat-member) | 7 | Участники чата: добавление, удаление, роли, теги | да | | 4 | [User](#user) | 10 | Сотрудники: CRUD, аватар, статус | | | 5 | [Group Tag](#group-tag) | 6 | Теги сотрудников: CRUD, список пользователей | | @@ -9344,7 +10420,7 @@ Workflow — визуальный редактор, в котором выстр | 9 | [OAuth](#oauth) | 1 | Информация о токене | да | | 10 | [Task](#task) | 5 | Задачи: полный CRUD | | | 11 | [Draft](#draft) | 5 | Черновики и отложенные сообщения: полный CRUD | да | -| 12 | [Bot](#bot) | 10 | Боты: создание, получение, список, редактирование, удаление, вебхук, ротация токена, события | | +| 12 | [Bot](#bot) | 18 | Боты: создание, получение, список, редактирование, удаление, вебхук, токены, ротация токена и секрета, события | | | 13 | [File](#file) | 2 | Загрузка файлов через S3, скачивание защищённых вложений | | | 14 | [Form](#form) | 1 | Модальные формы | | | 15 | [Custom Property](#custom-property) | 1 | Дополнительные поля | да | @@ -9385,7 +10461,7 @@ Workflow — визуальный редактор, в котором выстр ## Chat -Чаты: создание, получение, обновление, архивация и разархивация. +Чаты: создание, получение, обновление, архивация и разархивация, отметка непрочитанным. | Операция | API | |----------|-----| @@ -9398,6 +10474,7 @@ Workflow — визуальный редактор, в котором выстр | Request Export | [Экспорт сообщений](/api/chats/request-export) | | Download Export | [Скачать архив экспорта](/api/chats/download-export) | | Get Many Workspace Chats | [Список чатов пространства](/api/chats/list-company) | +| Mark Unread | [Отметка чата непрочитанным](/api/chats/mark-unread) | **Сортировка в Get Many:** параметры `sort` (`id` или `last_message_at`) и `order` (`asc` / `desc`). Также доступны фильтры `availability`, `lastMessageAtAfter`, `lastMessageAtBefore`. @@ -9553,7 +10630,7 @@ Workflow — визуальный редактор, в котором выстр ## Bot -Боты: создание, получение, список, редактирование, удаление, саморегистрация вебхука, ротация токена, история и удаление событий. +Боты: создание, получение, список, редактирование, удаление, саморегистрация вебхука, токены бота и их права, ротация токена и секрета клиента, история и удаление событий. | Операция | API | |----------|-----| @@ -9568,6 +10645,13 @@ Workflow — визуальный редактор, в котором выстр | Get Many Events | [История событий](/api/bots/list-events) | | Remove Events | [Удаление события](/api/bots/remove-event) | | Get Many Workspace Bots | [Список ботов пространства](/api/bots/list-company) | +| Get Many Tokens | [Список токенов бота](/api/bots/list-tokens) | +| Create Token | [Новый токен бота](/api/bots/create-token) | +| Update Token | [Изменение токена бота](/api/bots/update-token) | +| Reissue Token | [Перевыпуск токена бота](/api/bots/reissue-token) | +| Delete Token | [Удаление токена бота](/api/bots/delete-token) | +| Get Scopes | [Каталог прав бота](/api/bots/list-scopes) | +| Rotate Client Secret | [Ротация секрета клиента](/api/bots/rotate-client-secret) | **Get Many Workspace Bots** отдаёт всех ботов пространства, включая недоступных владельцу токена для редактирования. У таких ботов заполнены только `Name` и `Nickname`, остальные настройки приходят пустыми. Доступно владельцу пространства на тарифе «Корпорация». @@ -9826,7 +10910,7 @@ Pachca Trigger поддерживает два режима настройки: ### Шаг 3. Вставьте URL в настройки бота в Пачке -Откройте настройки вашего бота в Пачке, перейдите на вкладку **Исходящий Webhook** и вставьте скопированный Production URL в поле **Webhook URL**. Подробнее — в разделе [Настройка и типы событий](/guides/webhook/events#obschie-nastroyki). +Откройте карточку бота в Пачке и на вкладке **Исходящий вебхук** укажите скопированный Production URL: при первом включении вебхука кнопкой **Включить**, а если он уже включён — в поле адреса. Подробнее — в разделе [Настройка и типы событий](/guides/webhook/events#obschie-nastroyki). ### Шаг 4. Вернитесь в n8n и активируйте @@ -9834,7 +10918,7 @@ Pachca Trigger поддерживает два режима настройки: Нажмите **Activate** в n8n. С этого момента бот отправляет события в ваш workflow. -> **Внимание:** В ручном режиме URL в настройках бота вы ставите сами — значит и очищать его тоже нужно самостоятельно. Если вы удаляете workflow или меняете URL, очистите поле **Webhook URL** в настройках бота в Пачке вручную — иначе Пачка будет продолжать отправлять события на недоступный адрес. +> **Внимание:** В ручном режиме URL в настройках бота вы ставите сами — значит и очищать его тоже нужно самостоятельно. Если вы удаляете workflow или меняете URL, замените адрес на вкладке **Исходящий вебхук** в карточке бота или удалите там вебхук кнопкой **Удалить вебхук** — иначе Пачка будет продолжать отправлять события на недоступный адрес. ## Автоматический режим @@ -9852,7 +10936,7 @@ Pachca Trigger поддерживает два режима настройки: ### Шаг 1. Вставьте токен в Credentials -Откройте Pachca API Credentials и в поле **Access Token** вставьте токен. Подойдёт **токен бота** (из настроек бота → вкладка **API**) — тогда бот зарегистрирует вебхук сам. Или **персональный токен** (из **Автоматизации** → **Интеграции** → **API**) со скоупом `bots:write` и доступом редактора к целевому боту. +Откройте Pachca API Credentials и в поле **Access Token** вставьте токен. Подойдёт **токен бота** (карточка бота → вкладка **API**) — тогда бот зарегистрирует вебхук сам. Или **персональный токен** (**Интеграции** → **API**) со скоупом `bots:write`, если его владелец может редактировать целевого бота. ### Шаг 2. Переключите Webhook Setup на Automatic @@ -9862,7 +10946,7 @@ Pachca Trigger поддерживает два режима настройки: ### Шаг 3. Укажите Bot ID — только для персонального токена -Для **персонального токена** заполните появившееся поле **Bot ID** — ID бота, которому нужно прописать Webhook URL (его видно в адресе страницы настроек бота в Пачке). Для **токена бота** это поле не нужно: бот регистрирует себя сам. +Для **персонального токена** заполните появившееся поле **Bot ID** — ID бота, которому нужно прописать Webhook URL (это `user_id` на вкладке **API** карточки бота, его же видно в адресе карточки). Для **токена бота** это поле не нужно: бот регистрирует себя сам. ### Шаг 4. Активируйте workflow @@ -9901,7 +10985,7 @@ sequenceDiagram ``` -> **Внимание:** **Если получили 403 Forbidden при активации** — токену не хватает прав. Для **токена бота** включите скоуп `bot_self:webhook:write` (настройки бота → вкладка **API**). Для **персонального токена** нужен скоуп `bots:write` и доступ редактора к указанному боту — проверьте доступы или вернитесь в **Manual**. +> **Внимание:** **Если получили 403 Forbidden при активации** — токену не хватает прав. Для **токена бота** добавьте ему право `bot_self:webhook:write` (карточка бота → вкладка **API** → **Редактировать** в меню токена). Для **персонального токена** нужен скоуп `bots:write` и доступ редактора к указанному боту — проверьте доступы или вернитесь в **Manual**. ## Альтернатива: установка URL через узел Pachca Bot Update @@ -10652,9 +11736,9 @@ AI Agent самостоятельно выбирает подходящий ин ## Разворачивание ссылок -Ресурс **Message** с операцией **Unfurl** позволяет формировать кастомные превью для ссылок в сообщениях бота. +Ресурс **Message** с операцией **Unfurl** ставит к ссылкам в сообщениях превью с заголовком, описанием и изображением — например, к ссылкам на задачи во внутреннем трекере. -Когда бот отправляет сообщение со ссылкой, Пачка может запросить у бота данные для превью. Бот может ответить через [Unfurl (разворачивание ссылок)](/api/messages/unfurl) с заголовком, описанием и изображением. +Сценарий начинается с события **Link Shared** в узле **Pachca Trigger**: бот получает его, когда в любом чате пространства появляется ссылка на один из его доменов. Домены и само событие задаются на вкладке **Исходящий вебхук** в карточке бота, и включить их может только администратор или владелец пространства. Дальше workflow собирает данные по ссылке и отвечает операцией **Unfurl** — методом [Unfurl (разворачивание ссылок)](/api/messages/unfurl) по `message_id` из события. Подробнее — в [документации разворачивания ссылок](/guides/link-previews). @@ -10728,8 +11812,8 @@ AI Agent самостоятельно выбирает подходящий ин 1. Откройте **Credentials** и проверьте значение **Access Token** 2. Убедитесь, что токен скопирован целиком, без лишних пробелов 3. Нажмите **Test** — при ошибке создайте новый токен в Пачке -4. Для бот-токена: **Настройки бота** → вкладка **API** → скопируйте токен -5. Для персонального токена: **Автоматизации** → **Интеграции** → **API** +4. Для токена бота: значение показывается только при создании, поэтому потерянный токен перевыпустите в карточке бота на вкладке **API** (**Перевыпустить** в меню токена) +5. Для персонального токена: создайте новый на странице **Интеграции** → **API** ### Недостаточно прав (403 Forbidden) @@ -10765,8 +11849,8 @@ AI Agent самостоятельно выбирает подходящий ин **Решение:** -1. **Токен бота:** включите для бота скоуп `bot_self:webhook:write` — настройки бота → вкладка **API** -2. **Персональный токен:** убедитесь, что у пользователя токена стоит роль **Редактор** в списке доступов бота, и что у токена есть скоуп `bots:write` (в настройках токена в **Автоматизации** → **Интеграции** → **API**) +1. **Токен бота:** добавьте токену право `bot_self:webhook:write` — в карточке бота на вкладке **API** выберите **Редактировать** в меню токена +2. **Персональный токен:** убедитесь, что владелец токена может редактировать бота — он его создатель или подходит под настройку **Кто может редактировать настройки бота** — и что у токена есть скоуп `bots:write` (**Редактировать** в меню токена на странице **Интеграции** → **API**) 3. Либо переключите **Webhook Setup** = **Manual** и пропишите Production URL в настройках бота самостоятельно — см. [Ручной режим](/guides/n8n/trigger#ruchnoy-rezhim) --- @@ -10796,14 +11880,14 @@ AI Agent самостоятельно выбирает подходящий ин 1. **Бот не добавлен в чат** — бот получает события только из чатов, в которых он состоит. Добавьте бота в нужный канал 2. **Workflow не активирован** — нажмите **Activate** в правом верхнем углу. Неактивные workflow не принимают вебхуки -3. **URL не прописан в настройках бота** — в ручном режиме узел не трогает webhook-слот бота. Проверьте, что Production URL вставлен в поле **Webhook URL** в настройках бота (вкладка **Исходящий Webhook**). В автоматическом режиме убедитесь, что в узле указан корректный **Bot ID** +3. **URL не прописан в настройках бота** — в ручном режиме узел не трогает webhook-слот бота. Проверьте, что Production URL указан адресом исходящего вебхука в карточке бота (вкладка **Исходящий вебхук**). В автоматическом режиме убедитесь, что в узле указан корректный **Bot ID** 4. **n8n недоступен извне** — при локальной установке Пачка не может отправить вебхук на `localhost`. Используйте туннель (ngrok, Cloudflare Tunnel) или разверните n8n на сервере с публичным IP ### Ошибка подписи (Signature Mismatch) **Причина:** Signing Secret в Credentials не совпадает с секретом бота в Пачке. -**Решение:** скопируйте Signing Secret из настроек бота в Пачке (вкладка **Исходящий Webhook**) и вставьте в Credentials. +**Решение:** скопируйте Signing secret из карточки бота в Пачке (вкладка **Исходящий вебхук**) и вставьте в Credentials. --- @@ -11127,11 +12211,11 @@ dotnet add package Pachca.Sdk | | Токен в интерфейсе | Вход через CLI | |---|---|---| -| Как выдаётся | **Автоматизации** > **API**, руками | `pachca auth login`, подтверждение в браузере | +| Как выдаётся | **Интеграции** > **API**, руками | `pachca auth login`, подтверждение в браузере | | Кто выбирает права | вы, при выпуске | не выбираются: берётся весь каталог, урезанный вашей ролью на момент входа | | Срок | бессрочный | час, продлевается автоматически | | Значение токена | показывается один раз, копируется | в терминал не выводится | -| Как прекратить доступ | удалить токен в **Автоматизации** > **API** | `pachca auth logout` — токен гасится на сервере сразу | +| Как прекратить доступ | удалить токен на странице **Интеграции** > **API** | `pachca auth logout` или **Отозвать** в списке **Токены CLI** — токен гасится на сервере сразу | | Когда подходит | унести в автоматизацию или CI, передать коллеге | работа руками и агентом на своей машине | Разница не только в удобстве. Токен из интерфейса вы держите в руках: он бессрочный, его можно скопировать в чужую систему или передать другому сотруднику — вместе со своими правами. Токен входа через CLI короткоживущий и привязан к машине, где выполнен вход, поэтому переносить его бессмысленно. @@ -11147,6 +12231,10 @@ dotnet add package Pachca.Sdk > [Скоупы](#skoupy) определяют только **какие методы** можно вызывать — расширить круг данных за пределы границ типа токена они не могут. +### Токен по авторизации + +Персональный токен, который сотрудник выдал боту на экране согласия. Действует от имени сотрудника и видит то же, что он, а хранится в сервисе бота — по токену на каждого сотрудника. Права берутся из настроек бота и дополнительно ограничены ролью сотрудника, а отозвать доступ сотрудник может в любой момент. Подходит ботам, которым нужны данные самого сотрудника: его задачи, его чаты. Подробнее — в разделе [Авторизация от имени сотрудника](/guides/oauth/overview). + ### Какой токен выбрать Выберите тип по задаче, которую решает интеграция: @@ -11157,34 +12245,33 @@ dotnet add package Pachca.Sdk | Скрипт или утилита от вашего имени, личная автоматизация, разовая выгрузка данных | Персональный | [Создание персонального токена](#sozdanie-personalnogo-tokena) | | Чат-бот, уведомления из внешних систем, обработка вебхуков, интерактивные формы | Бот | [Боты](/guides/bots/overview) | | Агент или headless-интеграция без участия сотрудника (CI, сервер, облачный воркер) | Бот | [Агенты и headless-интеграции](#agenty-i-headless-integratsii) | +| Бот, которому нужны данные сотрудника: его задачи, его чаты | По авторизации | [Авторизация от имени сотрудника](/guides/oauth/overview) | ## Кто может создавать токены -Владелец пространства может ограничить, кто может создавать токены и работать с API. Настройки находятся в разделе **Настройки пространства**: +Владелец или администратор пространства может ограничить, кто может создавать токены и получать доступ к API. Настройки находятся в разделе **Настройки пространства**: -- **Кто может создавать интеграции** *(токены ботов)* — «Только администраторы» или «Администраторы и сотрудники» -- **Кто может работать с API** *(персональные токены)* — «Только администраторы» (сотрудники не смогут создавать и использовать персональные токены) или «Все сотрудники» +- **Кто может создавать интеграции** *(боты и их токены)* — «Только администраторы» или «Администраторы и сотрудники». По умолчанию — «Администраторы и сотрудники». +- **Кто может создавать персональные токены** — «Только администраторы» или «Все сотрудники». По умолчанию — «Только администраторы»: сотрудники не могут создавать персональные токены, входить в CLI и выдавать доступ ботам на экране согласия. Настройка закрывает только новый доступ: персональные токены, входы в CLI и доступы ботов, выданные до её смены, продолжают работать. Свои персональные токены и входы в CLI сотрудник и после смены настройки видит на странице **API** и может отозвать, а новые создать не может. ![Настройки доступа к API](/images/authorization/token_access.webp) *Настройки доступа к API* -> **Внимание:** Гости и мульти-гости не могут создавать токены любого типа вне зависимости от настроек пространства. +> **Внимание:** Гости не могут создавать токены любого типа вне зависимости от настроек пространства. Мульти-гость создаёт персональные токены, входит в CLI и авторизует ботов на тех же условиях, что и сотрудник, а ботов и их токенов не создаёт. Что он видит через API — в разделе [Права и роли](/guides/permissions#multi-gost-v-api). ## Создание персонального токена -Создать персональный токен можно в разделе **Автоматизации** > **API**. +Персональные токены создаются на странице **Интеграции** > **API**. На ней указан ваш `user_id` и собраны три списка: персональные токены, токены CLI и авторизации. -На странице отображается список персональных токенов: название, дата создания и дата последнего использования. +![Страница «API» в разделе «Интеграции»: user_id и список персональных токенов](/images/authorization/user_tokens_list.webp) -![Список токенов](/images/authorization/user_tokens_list.webp) +*Страница «API»* -*Список токенов* - -Нажмите **«Создать новый токен»** — откроется диалог, в котором нужно задать название токена и выбрать разрешения (скоупы). +Нажмите **Создать токен** — откроется диалог, в котором нужно задать название токена и выбрать разрешения (скоупы). ![Создание API токена](/images/authorization/create_user_token_modal.webp) @@ -11194,14 +12281,23 @@ dotnet add package Pachca.Sdk > **Внимание:** Токен показывается только один раз сразу после создания. Скопируйте и сохраните его в надёжном месте — после закрытия диалога восстановить его будет невозможно. +В списке у каждого токена видны дата создания и последнего использования. Меню токена позволяет посмотреть выданные разрешения, изменить название и разрешения или удалить токен. Если токеном пользовались недавно, диалог удаления предупредит об этом: всё, что на нём работает, сломается сразу. + +### Токены CLI и авторизации + +Ниже на той же странице — доступы, которые вы выдали без ручного создания токена: + +- **Токены CLI** — по строке на каждое устройство, где выполнен `pachca auth login`: имя устройства, время входа и последнего вызова. Токены продлеваются сами, а права ограничены вашей ролью. **Отозвать** завершает вход на выбранном устройстве, остальные входы продолжают работать. Подробнее — в разделе [CLI: авторизация](/guides/cli/authentication). +- **Авторизации** — боты, которым вы разрешили действовать от вашего имени на экране согласия. Для каждого видно, когда он подключён и когда использовался, и какие разрешения выданы. **Отозвать доступ** сразу отключает все токены этого бота, выданные вам. + ## Получение токена бота Бот виден в пространстве как отдельный участник со своим именем и аватаром. Получить его `access_token` можно двумя способами: -- **В интерфейсе** — во вкладке **API** в настройках бота. -- **Через API** — методом [Новый бот](/api/bots/create): он создаёт бота и сразу возвращает `access_token`. Сохраните токен из ответа: посмотреть его повторно можно только в интерфейсе, а перевыпустить — методом [Ротация токена бота](/api/bots/recreate-token). +- **В интерфейсе** — на вкладке **API** в карточке бота: кнопка **Создать токен**, название и права. Токенов у бота может быть несколько, значение каждого показывается один раз. +- **Через API** — методом [Новый бот](/api/bots/create): он создаёт бота и сразу возвращает `access_token`. Сохраните токен из ответа: повторно значение не показывается, а перевыпустить токен можно методом [Ротация токена бота](/api/bots/recreate-token) или кнопкой **Перевыпустить** в карточке бота. Ещё токены выпускает метод [Новый токен бота](/api/bots/create-token), у каждого своё имя и права. -Подробнее о создании и настройке бота — в разделе [Боты](/guides/bots/overview). +Несколько токенов у одного бота, их права, перевыпуск и что делать при утечке — в разделе [Токены бота](/guides/bots/tokens). ### Методы, требующие токен бота @@ -11212,7 +12308,7 @@ dotnet add package Pachca.Sdk - [Unfurl (разворачивание ссылок)](/api/messages/unfurl) — создание предпросмотров ссылок в сообщениях - [Открытие представления](/api/views/open) — открытие модального окна с формой для пользователя -Также при отправке сообщений ([Новое сообщение](/api/messages/create), [Новый тред](/api/threads/add)) поля `icon_url` и `name` для кастомного аватара и имени отправителя работают только с токеном бота. +Также только с токеном бота работают поля `display_name` и `display_avatar_url` — своё имя и аватар отправителя у отдельного сообщения — в методах [Новое сообщение](/api/messages/create) и [Редактирование сообщения](/api/messages/update). С другим токеном запрос с ними вернёт `403`. Подробнее — в разделе [Подмена имени и аватара отправителя](/guides/bots/overview#podmena-imeni-i-avatara-otpravitelya). ## Заголовок авторизации @@ -11233,25 +12329,26 @@ Authorization: Bearer YOUR_ACCESS_TOKEN Скоупы определяют, к каким методам API имеет доступ токен. Разные типы токенов получают скоупы по-разному: - **Персональный токен** — вы выбираете скоупы вручную при создании и можете изменить их позже в настройках токена. Токен получит только запрошенные разрешения. -- **Токен бота** — скоупы можно выбрать при создании или редактировании бота (параметр `scopes` в методах [Новый бот](/api/bots/create) и [Редактирование бота](/api/bots/update)). Если скоупы не указаны, бот получает набор по умолчанию. +- **Токен бота** — права задаются на каждый токен при его создании и редактировании на вкладке **API** карточки бота. Через API — в методах [Новый токен бота](/api/bots/create-token) и [Изменение токена бота](/api/bots/update-token), а права основного токена — параметром `scopes` в методах [Новый бот](/api/bots/create) и [Редактирование бота](/api/bots/update). Если скоупы основного токена не указаны, бот получает набор по умолчанию. Какие права можно выдать боту, отдаёт [Каталог прав бота](/api/bots/list-scopes). Боту доступны и собственные скоупы самоуправления, недоступные персональным токенам: `bot_self:webhook:write` — бот сам меняет `URL` своего исходящего вебхука методом [Саморегистрация вебхука бота](/api/bots/update-webhook), и `bot_self:write` — самостоятельное управление настройками бота. -Бывает и наоборот: `bots:read` и `bots:write` для управления ботами, `drafts:read` и `drafts:write` для черновиков и отложенных сообщений выдаются только персональным токенам. Роль здесь ни при чём — эти скоупы есть у любого негостевого сотрудника, но токену бота их не получить, и с ним метод отвечает `403`. +Бывает и наоборот: `bots:read` и `bots:write` для управления ботами, `drafts:read` и `drafts:write` для черновиков и отложенных сообщений выдаются только персональным токенам. Скоупы ботов есть у Владельца, Администраторов и Сотрудников, скоупы черновиков — ещё и у мульти-гостя, а токену бота их не получить: с ним метод отвечает `403`. Проверить скоупы текущего токена можно методом [Информация о токене](/api/oauth/token-info). ### Доступные скоупы -При создании персонального токена в интерфейсе Пачки отображаются только те скоупы, которые доступны вашей роли. Токены ботов получают скоупы автоматически. +При создании персонального токена в интерфейсе Пачки отображаются только те скоупы, которые доступны вашей роли. Токену бота права выбираются при создании в его карточке, а через API — параметром `scopes` при выпуске токена. | Скоуп | Описание | Роли | |-------|----------|------| | `chats:read` | Просмотр чатов и списка чатов | Все | -| `chats:create` | Создание новых чатов | Все | +| `chats:create` | Создание новых чатов | Владелец, Администратор, Сотрудник, Бот | | `chats:update` | Изменение настроек чата | Все | +| `chats:mark_unread` | Отметка чатов непрочитанными | Все | | `chats:archive` | Архивация и разархивация чатов | Все | -| `chats:leave` | Выход из чатов | Все | +| `chats:leave` | Выход из чатов | Владелец, Администратор, Сотрудник, Бот | | `chat_members:read` | Просмотр участников чата | Все | | `chat_members:write` | Добавление, изменение и удаление участников чата | Все | | `chat_exports:read` | Скачивание экспортов чата | Владелец | @@ -11265,7 +12362,7 @@ Authorization: Bearer YOUR_ACCESS_TOKEN | `pins:write` | Закрепление и открепление сообщений | Все | | `threads:read` | Просмотр тредов (комментариев) | Все | | `threads:create` | Создание тредов (комментариев) | Все | -| `link_previews:write` | Unfurl (разворачивание ссылок) | Все | +| `link_previews:write` | Unfurl (разворачивание ссылок) | Владелец, Администратор, Сотрудник, Бот | | `users:read` | Просмотр информации о сотрудниках и списка сотрудников | Все | | `users:create` | Создание новых сотрудников | Владелец, Администратор | | `users:update` | Редактирование данных сотрудника | Владелец, Администратор | @@ -11292,18 +12389,18 @@ Authorization: Bearer YOUR_ACCESS_TOKEN | `tasks:update` | Изменение задачи | Все | | `tasks:delete` | Удаление задачи | Все | | `files:read` | Скачивание файлов | Все | -| `files:write` | Загрузка файлов | Все | +| `files:write` | Загрузка файлов | Владелец, Администратор, Сотрудник, Бот | | `uploads:write` | Получение данных для загрузки файлов | Все | | `views:write` | Открытие форм (представлений) | Все | -| `webhooks:read` | Просмотр вебхуков | Все | -| `webhooks:write` | Создание и управление вебхуками | Все | -| `webhooks:events:read` | Просмотр лога вебхуков | Все | -| `webhooks:events:delete` | Удаление записи в логе вебхука | Все | +| `webhooks:read` | Просмотр вебхуков | Владелец, Администратор, Сотрудник, Бот | +| `webhooks:write` | Создание и управление вебхуками | Владелец, Администратор, Сотрудник, Бот | +| `webhooks:events:read` | Просмотр лога вебхуков | Владелец, Администратор, Сотрудник, Бот | +| `webhooks:events:delete` | Удаление записи в логе вебхука | Владелец, Администратор, Сотрудник, Бот | | `search:users` | Поиск сотрудников | Все | | `search:chats` | Поиск чатов | Все | | `search:messages` | Поиск сообщений | Все | -| `drafts:read` | Просмотр черновиков и отложенных сообщений | Владелец, Администратор, Сотрудник | -| `drafts:write` | Создание, изменение и удаление черновиков и отложенных сообщений | Владелец, Администратор, Сотрудник | +| `drafts:read` | Просмотр черновиков и отложенных сообщений | Владелец, Администратор, Сотрудник, Мульти-гость | +| `drafts:write` | Создание, изменение и удаление черновиков и отложенных сообщений | Владелец, Администратор, Сотрудник, Мульти-гость | ## Ошибки авторизации @@ -12044,14 +13141,14 @@ await client.messages.create_message(MessageCreateRequest( | 410 | Gone | Ресурс больше не доступен (например, истёк срок действия идентификатора события) | | 422 | Unprocessable Entity | С запросом все хорошо, но правила сервиса не позволяют его обработать (например, при попытке создания контакта с уже существующим номером телефона в базе) | | 429 | Too Many Requests | Слишком много запросов слишком быстро попадают в API | -| 500, 502, 503, 504 | Server Errors | Что-то пошло не так на сервере Пачки (это редкость) | +| 500, 502, 503, 504 | Server Errors | Что-то пошло не так на сервере Пачки (это редкость). Исключение — 504 у поиска: запрос не уложился по времени, его стоит сузить | ## Пояснения ошибки В зависимости от типа ошибки вы получите в теле ответа одну из следующих структур: -- **ApiError** — для кодов `400`, `402`, `403`, `404`, `409`, `410`, `422`. Содержит массив `errors` с детальной информацией об ошибках. +- **ApiError** — для кодов `400`, `402`, `403`, `404`, `409`, `410`, `422`, а также `429` при суточном пределе сообщений, `503` и `504`. Содержит массив `errors` с детальной информацией об ошибках. - **OAuthError** — для кодов `401` и `403`. Содержит поля `error` и `error_description` с информацией об ошибке авторизации. > Код `403` может вернуть обе структуры: @@ -12059,14 +13156,14 @@ await client.messages.create_message(MessageCreateRequest( > - `OAuthError` с кодом `insufficient_scope`, когда у токена нет нужного скоупа (scope) для вызываемого метода. Такой ответ дополнительно содержит заголовок `WWW-Authenticate` с недостающим скоупом — подробнее в разделе [Авторизация](/api/authorization#oshibki-avtorizatsii). > - `ApiError`, когда бизнес-логика запрещает действие (например, недостаточно прав для управления экспортом). -### ApiError (400, 402, 403, 404, 409, 410, 422) +### ApiError (400, 402, 403, 404, 409, 410, 422, 429, 503, 504) - `errors: array of object` (required) — Массив ошибок - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -12080,6 +13177,9 @@ await client.messages.create_message(MessageCreateRequest( > Код `409` возвращается, когда объект с такими данными уже есть: сотрудник с этим адресом почты, тег с этим названием, закрепление у этого сообщения, черновик в этом чате. В `errors[].code` приходит `already_exists`, а в `errors[].key` — конфликтующее поле: например, `email` при повторном адресе почты сотрудника. Если определить поле не удалось, `key` в ошибке не будет. У черновика вдобавок приходит `errors[].payload.draft_id` — номер того, который уже лежит в чате, чтобы дописать его методом [Редактирование черновика](/api/drafts/update). +> Код `504` с `errors[].code` равным `timeout` возвращают методы поиска и [Список сотрудников](/api/users/list) с параметром `query`, когда запрос не уложился по времени. Такой запрос стоит сузить: повтор того же запроса, скорее всего, снова не уложится. + + > Ответ `429 Too Many Requests` приходит в двух видах. Превышение суточного предела сообщений в чат — обычный `ApiError` с кодом `rate_limit`. Превышение лимита на частоту запросов обрабатывается до того, как запрос доходит до метода: тело не `JSON`, а короткий текст с `Content-Type: text/plain`. Разбирайте тело `429` только после проверки `Content-Type`, иначе разбор упадёт. Заголовок `Retry-After` есть в обоих случаях. Подробнее — на странице [Лимиты](/api/limits). @@ -12325,8 +13425,8 @@ users = await with_retry(lambda: client.users.list_users()) - `first_name: string` (required, nullable, max length: 255) — Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`). Пример: `"Олег"` - `last_name: string` (required, nullable, max length: 255) — Фамилия. Если не заполнена, возвращается `null` или пустая строка. Пример: `"Петров"` - `nickname: string` (required, max length: 255) — Имя пользователя. Пример: `"olegpetrov"` -- `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `"olegp@example.com"` -- `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `"+79001234567"` +- `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `"olegp@example.com"` +- `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `"+79001234567"` - `department: string` (required, nullable, max length: 255) — Департамент. Если не указан, возвращается `null` или пустая строка. Пример: `"Продукт"` - `title: string` (required, nullable) — Должность. Если не указана, возвращается `null` или пустая строка. Пример: `"CIO"` - `role: string` (required) — Уровень доступа @@ -12335,7 +13435,7 @@ users = await with_retry(lambda: client.users.list_users()) - `invite_status: string` (required) — Статус приглашения Значения: `confirmed` — Принято, `sent` — Отправлено - `inviter_id: integer, int32` (required, nullable) — Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён. Пример: `185` -- `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Пример: `["Product","Design"]` +- `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Мульти-гостю в чужой карточке приходит пустым. Пример: `["Product","Design"]` - `custom_properties: array of object` (required) — Дополнительные поля сотрудника - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678` - `name: string` (required, max length: 32) — Название поля. Пример: `"Город"` @@ -12387,6 +13487,7 @@ users = await with_retry(lambda: client.users.list_users()) - [Редактирование чата](/api/chats/update) - [Архивация чата](/api/chats/archive) - [Разархивация чата](/api/chats/unarchive) +- [Отметка чата непрочитанным](/api/chats/mark-unread) - [Редактирование роли](/api/members/update) - [Выход из чата](/api/members/leave) - [Исключение пользователя](/api/members/remove) @@ -12416,8 +13517,8 @@ users = await with_retry(lambda: client.users.list_users()) Тред -- `id: integer, int64` (required) — Идентификатор созданного треда (в тред пишут методом [Новое сообщение](/api/messages/create)). Пример: `265142` -- `chat_id: integer, int64` (required) — Идентификатор чата треда (по нему пишут в тред методом [Новое сообщение](/api/messages/create) и читают его методом [Список сообщений чата](/api/messages/list)). Пример: `2637266155` +- `id: integer, int64` (required) — Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](/api/messages/create) с `entity_type: "thread"`. Пример: `265142` +- `chat_id: integer, int64` (required) — Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](/api/messages/list) и работают с его участниками. Пример: `2637266155` - `message_id: integer, int64` (required, nullable) — Идентификатор сообщения, к которому был создан тред. `null` для самостоятельного треда, созданного без привязки к сообщению. Пример: `154332686` - `message_chat_id: integer, int64` (required, nullable) — Идентификатор чата сообщения. `null` для самостоятельного треда, созданного без привязки к сообщению. Пример: `2637266154` - `updated_at: date-time` (required) — Дата и время обновления треда (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2023-02-01T19:20:47.204Z"` @@ -12464,8 +13565,8 @@ users = await with_retry(lambda: client.users.list_users()) - `transcript: string` (required, nullable) — Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна. Пример: `"Привет, посмотри пожалуйста последний отчёт"` - `buttons: array of array` (required, nullable) — Массив строк, каждая из которых представлена массивом кнопок. `null`, если сообщение отправлено без кнопок. - `thread: object` (required, nullable) — Тред, созданный к этому сообщению. `null`, если тред не создан, а также у сообщений, которые сами находятся внутри треда. - - `id: integer, int64` (required) — Идентификатор треда. Пример: `265142` - - `chat_id: integer, int64` (required) — Идентификатор чата треда. Пример: `2637266155` + - `id: integer, int64` (required) — Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](/api/messages/create) с `entity_type: "thread"`. Пример: `265142` + - `chat_id: integer, int64` (required) — Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](/api/messages/list). Пример: `2637266155` - `forwarding: object` (required) — Информация о пересланном сообщении. `null`, если сообщение не является пересланным. - `original_message_id: integer, int32` (required) — Идентификатор оригинального сообщения. Пример: `194275` - `original_chat_id: integer, int32` (required) — Идентификатор чата, в котором находится оригинальное сообщение. Пример: `334` @@ -12633,7 +13734,7 @@ users = await with_retry(lambda: client.users.list_users()) Значения: `radio` — Для радиокнопок всегда radio - `name: string` (required, max length: 255) — Название, которое будет передано в ваше приложение как ключ указанного пользователем выбора - `label: string` (required, max length: 150) — Подпись к группе радиокнопок - - `options: array of object` (required, max items: 10) — Массив радиокнопок + - `options: array of object` (required, max items: 20) — Массив радиокнопок - `text: string` (required, max length: 75) — Отображаемый текст - `value: string` (required, max length: 255) — Уникальное строковое значение, которое будет передано в ваше приложение при выборе этого пункта - `description: string` (max length: 75) — Пояснение, которое будет указано серым цветом в этом пункте под отображаемым текстом @@ -12645,7 +13746,7 @@ users = await with_retry(lambda: client.users.list_users()) Значения: `checkbox` — Для чекбоксов всегда checkbox - `name: string` (required, max length: 255) — Название, которое будет передано в ваше приложение как ключ указанного пользователем выбора - `label: string` (required, max length: 150) — Подпись к группе чекбоксов - - `options: array of object` (required, max items: 10) — Массив чекбоксов + - `options: array of object` (required, max items: 20) — Массив чекбоксов - `text: string` (required, max length: 75) — Отображаемый текст - `value: string` (required, max length: 255) — Уникальное строковое значение, которое будет передано в ваше приложение при выборе этого пункта - `description: string` (max length: 75) — Пояснение, которое будет указано серым цветом в этом пункте под отображаемым текстом @@ -12686,13 +13787,19 @@ users = await with_retry(lambda: client.users.list_users()) - [Информация о боте](/api/bots/get) - [Редактирование бота](/api/bots/update) - [Удаление бота](/api/bots/delete) -- [Саморегистрация вебхука бота](/api/bots/update-webhook) - [Ротация токена бота](/api/bots/recreate-token) -- [Ротация собственного токена бота](/api/bots/recreate-token-self) +- [Ротация секрета клиента](/api/bots/rotate-client-secret) Параметры бота - `id: integer, int32` (required) — Идентификатор бота (совпадает с `user_id` бота). Пример: `1738816` +- `name: string` (required) — Имя бота. Пример: `"Бот задач"` +- `nickname: string` (required) — Никнейм бота. Пример: `"tasks_bot"` +- `avatar_url: string` (required, nullable) — Ссылка на аватар бота. `null`, если аватар не задан. Пример: `"https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg"` +- `creator_id: integer, int32` (required, nullable) — Идентификатор сотрудника, создавшего бота. `null`, если создатель не записан. Пример: `12` +- `created_at: date-time` (required) — Дата и время создания бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2025-05-15T14:30:00.000Z"` +- `authorized_users_count: integer, int32` (required) — Сколько сотрудников авторизовали бота. Пример: `3` +- `last_used_at: date-time` (required, nullable) — Дата и время, когда бот последний раз работал (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ: запрос на входящий вебхук или вызов API любым токеном бота, включая токены сотрудников. `null`, если такого не было. Использование токена учитывается не чаще раза в час. Пример: `"2025-05-15T14:30:00.000Z"` - `webhook: object` (required) — Объект параметров вебхука - `name: string` (required, max length: 255) — Имя бота. Пример: `"Бот задач"` - `nickname: string` (required, max length: 255) — Никнейм бота. Пример: `"tasks_bot"` @@ -12712,7 +13819,107 @@ users = await with_retry(lambda: client.users.list_users()) - `single_chat: boolean` (required) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false` - `can_edit: array of string` (required) — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `["admin"]` - `who_can_add: string` (required) — Кто может добавлять бота в чаты - Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Любой пользователь, в том числе гости + Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей + - `kind: string` (required) — Источник входящего вебхука. `null`, если входящий вебхук у бота выключен. + Значения: `simple` — Свой формат: сообщение собирается из тела запроса по шаблону бота, `gitlab` — GitLab: Пачка сама разбирает запрос и собирает сообщение, `grafana` — Grafana: Пачка сама разбирает запрос и собирает сообщение + - `unfurl_domains: array of string` (required) — Домены, ссылки на которые бот разворачивает. Пример: `["example.com"]` + - `last_request_at: date-time` (required, nullable) — Дата и время последнего запроса на входящий вебхук бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если запросов не было. Пример: `"2025-05-15T14:30:00.000Z"` +- `oauth_client_enabled: boolean` (required) — Включена ли у бота авторизация от имени сотрудника. Пример: `true` +- `oauth_client: object` (required) — Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией, поэтому включена ли она, смотрите в `oauth_client_enabled`. У бота без токенов может прийти `null`. + - `client_id: string` (required) — Идентификатор клиента для ссылки авторизации. Пример: `"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY"` + - `client_secret_preview: string` (required) — Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета. Пример: `"cH5kR9mN...x7Qp"` + - `confidential: boolean` (required) — Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE. Пример: `true` + - `redirect_uris: array of string` (required) — Адреса возврата после согласия. Пример: `["https://example.com/oauth/callback"]` + - `scopes: array of string` (required) — Права, которые бот запрашивает у сотрудника на экране согласия. Пример: `["messages:read","messages:create"]` +- `promo: object` (required) — Страница бота в витрине. `null`, если авторизация у бота выключена. + - `description: string` (required, nullable) — Описание бота. `null`, если не задано. Пример: `"Собирает сводку по задачам Jira и присылает её в чат"` + - `published: boolean` (required) — Опубликован ли бот в витрине. Пример: `true` + - `promo_images: array of object` (required) — Скриншоты страницы бота + - `key: string` (required) — Ключ изображения. Пример: `"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"` + - `url: string` (required) — Ссылка на изображение. Пример: `"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"` +- `permissions: object` (required) — Что вы можете делать с этим ботом + - `update_oauth_client: boolean` (required) — Менять авторизацию от имени сотрудника, страницу в витрине и имя бота. Пример: `true` + - `recreate_token: boolean` (required) — Выпускать, менять и удалять токены бота и обновлять секрет клиента. Пример: `true` + - `destroy: boolean` (required) — Удалить бота. Пример: `true` +- `client_secret: string` — Секрет клиента. Приходит один раз: при включении серверного клиента, при переходе на него и при ротации секрета. Пример: `"dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA"` + + +## Бот в методах самого бота + +- [Саморегистрация вебхука бота](/api/bots/update-webhook) +- [Ротация собственного токена бота](/api/bots/recreate-token-self) + +Параметры бота в ответах методов самого бота + +- `id: integer, int32` (required) — Идентификатор бота (совпадает с `user_id` бота). Пример: `1738816` +- `oauth_client: object` (required) — Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией. У бота без токенов может прийти `null`. + - `client_id: string` (required) — Идентификатор клиента для ссылки авторизации. Пример: `"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY"` + - `client_secret_preview: string` (required) — Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета. Пример: `"cH5kR9mN...x7Qp"` + - `confidential: boolean` (required) — Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE. Пример: `true` + - `redirect_uris: array of string` (required) — Адреса возврата после согласия. Пример: `["https://example.com/oauth/callback"]` + - `scopes: array of string` (required) — Права, которые бот запрашивает у сотрудника на экране согласия. Пример: `["messages:read","messages:create"]` +- `webhook: object` (required) — Объект параметров вебхука + - `name: string` (required, max length: 255) — Имя бота. Пример: `"Бот задач"` + - `nickname: string` (required, max length: 255) — Никнейм бота. Пример: `"tasks_bot"` + - `outgoing_url: string` (required, nullable) — URL исходящего вебхука. `null`, если исходящий вебхук у бота не настроен. Пример: `"https://www.website.com/tasks/new"` + - `events: array of string` (required) — События, на которые подписан бот. Пример: `["message_new"]` + - `trigger_on: string` (required) — Условие срабатывания исходящего вебхука + Значения: `commands` — Только на команды (триггер-слова) из commands, `all_messages` — На все сообщения в чатах, где есть бот, `unfurl` — На развёртывание ссылок (link previews) + - `commands: array of string` (required) — Команды бота (триггер-слова). Пример: `["/task"]` + - `scopes: array of string` (required) — Скоупы (права доступа) токена бота. Набор по умолчанию шире того, что можно назначить явно, поэтому здесь могут встречаться значения, недоступные для явной установки. Пример: `["messages:create"]` + - `template: string` (required, nullable) — Шаблон форматирования входящего вебхука. `null`, если не задан. Пример: `"Заказ от {{ client }} на сумму {{ amount }} ₽"` + - `template_engine: string` (required) — Шаблонизатор для обработки шаблона входящего вебхука + Значения: `liquid` — Liquid — условия, циклы и фильтры, `mustache` — Mustache — простая подстановка без логики + - `challenge_key: string` (required, nullable) — Название поля проверки для верификации входящего вебхука. `null`, если не задано. Пример: `"challenge"` + - `link_preview_enabled: boolean` (required) — Показывать превью ссылок в сообщениях входящего вебхука. Пример: `true` + - `ignore_self_messages: boolean` (required) — Игнорировать входящие сообщения, отправленные самим ботом. Пример: `false` + - `events_history_enabled: boolean` (required) — Сохранять историю событий бота для последующего получения через метод истории событий. Пример: `false` + - `single_chat: boolean` (required) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false` + - `can_edit: array of string` (required) — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `["admin"]` + - `who_can_add: string` (required) — Кто может добавлять бота в чаты + Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей + + +## Токен бота + +- [Список токенов бота](/api/bots/list-tokens) +- [Новый токен бота](/api/bots/create-token) +- [Изменение токена бота](/api/bots/update-token) +- [Перевыпуск токена бота](/api/bots/reissue-token) +- [Удаление токена бота](/api/bots/delete-token) + +Токен бота + +- `id: integer, int64` (required) — Идентификатор токена. Пример: `4827` +- `token: string` (required) — Токен в маскированном виде (видны первые 8 и последние 4 символа). Полное значение приходит один раз: при выпуске и перевыпуске токена. Пример: `"cH5kR9mN...x7Qp"` +- `name: string` (required, nullable) — Имя токена. `null` у токена, выпущенного без имени. Пример: `"Сервер уведомлений"` +- `user_id: integer, int64` (required) — Идентификатор бота, которому принадлежит токен. Пример: `1738816` +- `scopes: array of string` (required) — Права токена. Пример: `["messages:create","chats:read"]` +- `created_at: date-time` (required) — Дата и время выпуска токена (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2025-01-15T10:30:00.000Z"` +- `revoked_at: date-time` (required, nullable) — Дата отзыва токена. Всегда `null`: отозванные токены в ответ не попадают. Пример: `null` +- `expires_in: integer, int32` (required, nullable) — Время жизни токена в секундах. У токенов бота `null`: они бессрочные. Пример: `null` +- `last_used_at: date-time` (required, nullable) — Дата последнего использования токена. `null`, пока по токену не было ни одного запроса. Обновляется не чаще раза в час, поэтому может отставать. Пример: `"2025-02-24T14:20:00.000Z"` +- `authorized_at: date-time` (required, nullable) — Дата авторизации. У токенов бота `null`. Пример: `null` + + +## Каталог прав бота + +- [Каталог прав бота](/api/bots/list-scopes) + +Каталог прав, которые можно выдать боту + +- `scopes: array of object` (required) — Права, доступные боту + - `id: string` (required) — Право. Пример: `"messages:create"` + - `title: string` (required) — Описание права. Пример: `"Отправка сообщений"` + - `group: string` (required) — Категория права, `id` из `groups`. Пример: `"messages"` + - `preset: array of string` (required) — Наборы, в которые входит право, `id` из `presets`. Пример: `["admin"]` +- `groups: array of object` (required) — Категории прав + - `id: string` (required) — Идентификатор категории. Пример: `"messages"` + - `title: string` (required) — Название категории. Пример: `"Сообщения"` + - `description: string` (required) — Описание категории. Пример: `"Работа с сообщениями"` +- `presets: array of object` (required) — Готовые наборы прав + - `id: string` (required) — Идентификатор набора: `read-only` или `admin`. Пример: `"read-only"` + - `title: string` (required) — Название набора. Пример: `"Только чтение"` ## Параметры бота пространства @@ -12722,6 +13929,12 @@ users = await with_retry(lambda: client.users.list_users()) Параметры бота пространства - `id: integer, int32` (required) — Идентификатор бота (совпадает с `user_id` бота). Пример: `1738816` +- `oauth_client: object` (required) — Параметры авторизации от имени сотрудника. `null` у бота, недоступного вам для редактирования. Может прийти и у бота с выключенной авторизацией, а у бота без токенов может прийти `null`. + - `client_id: string` (required) — Идентификатор клиента для ссылки авторизации. Пример: `"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY"` + - `client_secret_preview: string` (required) — Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета. Пример: `"cH5kR9mN...x7Qp"` + - `confidential: boolean` (required) — Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE. Пример: `true` + - `redirect_uris: array of string` (required) — Адреса возврата после согласия. Пример: `["https://example.com/oauth/callback"]` + - `scopes: array of string` (required) — Права, которые бот запрашивает у сотрудника на экране согласия. Пример: `["messages:read","messages:create"]` - `webhook: object` (required) — Объект параметров вебхука - `name: string` (required, max length: 255) — Имя бота. Пример: `"Бот задач"` - `nickname: string` (required, max length: 255) — Никнейм бота. Пример: `"tasks_bot"` @@ -12741,7 +13954,7 @@ users = await with_retry(lambda: client.users.list_users()) - `single_chat: boolean` (required, nullable) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false` - `can_edit: array of string` (required, nullable) — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `["admin"]` - `who_can_add: string` (required) — Кто может добавлять бота в чаты - Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Любой пользователь, в том числе гости + Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей ## Событие исходящего вебхука @@ -12844,6 +14057,12 @@ users = await with_retry(lambda: client.users.list_users()) - `domain: string` (required) — Домен ссылки. Пример: `"example.com"` - `skip: boolean` (required) — Признак того, что автор сообщения скрыл превью для этой ссылки. Если `true` — бот не должен создавать превью. Пример: `false` - `user_id: integer, int32` (required) — Идентификатор отправителя сообщения. Пример: `2345` + - `entity_type: string` (required) — Тип сущности, к которой относится сообщение со ссылкой + Значения: `discussion` — Беседа или канал, `thread` — Тред, `user` — Пользователь + - `entity_id: integer, int32` (required, nullable) — Идентификатор сущности: беседы или канала, треда. В личной переписке `null`: бот в ней не участвует, и собеседника ему не раскрывают. Пример: `23438` + - `thread: object` (required) — Тред, в котором отправлено сообщение со ссылкой. `null`, если сообщение отправлено не в треде. + - `message_id: integer, int32` (required, nullable) — Идентификатор сообщения, к которому был создан тред. `null` у треда без сообщения-родителя — такие создаёт [Новый самостоятельный тред](/api/threads/create). Пример: `12345` + - `message_chat_id: integer, int32` (required, nullable) — Идентификатор чата сообщения, к которому был создан тред. `null` у треда без сообщения-родителя. Пример: `67890` - `created_at: date-time` (required) — Дата и время создания сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2024-09-18T19:53:14.000Z"` - `webhook_timestamp: integer, int32` (required) — Дата и время отправки вебхука (UTC+0) в формате UNIX. Пример: `1726685594` - **VideoCallWebhookPayload**: Структура исходящего вебхука о видеозвонке @@ -12883,7 +14102,7 @@ users = await with_retry(lambda: client.users.list_users()) - `id: string` (required) — Уникальный идентификатор события. Пример: `"a1b2c3d4-5e6f-7g8h-9i10-j11k12l13m14"` - `created_at: date-time` (required) — Дата и время создания события (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2025-05-15T14:30:00.000Z"` - `event_key: string` (required) — Ключ типа события - Значения: `user_login` — Пользователь успешно вошел в систему, `user_logout` — Пользователь вышел из системы, `user_2fa_fail` — Неудачная попытка двухфакторной аутентификации, `user_2fa_success` — Успешная двухфакторная аутентификация, `user_2fa_disabled` — Двухфакторная аутентификация отключена у сотрудника, `user_created` — Создана новая учетная запись пользователя, `user_deleted` — Учетная запись пользователя удалена, `user_role_changed` — Роль пользователя была изменена, `user_updated` — Данные пользователя обновлены, `tag_created` — Создан новый тег, `tag_deleted` — Тег удален, `user_added_to_tag` — Пользователь добавлен в тег, `user_removed_from_tag` — Пользователь удален из тега, `chat_created` — Создан новый чат, `chat_renamed` — Чат переименован, `chat_permission_changed` — Изменены права доступа к чату, `user_chat_join` — Пользователь присоединился к чату, `user_chat_leave` — Пользователь покинул чат, `tag_added_to_chat` — Тег добавлен в чат, `tag_removed_from_chat` — Тег удален из чата, `message_updated` — Сообщение отредактировано, `message_deleted` — Сообщение удалено, `message_created` — Сообщение создано, `reaction_created` — Реакция добавлена, `reaction_deleted` — Реакция удалена, `thread_created` — Тред создан, `access_token_created` — Создан новый токен доступа, `access_token_updated` — Токен доступа обновлен, `access_token_destroy` — Токен доступа удален, `kms_encrypt` — Данные зашифрованы, `kms_decrypt` — Данные расшифрованы, `audit_events_accessed` — Доступ к журналам аудита получен, `company_chats_accessed` — Получен список всех чатов пространства, `company_bots_accessed` — Получен список всех ботов пространства, `dlp_violation_detected` — Срабатывание правила DLP-системы, `search_users_api` — Поиск сотрудников через API, `search_chats_api` — Поиск чатов через API, `search_messages_api` — Поиск сообщений через API, `bot_scopes_updated` — Изменены скоупы токена бота, `bot_webhook_settings_updated` — Изменены настройки исходящего вебхука бота, `bot_token_recreated` — Токен бота перевыпущен (ротация), `bot_deleted` — Бот удалён, `bot_oauth_client_updated` — Изменены параметры OAuth-клиента бота, `oauth_authorization_granted` — Пользователь выдал OAuth-клиенту доступ к своим данным, `oauth_authorization_revoked` — Доступ OAuth-клиента к данным пользователя отозван, `oauth_device_authorization_approved` — Сотрудник подтвердил вход приложения с устройства, `oauth_device_authorization_denied` — Сотрудник отклонил вход приложения с устройства, `video_call_started` — Видеозвонок начат, `video_call_finished` — Видеозвонок завершён, `video_call_recording_ready` — Запись видеозвонка готова, `exchange_disabled` — Отключена интеграция с Exchange + Значения: `user_login` — Пользователь успешно вошел в систему, `user_logout` — Пользователь вышел из системы, `user_2fa_fail` — Неудачная попытка двухфакторной аутентификации, `user_2fa_success` — Успешная двухфакторная аутентификация, `user_2fa_disabled` — Двухфакторная аутентификация отключена у сотрудника, `user_created` — Создана новая учетная запись пользователя, `user_deleted` — Учетная запись пользователя удалена, `user_role_changed` — Роль пользователя была изменена, `user_updated` — Данные пользователя обновлены, `tag_created` — Создан новый тег, `tag_deleted` — Тег удален, `user_added_to_tag` — Пользователь добавлен в тег, `user_removed_from_tag` — Пользователь удален из тега, `chat_created` — Создан новый чат, `chat_renamed` — Чат переименован, `chat_permission_changed` — Изменены права доступа к чату, `user_chat_join` — Пользователь присоединился к чату, `user_chat_leave` — Пользователь покинул чат, `tag_added_to_chat` — Тег добавлен в чат, `tag_removed_from_chat` — Тег удален из чата, `message_updated` — Сообщение отредактировано, `message_deleted` — Сообщение удалено, `message_created` — Сообщение создано, `reaction_created` — Реакция добавлена, `reaction_deleted` — Реакция удалена, `thread_created` — Тред создан, `access_token_created` — Создан новый токен доступа, `access_token_updated` — Токен доступа обновлен, `access_token_destroy` — Токен доступа удален, `kms_encrypt` — Данные зашифрованы, `kms_decrypt` — Данные расшифрованы, `audit_events_accessed` — Доступ к журналам аудита получен, `company_chats_accessed` — Получен список всех чатов пространства, `company_bots_accessed` — Получен список всех ботов пространства, `dlp_violation_detected` — Срабатывание правила DLP-системы, `search_users_api` — Поиск сотрудников через API, `search_chats_api` — Поиск чатов через API, `search_messages_api` — Поиск сообщений через API, `bot_scopes_updated` — Изменены скоупы токена бота, `bot_webhook_settings_updated` — Изменены настройки исходящего вебхука бота, `bot_token_recreated` — Токен бота перевыпущен (ротация), `bot_deleted` — Бот удалён, `bot_oauth_client_updated` — Изменены параметры OAuth-клиента бота, `bot_oauth_client_disabled` — У бота выключена авторизация от имени сотрудника, `bot_oauth_client_secret_rotated` — Обновлён секрет OAuth-клиента бота, `bot_token_created` — Выпущен токен бота, `bot_token_updated` — Изменены имя или скоупы токена бота, `bot_token_reissued` — Отдельный токен бота перевыпущен, `oauth_authorization_granted` — Пользователь выдал OAuth-клиенту доступ к своим данным, `oauth_authorization_revoked` — Доступ OAuth-клиента к данным пользователя отозван, `oauth_device_authorization_approved` — Сотрудник подтвердил вход приложения с устройства, `oauth_device_authorization_denied` — Сотрудник отклонил вход приложения с устройства, `video_call_started` — Видеозвонок начат, `video_call_finished` — Видеозвонок завершён, `video_call_recording_ready` — Запись видеозвонка готова, `exchange_disabled` — Отключена интеграция с Exchange - `entity_id: string` (required) — Идентификатор затронутой сущности. Пример: `"98765"` - `entity_type: string` (required) — Тип затронутой сущности. Пример: `"User"` - `actor_id: string` (required) — Идентификатор пользователя, выполнившего действие. Пример: `"98765"` @@ -12937,17 +14156,23 @@ users = await with_retry(lambda: client.users.list_users()) - `filters: Record` (required) — Применённые фильтры. Возможные ключи зависят от типа поиска: order, sort, created_from, created_to, company_roles (users), active, chat_subtype, personal (chats), chat_ids, user_ids (messages). **Структура значений Record:** - Тип значения: `any` - - **AuditDetailsBot**: При: bot_deleted, bot_token_recreated + - **AuditDetailsBot**: При: bot_deleted, bot_token_recreated, bot_token_created, bot_token_updated, bot_token_reissued - `bot_id: integer, int32` (required) — Идентификатор бота - `actor_id: integer, int32` (required, nullable) — Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора. - **AuditDetailsBotScopes**: При: bot_scopes_updated + - `bot_id: integer, int32` (required) — Идентификатор бота + - `actor_id: integer, int32` (required, nullable) — Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора. - `added_scopes: array of string` (required) — Скоупы, добавленные токену бота - `removed_scopes: array of string` (required) — Скоупы, отозванные у токена бота - **AuditDetailsBotWebhookSettings**: При: bot_webhook_settings_updated + - `bot_id: integer, int32` (required) — Идентификатор бота + - `actor_id: integer, int32` (required, nullable) — Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора. - `changes: Record` (required) — Изменённые настройки вебхука. Ключ — имя настройки (outgoing_url, ignore_self_messages, events_history_enabled), значение — объект с полями previous (прежнее значение) и new (новое значение). **Структура значений Record:** - Тип значения: `any` - **AuditDetailsBotOAuthClient**: При: bot_oauth_client_updated + - `bot_id: integer, int32` (required) — Идентификатор бота + - `actor_id: integer, int32` (required, nullable) — Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора. - `client_id: string` (required) — Идентификатор OAuth-клиента бота - `changes: Record` (required) — Изменённые параметры клиента. Ключ — имя параметра (confidential, redirect_uris, scopes), значение — объект с полями previous (прежнее значение) и new (новое значение). **Структура значений Record:** @@ -12979,6 +14204,16 @@ users = await with_retry(lambda: client.users.list_users()) - `file_id: integer, int32` (required) — Идентификатор файла записи - `duration: integer, int32` (required) — Длительность записи в секундах - `size: integer, int64` (required) — Размер файла записи в байтах + - **AuditDetailsBotOAuthClientSecretRotated**: При: bot_oauth_client_secret_rotated + - `bot_id: integer, int32` (required) — Идентификатор бота + - `actor_id: integer, int32` (required, nullable) — Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора. + - `client_id: string` (required) — Идентификатор OAuth-клиента бота + - **AuditDetailsBotOAuthClientDisabled**: При: bot_oauth_client_disabled + - `bot_id: integer, int32` (required) — Идентификатор бота + - `actor_id: integer, int32` (required, nullable) — Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора. + - `client_id: string` (required) — Идентификатор OAuth-клиента бота + - `deleted_access_tokens_count: integer, int32` (required) — Сколько токенов сотрудников отозвано + - `deleted_access_grants_count: integer, int32` (required) — Сколько неиспользованных кодов авторизации отозвано - `ip_address: string` (required, nullable) — IP-адрес, с которого было выполнено действие. `null` у событий, записанных без запроса пользователя. Пример: `"192.168.1.100"` - `user_agent: string` (required, nullable) — User agent клиента, обрезается до 255 символов. `null` у событий, записанных без запроса пользователя. Пример: `"Pachca/3.60.0 (co.staply.pachca; build:15; iOS 18.5.0) Alamofire/5.0.0"` @@ -13105,9 +14340,11 @@ response = await client.oauth.get_token_info() Создаёт беседу или канал. Владелец токена становится владельцем чата, и роль эта в дальнейшем не передаётся. +Мульти-гость, как и в интерфейсе, создавать чаты не может: метод отвечает ему `403`. + Для создания личной переписки 1 на 1 с пользователем пользуйтесь методом [Новое сообщение](/api/messages/create). Чтобы обсудить конкретное сообщение, чат заводить не нужно — под ним заводят тред методом [Новый тред](/api/threads/add). -Участников можно передать сразу: `member_ids` добавляет поимённо, `group_tag_ids` приводит всех, кто состоит в теге, и дальше поддерживает состав сам. Идентификаторы, которых в пространстве нет, а также приостановленные и удалённые сотрудники молча отбрасываются — ответ приходит успешным, а сотрудника в чате не оказывается, поэтому сверяйте состав в ответе. +Участников можно передать сразу: `member_ids` добавляет поимённо, `group_tag_ids` приводит всех, кто состоит в теге, и дальше поддерживает состав сам. Идентификаторы, которых в пространстве нет, а также приостановленные и удалённые сотрудники молча отбрасываются — ответ приходит успешным, а сотрудника в чате не оказывается, поэтому сверяйте состав в ответе. С ботами строже: если настройка бота «Кто может добавлять бота в чаты» не разрешает вам его добавить, чат не создаётся, а метод отвечает `403` с кодом `bot_add_denied` и идентификаторами таких ботов в `value`. ## Тело запроса @@ -13221,7 +14458,7 @@ curl "https://api.pachca.com/api/shared/v1/chats" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -13267,7 +14504,7 @@ curl "https://api.pachca.com/api/shared/v1/chats" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -13292,15 +14529,35 @@ curl "https://api.pachca.com/api/shared/v1/chats" \ **Схема ответа при ошибке:** -- `error: string` (required) — Код ошибки. Пример: `"invalid_token"` -- `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` +**anyOf** - один из вариантов: + +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) + - `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` +- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403) + - `error: string` (required) — Код ошибки. Пример: `"invalid_token"` + - `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` **Пример ответа:** ```json { - "error": "invalid_token", - "error_description": "Access token is missing" + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] } ``` @@ -13313,7 +14570,7 @@ curl "https://api.pachca.com/api/shared/v1/chats" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -13390,7 +14647,7 @@ response = await client.chats.create_chat(request=request) > **Скоуп:** `chats:read` -По умолчанию — беседы, каналы и личные переписки, где состоит владелец токена. С `availability=public` метод отдаёт вместо этого все открытые чаты пространства, включая те, куда вызывающий не вступал. +По умолчанию — беседы, каналы и личные переписки, где состоит владелец токена. С `availability=public` метод отдаёт вместо этого все открытые чаты пространства, включая те, куда вызывающий не вступал. Мульти-гостю — только открытые чаты, где он участник. Треды в списке не приходят никогда, для них есть [Список тредов](/api/threads/list). @@ -13491,7 +14748,7 @@ curl "https://api.pachca.com/api/shared/v1/chats?sort=id&order=desc&availability - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -13537,7 +14794,7 @@ curl "https://api.pachca.com/api/shared/v1/chats?sort=id&order=desc&availability - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -13583,7 +14840,7 @@ curl "https://api.pachca.com/api/shared/v1/chats?sort=id&order=desc&availability - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -13727,7 +14984,7 @@ curl "https://api.pachca.com/api/shared/v1/chats/exports" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -13770,13 +15027,13 @@ curl "https://api.pachca.com/api/shared/v1/chats/exports" \ **anyOf** - один из вариантов: -- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422) +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) - `errors: array of object` (required) — Массив ошибок - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -13809,7 +15066,7 @@ curl "https://api.pachca.com/api/shared/v1/chats/exports" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -13949,7 +15206,7 @@ curl "https://api.pachca.com/api/shared/v1/chats/exports/22322" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -14099,7 +15356,7 @@ curl "https://api.pachca.com/api/shared/v1/chats/334" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -14145,7 +15402,7 @@ curl "https://api.pachca.com/api/shared/v1/chats/334" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -14309,7 +15566,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/chats/334" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -14355,7 +15612,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/chats/334" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -14401,7 +15658,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/chats/334" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -14431,7 +15688,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/chats/334" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -14559,7 +15816,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/chats/334/archive" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -14678,7 +15935,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/chats/334/unarchive" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -14724,106 +15981,109 @@ await client.chats.unarchive_chat(id=334) --- ---- [Document source](https://dev.pachca.com/api/chats/list-company.md) --- +--- [Document source](https://dev.pachca.com/api/chats/mark-unread.md) --- -# Список чатов пространства +# Отметка чата непрочитанным -**Метод**: `GET` +**Метод**: `PUT` -**Путь**: `/company/chats` +**Путь**: `/chats/{id}/unread` -> **Скоуп:** `company_chats:read` +> **Скоуп:** `chats:mark_unread` -> **Внимание:** Доступно только на тарифе **Корпорация** +Помечает чат непрочитанным для владельца токена, как «Отметить непрочитанным» в интерфейсе. Меняется только его собственный счётчик, остальные участники ничего не замечают. -Беседы и каналы всего пространства, включая закрытые, где вы не состоите участником. Личные переписки и треды не возвращаются. - -По умолчанию отдаются и активные, и архивные чаты. Параметр `activity` оставляет в выдаче только одно из состояний. +Без `message_id` непрочитанным становится последнее сообщение чата, с `message_id` — это сообщение и все после него. Повторный запрос с тем же сообщением ничего не меняет, а в чате без сообщений метод отвечает успехом и ничего не делает. -Метод доступен владельцу пространства. Каждый запрос записывается в [журнал аудита событий](/guides/audit-events) с типом `company_chats_accessed`. +Работает в беседах, каналах, личных чатах и тредах, где владелец токена состоит. Скрытый личный чат снова появляется в списке. На чат, где владельца токена нет, и на сообщение из другого чата метод отвечает `404`. ## Параметры -### Query параметры +### Path параметры -- `activity: string` — Состояние чатов. Если параметр не указан, возвращаются и активные, и архивные чаты. - Значения: `active`, `archived` -- `limit: integer, int32` (default: 50) — Количество возвращаемых сущностей за один запрос -- `cursor: string` — Курсор для пагинации (из `meta.paginate.next_page`) +- `id: integer, int32` (required) — Идентификатор чата или треда + + +## Тело запроса + +**Опционально** +Формат: `application/json` + +### Схема + +- `message_id: integer, int32` (min: 1) — Идентификатор сообщения, с которого чат становится непрочитанным: оно и все сообщения после него. Если не передать, непрочитанным становится последнее сообщение. Пример: `1194275` + +### Пример + +```json +{ + "message_id": 1194275 +} +``` ## Пример запроса ```bash -# Для получения следующей страницы используйте cursor из meta.paginate.next_page -curl "https://api.pachca.com/api/shared/v1/company/chats?activity=active&limit=1" \ - -H "Authorization: Bearer YOUR_ACCESS_TOKEN" +curl -X PUT "https://api.pachca.com/api/shared/v1/chats/334/unread" \ + -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ + -H "Content-Type: application/json" \ + -d '{ + "message_id": 1194275 +}' ``` ## Ответы -### 200: The request has succeeded. +### 204: There is no content to send for this request, but the headers may be useful. -**Схема ответа:** +### 400: The server could not understand the request due to invalid syntax. -- `data: array of object` (required) - - `id: integer, int32` (required) — Идентификатор созданного чата. Пример: `334` - - `name: string` (required, max length: 255) — Название. Пример: `"🤿 aqua"` - - `created_at: date-time` (required) — Дата и время создания чата (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2021-08-28T15:56:53.000Z"` - - `owner_id: integer, int32` (required) — Идентификатор пользователя, создавшего чат. Пример: `185` - - `member_ids: array of integer` (required) — Массив идентификаторов пользователей, участников. Пример: `[185,186,187]` - - `group_tag_ids: array of integer` (required) — Массив идентификаторов тегов, участников. Пример: `[9111]` - - `channel: boolean` (required) — Является каналом. Пример: `true` - - `archived: boolean` (required) — Находится в архиве. Пример: `false` - - `personal: boolean` (required) — Является личным чатом. Пример: `false` - - `public: boolean` (required) — Открытый доступ. Пример: `false` - - `last_message_at: date-time` (required) — Дата и время создания последнего сообщения в чате (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2021-08-28T15:56:53.000Z"` - - `meet_room_url: string` (required) — Ссылка на Видеочат. Пример: `"https://meet.pachca.com/aqua-94bb21b5"` -- `meta: object` (required) — Метаданные пагинации - - `paginate: object` (required) — Вспомогательная информация - - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `"eyJxZCO2MiwiZGlyIjomSNYjIn3"` - - `prev_page: string` — Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка. Пример: `"eyJxZCO2MiwiZGlyIjoiYXNjIn0"` - - `has_next: boolean` — Есть ли ещё данные на следующей странице. На последней странице — `false`. Пример: `true` - - `has_prev: boolean` — Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`. Пример: `false` +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` **Пример ответа:** ```json { - "data": [ + "errors": [ { - "id": 334, - "name": "🤿 aqua", - "created_at": "2021-08-28T15:56:53.000Z", - "owner_id": 185, - "member_ids": [ - 185, - 186, - 187 - ], - "group_tag_ids": [ - 9111 - ], - "channel": true, - "archived": false, - "personal": false, - "public": false, - "last_message_at": "2021-08-28T15:56:53.000Z", - "meet_room_url": "https://meet.pachca.com/aqua-94bb21b5" - } - ], - "meta": { - "paginate": { - "next_page": "eyJxZCO2MiwiZGlyIjomSNYjIn3", - "prev_page": "eyJxZCO2MiwiZGlyIjoiYXNjIn0", - "has_next": true, - "has_prev": false + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null } - } + ] } ``` -### 400: The server could not understand the request due to invalid syntax. +### 401: Access is unauthorized. + +**Схема ответа при ошибке:** + +- `error: string` (required) — Код ошибки. Пример: `"invalid_token"` +- `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` + +**Пример ответа:** + +```json +{ + "error": "invalid_token", + "error_description": "Access token is missing" +} +``` + +### 402: Client error **Схема ответа при ошибке:** @@ -14832,7 +16092,7 @@ curl "https://api.pachca.com/api/shared/v1/company/chats?activity=active&limit=1 - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -14853,23 +16113,43 @@ curl "https://api.pachca.com/api/shared/v1/company/chats?activity=active&limit=1 } ``` -### 401: Access is unauthorized. +### 403: Access is forbidden. **Схема ответа при ошибке:** -- `error: string` (required) — Код ошибки. Пример: `"invalid_token"` -- `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` +**anyOf** - один из вариантов: + +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) + - `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` +- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403) + - `error: string` (required) — Код ошибки. Пример: `"invalid_token"` + - `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` **Пример ответа:** ```json { - "error": "invalid_token", - "error_description": "Access token is missing" + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] } ``` -### 402: Client error +### 404: The server cannot find the requested resource. **Схема ответа при ошибке:** @@ -14878,7 +16158,210 @@ curl "https://api.pachca.com/api/shared/v1/company/chats?activity=active&limit=1 - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + + +## SDK примеры + +### TypeScript + +```typescript +import { MarkChatUnreadRequest, PachcaClient } from "@pachca/sdk" + +const client = new PachcaClient("YOUR_TOKEN") + +const request: MarkChatUnreadRequest = { messageId: 1194275 } +client.chats.markChatUnread(334, request) +``` + +### Python + +```python +from pachca.client import PachcaClient +from pachca.models import MarkChatUnreadRequest + +client = PachcaClient("YOUR_TOKEN") + +request = MarkChatUnreadRequest(message_id=1194275) +await client.chats.mark_chat_unread(id=334, request=request) +``` + +--- + +--- [Document source](https://dev.pachca.com/api/chats/list-company.md) --- + +# Список чатов пространства + +**Метод**: `GET` + +**Путь**: `/company/chats` + +> **Скоуп:** `company_chats:read` + +> **Внимание:** Доступно только на тарифе **Корпорация** + +Беседы и каналы всего пространства, включая закрытые, где вы не состоите участником. Личные переписки и треды не возвращаются. + +По умолчанию отдаются и активные, и архивные чаты. Параметр `activity` оставляет в выдаче только одно из состояний. + +Метод доступен владельцу пространства. Каждый запрос записывается в [журнал аудита событий](/guides/audit-events) с типом `company_chats_accessed`. + +## Параметры + +### Query параметры + +- `activity: string` — Состояние чатов. Если параметр не указан, возвращаются и активные, и архивные чаты. + Значения: `active`, `archived` +- `limit: integer, int32` (default: 50) — Количество возвращаемых сущностей за один запрос +- `cursor: string` — Курсор для пагинации (из `meta.paginate.next_page`) + + +## Пример запроса + +```bash +# Для получения следующей страницы используйте cursor из meta.paginate.next_page +curl "https://api.pachca.com/api/shared/v1/company/chats?activity=active&limit=1" \ + -H "Authorization: Bearer YOUR_ACCESS_TOKEN" +``` + +## Ответы + +### 200: The request has succeeded. + +**Схема ответа:** + +- `data: array of object` (required) + - `id: integer, int32` (required) — Идентификатор созданного чата. Пример: `334` + - `name: string` (required, max length: 255) — Название. Пример: `"🤿 aqua"` + - `created_at: date-time` (required) — Дата и время создания чата (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2021-08-28T15:56:53.000Z"` + - `owner_id: integer, int32` (required) — Идентификатор пользователя, создавшего чат. Пример: `185` + - `member_ids: array of integer` (required) — Массив идентификаторов пользователей, участников. Пример: `[185,186,187]` + - `group_tag_ids: array of integer` (required) — Массив идентификаторов тегов, участников. Пример: `[9111]` + - `channel: boolean` (required) — Является каналом. Пример: `true` + - `archived: boolean` (required) — Находится в архиве. Пример: `false` + - `personal: boolean` (required) — Является личным чатом. Пример: `false` + - `public: boolean` (required) — Открытый доступ. Пример: `false` + - `last_message_at: date-time` (required) — Дата и время создания последнего сообщения в чате (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2021-08-28T15:56:53.000Z"` + - `meet_room_url: string` (required) — Ссылка на Видеочат. Пример: `"https://meet.pachca.com/aqua-94bb21b5"` +- `meta: object` (required) — Метаданные пагинации + - `paginate: object` (required) — Вспомогательная информация + - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `"eyJxZCO2MiwiZGlyIjomSNYjIn3"` + - `prev_page: string` — Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка. Пример: `"eyJxZCO2MiwiZGlyIjoiYXNjIn0"` + - `has_next: boolean` — Есть ли ещё данные на следующей странице. На последней странице — `false`. Пример: `true` + - `has_prev: boolean` — Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`. Пример: `false` + +**Пример ответа:** + +```json +{ + "data": [ + { + "id": 334, + "name": "🤿 aqua", + "created_at": "2021-08-28T15:56:53.000Z", + "owner_id": 185, + "member_ids": [ + 185, + 186, + 187 + ], + "group_tag_ids": [ + 9111 + ], + "channel": true, + "archived": false, + "personal": false, + "public": false, + "last_message_at": "2021-08-28T15:56:53.000Z", + "meet_room_url": "https://meet.pachca.com/aqua-94bb21b5" + } + ], + "meta": { + "paginate": { + "next_page": "eyJxZCO2MiwiZGlyIjomSNYjIn3", + "prev_page": "eyJxZCO2MiwiZGlyIjoiYXNjIn0", + "has_next": true, + "has_prev": false + } + } +} +``` + +### 400: The server could not understand the request due to invalid syntax. + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + +### 401: Access is unauthorized. + +**Схема ответа при ошибке:** + +- `error: string` (required) — Код ошибки. Пример: `"invalid_token"` +- `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` + +**Пример ответа:** + +```json +{ + "error": "invalid_token", + "error_description": "Access token is missing" +} +``` + +### 402: Client error + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -14905,13 +16388,13 @@ curl "https://api.pachca.com/api/shared/v1/company/chats?activity=active&limit=1 **anyOf** - один из вариантов: -- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422) +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) - `errors: array of object` (required) — Массив ошибок - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -15008,8 +16491,8 @@ curl "https://api.pachca.com/api/shared/v1/profile" \ - `first_name: string` (required, nullable, max length: 255) — Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`). Пример: `"Олег"` - `last_name: string` (required, nullable, max length: 255) — Фамилия. Если не заполнена, возвращается `null` или пустая строка. Пример: `"Петров"` - `nickname: string` (required, max length: 255) — Имя пользователя. Пример: `"olegpetrov"` - - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `"olegp@example.com"` - - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `"+79001234567"` + - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `"olegp@example.com"` + - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `"+79001234567"` - `department: string` (required, nullable, max length: 255) — Департамент. Если не указан, возвращается `null` или пустая строка. Пример: `"Продукт"` - `title: string` (required, nullable) — Должность. Если не указана, возвращается `null` или пустая строка. Пример: `"CIO"` - `role: string` (required) — Уровень доступа @@ -15018,7 +16501,7 @@ curl "https://api.pachca.com/api/shared/v1/profile" \ - `invite_status: string` (required) — Статус приглашения Значения: `confirmed` — Принято, `sent` — Отправлено - `inviter_id: integer, int32` (required, nullable) — Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён. Пример: `185` - - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Пример: `["Product","Design"]` + - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Мульти-гостю в чужой карточке приходит пустым. Пример: `["Product","Design"]` - `custom_properties: array of object` (required) — Дополнительные поля сотрудника - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678` - `name: string` (required, max length: 32) — Название поля. Пример: `"Город"` @@ -15225,7 +16708,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/profile/avatar" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -15252,13 +16735,13 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/profile/avatar" \ **anyOf** - один из вариантов: -- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422) +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) - `errors: array of object` (required) — Массив ошибок - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -15291,7 +16774,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/profile/avatar" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -15388,7 +16871,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/profile/avatar" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -15415,13 +16898,13 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/profile/avatar" \ **anyOf** - один из вариантов: -- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422) +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) - `errors: array of object` (required) — Массив ошибок - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -15685,7 +17168,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/profile/status" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -15747,7 +17230,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/profile/status" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -15935,7 +17418,7 @@ await client.profile.delete_status() - `role: string` — Уровень доступа Значения: `admin` — Администратор, `user` — Сотрудник, `multi_guest` — Мульти-гость, `guest` — Гость - `suspended: boolean` (default: false) — Деактивация пользователя. Пример: `false` - - `list_tags: array of string` — Массив тегов, привязываемых к сотруднику. Пример: `["Product","Design"]` + - `list_tags: array of string` — Массив названий тегов, привязываемых к сотруднику. Значение, которое не является массивом непустых строк, игнорируется. Пример: `["Product","Design"]` - `chat_ids: array of integer` — Идентификаторы чатов, в которые сотрудник будет добавлен сразу при создании. Для роли `guest` параметр обязателен и должен содержать ровно один активный чат. Пример: `[12345]` - `custom_properties: array of object` — Задаваемые дополнительные поля - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678` @@ -16016,8 +17499,8 @@ curl "https://api.pachca.com/api/shared/v1/users" \ - `first_name: string` (required, nullable, max length: 255) — Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`). Пример: `"Олег"` - `last_name: string` (required, nullable, max length: 255) — Фамилия. Если не заполнена, возвращается `null` или пустая строка. Пример: `"Петров"` - `nickname: string` (required, max length: 255) — Имя пользователя. Пример: `"olegpetrov"` - - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `"olegp@example.com"` - - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `"+79001234567"` + - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `"olegp@example.com"` + - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `"+79001234567"` - `department: string` (required, nullable, max length: 255) — Департамент. Если не указан, возвращается `null` или пустая строка. Пример: `"Продукт"` - `title: string` (required, nullable) — Должность. Если не указана, возвращается `null` или пустая строка. Пример: `"CIO"` - `role: string` (required) — Уровень доступа @@ -16026,7 +17509,7 @@ curl "https://api.pachca.com/api/shared/v1/users" \ - `invite_status: string` (required) — Статус приглашения Значения: `confirmed` — Принято, `sent` — Отправлено - `inviter_id: integer, int32` (required, nullable) — Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён. Пример: `185` - - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Пример: `["Product","Design"]` + - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Мульти-гостю в чужой карточке приходит пустым. Пример: `["Product","Design"]` - `custom_properties: array of object` (required) — Дополнительные поля сотрудника - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678` - `name: string` (required, max length: 32) — Название поля. Пример: `"Город"` @@ -16104,7 +17587,7 @@ curl "https://api.pachca.com/api/shared/v1/users" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -16150,7 +17633,7 @@ curl "https://api.pachca.com/api/shared/v1/users" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -16196,7 +17679,7 @@ curl "https://api.pachca.com/api/shared/v1/users" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -16226,7 +17709,7 @@ curl "https://api.pachca.com/api/shared/v1/users" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -16323,7 +17806,11 @@ response = await client.users.create_user(request=request) Боты в пространстве — тоже сотрудники и приходят в общем списке с `bot: true`. Но из выдачи по `query` они исключены: чтобы найти бота по имени, перебирайте страницы без поискового запроса или пользуйтесь методом [Список ботов](/api/bots/list). -Почта и телефон приходят `null`, если в пространстве выключен показ персональных данных, а вызывающий не администратор. +Мульти-гостю метод отдаёт не всё пространство, а тех, кого он видит в интерфейсе: его самого, участников общих с ним чатов вместе с ботами и публичных ботов. Треды и архивные чаты общими не считаются. + +Почта и телефон приходят `null`, если в пространстве выключен показ персональных данных, а вызывающий не администратор. Мульти-гостю они всегда приходят `null`. + +Поиск по `query` может не уложиться по времени: тогда метод отвечает `504` с кодом `timeout`, и запрос стоит сузить. Карточку одного сотрудника отдаёт [Информация о сотруднике](/api/users/get), свою — [Свой профиль](/api/profile/get). @@ -16355,8 +17842,8 @@ curl "https://api.pachca.com/api/shared/v1/users?query=Олег&limit=1" \ - `first_name: string` (required, nullable, max length: 255) — Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`). Пример: `"Олег"` - `last_name: string` (required, nullable, max length: 255) — Фамилия. Если не заполнена, возвращается `null` или пустая строка. Пример: `"Петров"` - `nickname: string` (required, max length: 255) — Имя пользователя. Пример: `"olegpetrov"` - - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `"olegp@example.com"` - - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `"+79001234567"` + - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `"olegp@example.com"` + - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `"+79001234567"` - `department: string` (required, nullable, max length: 255) — Департамент. Если не указан, возвращается `null` или пустая строка. Пример: `"Продукт"` - `title: string` (required, nullable) — Должность. Если не указана, возвращается `null` или пустая строка. Пример: `"CIO"` - `role: string` (required) — Уровень доступа @@ -16365,7 +17852,7 @@ curl "https://api.pachca.com/api/shared/v1/users?query=Олег&limit=1" \ - `invite_status: string` (required) — Статус приглашения Значения: `confirmed` — Принято, `sent` — Отправлено - `inviter_id: integer, int32` (required, nullable) — Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён. Пример: `185` - - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Пример: `["Product","Design"]` + - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Мульти-гостю в чужой карточке приходит пустым. Пример: `["Product","Design"]` - `custom_properties: array of object` (required) — Дополнительные поля сотрудника - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678` - `name: string` (required, max length: 32) — Название поля. Пример: `"Город"` @@ -16459,7 +17946,7 @@ curl "https://api.pachca.com/api/shared/v1/users?query=Олег&limit=1" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -16505,7 +17992,7 @@ curl "https://api.pachca.com/api/shared/v1/users?query=Олег&limit=1" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -16551,7 +18038,37 @@ curl "https://api.pachca.com/api/shared/v1/users?query=Олег&limit=1" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + +### 504: Server error + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -16623,7 +18140,9 @@ response = await client.users.list_users(params=params) Приостановленный сотрудник отдаётся с `suspended: true`, удалённый — `404`, как несуществующий. Бот тоже приходит сюда как сотрудник, с `bot: true`. -Почта и телефон приходят `null`, если в пространстве выключен показ персональных данных, а вызывающий не администратор. Свою карточку сотрудник видит целиком — она же отдаётся методом [Свой профиль](/api/profile/get) и без скоупа `users:read`. +Мульти-гостю метод отдаёт только тех, кто приходит ему в [Список сотрудников](/api/users/list), а на остальных отвечает `404`. + +Почта и телефон приходят `null`, если в пространстве выключен показ персональных данных, а вызывающий не администратор. Мульти-гостю они всегда приходят `null`. Свою карточку сотрудник видит целиком — она же отдаётся методом [Свой профиль](/api/profile/get) и без скоупа `users:read`. ## Параметры @@ -16650,8 +18169,8 @@ curl "https://api.pachca.com/api/shared/v1/users/12" \ - `first_name: string` (required, nullable, max length: 255) — Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`). Пример: `"Олег"` - `last_name: string` (required, nullable, max length: 255) — Фамилия. Если не заполнена, возвращается `null` или пустая строка. Пример: `"Петров"` - `nickname: string` (required, max length: 255) — Имя пользователя. Пример: `"olegpetrov"` - - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `"olegp@example.com"` - - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `"+79001234567"` + - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `"olegp@example.com"` + - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `"+79001234567"` - `department: string` (required, nullable, max length: 255) — Департамент. Если не указан, возвращается `null` или пустая строка. Пример: `"Продукт"` - `title: string` (required, nullable) — Должность. Если не указана, возвращается `null` или пустая строка. Пример: `"CIO"` - `role: string` (required) — Уровень доступа @@ -16660,7 +18179,7 @@ curl "https://api.pachca.com/api/shared/v1/users/12" \ - `invite_status: string` (required) — Статус приглашения Значения: `confirmed` — Принято, `sent` — Отправлено - `inviter_id: integer, int32` (required, nullable) — Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён. Пример: `185` - - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Пример: `["Product","Design"]` + - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Мульти-гостю в чужой карточке приходит пустым. Пример: `["Product","Design"]` - `custom_properties: array of object` (required) — Дополнительные поля сотрудника - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678` - `name: string` (required, max length: 32) — Название поля. Пример: `"Город"` @@ -16754,7 +18273,7 @@ curl "https://api.pachca.com/api/shared/v1/users/12" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -16800,7 +18319,7 @@ curl "https://api.pachca.com/api/shared/v1/users/12" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -16868,6 +18387,8 @@ response = await client.users.get_user(id=12) Незнакомое значение роли метод молча пропускает: ответ приходит успешный, а роль остаётся прежней. +У бота ник должен оканчиваться на `_bot` и быть уникальным в пространстве, иначе метод отвечает `422` с ошибкой на поле `nickname`: `invalid` или `already_exists`. Прежний ник бота проверяется, только когда его меняют. + ## Параметры ### Path параметры @@ -16894,7 +18415,7 @@ response = await client.users.get_user(id=12) - `role: string` — Уровень доступа Значения: `admin` — Администратор, `user` — Сотрудник, `multi_guest` — Мульти-гость - `suspended: boolean` (default: false) — Деактивация пользователя. Пример: `false` - - `list_tags: array of string` — Массив тегов, привязываемых к сотруднику. Пример: `["Product","Design"]` + - `list_tags: array of string` — Массив названий тегов, привязываемых к сотруднику. Список заменяет прежний целиком, пустой снимает все теги. Значение, которое не является массивом непустых строк, игнорируется: теги сотрудника не меняются. Пример: `["Product","Design"]` - `custom_properties: array of object` — Задаваемые дополнительные поля - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678` - `value: string` (required, max length: 768) — Устанавливаемое значение. Пример: `"Санкт-Петербург"` @@ -16967,8 +18488,8 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/users/12" \ - `first_name: string` (required, nullable, max length: 255) — Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`). Пример: `"Олег"` - `last_name: string` (required, nullable, max length: 255) — Фамилия. Если не заполнена, возвращается `null` или пустая строка. Пример: `"Петров"` - `nickname: string` (required, max length: 255) — Имя пользователя. Пример: `"olegpetrov"` - - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `"olegp@example.com"` - - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `"+79001234567"` + - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `"olegp@example.com"` + - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `"+79001234567"` - `department: string` (required, nullable, max length: 255) — Департамент. Если не указан, возвращается `null` или пустая строка. Пример: `"Продукт"` - `title: string` (required, nullable) — Должность. Если не указана, возвращается `null` или пустая строка. Пример: `"CIO"` - `role: string` (required) — Уровень доступа @@ -16977,7 +18498,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/users/12" \ - `invite_status: string` (required) — Статус приглашения Значения: `confirmed` — Принято, `sent` — Отправлено - `inviter_id: integer, int32` (required, nullable) — Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён. Пример: `185` - - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Пример: `["Product","Design"]` + - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Мульти-гостю в чужой карточке приходит пустым. Пример: `["Product","Design"]` - `custom_properties: array of object` (required) — Дополнительные поля сотрудника - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678` - `name: string` (required, max length: 32) — Название поля. Пример: `"Город"` @@ -17055,7 +18576,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/users/12" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -17101,7 +18622,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/users/12" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -17147,7 +18668,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/users/12" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -17177,7 +18698,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/users/12" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -17207,7 +18728,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/users/12" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -17347,7 +18868,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/users/12" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -17393,7 +18914,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/users/12" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -17525,7 +19046,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/users/12/avatar" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -17552,13 +19073,13 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/users/12/avatar" \ **anyOf** - один из вариантов: -- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422) +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) - `errors: array of object` (required) — Массив ошибок - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -17591,7 +19112,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/users/12/avatar" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -17621,7 +19142,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/users/12/avatar" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -17727,7 +19248,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/users/12/avatar" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -17754,13 +19275,13 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/users/12/avatar" \ **anyOf** - один из вариантов: -- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422) +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) - `errors: array of object` (required) — Массив ошибок - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -17793,7 +19314,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/users/12/avatar" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -17851,6 +19372,8 @@ await client.users.delete_user_avatar(user_id=12) Статус другого сотрудника: эмодзи, подпись, срок и режим «Нет на месте». +Мульти-гостю метод отдаёт статусы только тех, кто приходит ему в [Список сотрудников](/api/users/list), а на остальных отвечает `404`. + Если статус не установлен, метод возвращает `200` и `null` в теле ответа — без объекта-обёртки. Статус с истёкшим `expires_at` какое-то время ещё возвращается, пока не будет очищен, поэтому проверяйте `expires_at` на стороне клиента. ## Параметры @@ -17938,7 +19461,7 @@ curl "https://api.pachca.com/api/shared/v1/users/12/status" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -18098,7 +19621,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/users/12/status" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -18160,7 +19683,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/users/12/status" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -18190,7 +19713,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/users/12/status" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -18330,7 +19853,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/users/12/status" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -18460,7 +19983,7 @@ curl "https://api.pachca.com/api/shared/v1/group_tags" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -18506,7 +20029,7 @@ curl "https://api.pachca.com/api/shared/v1/group_tags" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -18552,7 +20075,7 @@ curl "https://api.pachca.com/api/shared/v1/group_tags" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -18582,7 +20105,7 @@ curl "https://api.pachca.com/api/shared/v1/group_tags" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -18643,9 +20166,9 @@ response = await client.group_tags.create_tag(request=request) > **Скоуп:** `group_tags:read` -Все теги пространства с числом сотрудников в каждом. Видны они одинаково всем ролям, независимо от того, к каким чатам привязаны. +Все теги пространства с числом сотрудников в каждом, независимо от того, к каким чатам они привязаны. Мульти-гостю приходят только теги активных бесед и каналов, где он участник. -Параметр `names` ищет теги по названиям — это способ получить `id` по имени, известному из интерфейса. За один запрос он принимает не больше 100 имён. +Параметр `names` ищет теги по названиям — это способ получить `id` по имени, известному из интерфейса. За один запрос он принимает не больше 100 имён, на большее число метод отвечает `400` с кодом `too_long`. Кто состоит в конкретном теге, отдаёт [Список сотрудников тега](/api/group-tags/list-users). @@ -18714,7 +20237,7 @@ curl "https://api.pachca.com/api/shared/v1/group_tags?names[]=Design&names[]=Pro - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -18760,7 +20283,7 @@ curl "https://api.pachca.com/api/shared/v1/group_tags?names[]=Design&names[]=Pro - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -18806,7 +20329,7 @@ curl "https://api.pachca.com/api/shared/v1/group_tags?names[]=Design&names[]=Pro - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -18878,6 +20401,8 @@ response = await client.group_tags.list_tags(params=params) В `users_count` считаются только действующие сотрудники: приостановленные в счётчик не попадают, хотя в методе [Список сотрудников тега](/api/group-tags/list-users) остаются. +Мульти-гостю доступны только теги, которые приходят ему в [Список тегов](/api/group-tags/list), а на остальные метод отвечает `404`. + ## Параметры ### Path параметры @@ -18940,7 +20465,7 @@ curl "https://api.pachca.com/api/shared/v1/group_tags/9111" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -18986,7 +20511,7 @@ curl "https://api.pachca.com/api/shared/v1/group_tags/9111" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -19121,7 +20646,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/group_tags/9111" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -19167,7 +20692,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/group_tags/9111" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -19213,7 +20738,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/group_tags/9111" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -19243,7 +20768,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/group_tags/9111" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -19273,7 +20798,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/group_tags/9111" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -19383,7 +20908,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/group_tags/9111" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -19429,7 +20954,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/group_tags/9111" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -19489,6 +21014,8 @@ await client.group_tags.delete_tag(id=9111) Состав тега меняют в карточке сотрудника — [Редактирование сотрудника](/api/users/update) с полем `list_tags`, по одному сотруднику за раз. +Мульти-гостю метод отвечает `403`: список сотрудников пространства ему закрыт, как и в интерфейсе. + ## Параметры ### Path параметры @@ -19520,8 +21047,8 @@ curl "https://api.pachca.com/api/shared/v1/group_tags/9111/users?limit=1" \ - `first_name: string` (required, nullable, max length: 255) — Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`). Пример: `"Олег"` - `last_name: string` (required, nullable, max length: 255) — Фамилия. Если не заполнена, возвращается `null` или пустая строка. Пример: `"Петров"` - `nickname: string` (required, max length: 255) — Имя пользователя. Пример: `"olegpetrov"` - - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `"olegp@example.com"` - - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `"+79001234567"` + - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `"olegp@example.com"` + - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `"+79001234567"` - `department: string` (required, nullable, max length: 255) — Департамент. Если не указан, возвращается `null` или пустая строка. Пример: `"Продукт"` - `title: string` (required, nullable) — Должность. Если не указана, возвращается `null` или пустая строка. Пример: `"CIO"` - `role: string` (required) — Уровень доступа @@ -19530,7 +21057,7 @@ curl "https://api.pachca.com/api/shared/v1/group_tags/9111/users?limit=1" \ - `invite_status: string` (required) — Статус приглашения Значения: `confirmed` — Принято, `sent` — Отправлено - `inviter_id: integer, int32` (required, nullable) — Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён. Пример: `185` - - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Пример: `["Product","Design"]` + - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Мульти-гостю в чужой карточке приходит пустым. Пример: `["Product","Design"]` - `custom_properties: array of object` (required) — Дополнительные поля сотрудника - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678` - `name: string` (required, max length: 32) — Название поля. Пример: `"Город"` @@ -19624,7 +21151,7 @@ curl "https://api.pachca.com/api/shared/v1/group_tags/9111/users?limit=1" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -19670,7 +21197,7 @@ curl "https://api.pachca.com/api/shared/v1/group_tags/9111/users?limit=1" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -19716,7 +21243,7 @@ curl "https://api.pachca.com/api/shared/v1/group_tags/9111/users?limit=1" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -19746,7 +21273,7 @@ curl "https://api.pachca.com/api/shared/v1/group_tags/9111/users?limit=1" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -19871,7 +21398,7 @@ curl "https://api.pachca.com/api/shared/v1/chats/334/group_tags" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -19933,7 +21460,7 @@ curl "https://api.pachca.com/api/shared/v1/chats/334/group_tags" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -19963,7 +21490,7 @@ curl "https://api.pachca.com/api/shared/v1/chats/334/group_tags" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -20087,7 +21614,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/chats/334/group_tags/86" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -20176,7 +21703,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/chats/334/leave" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -20238,7 +21765,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/chats/334/leave" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -20268,7 +21795,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/chats/334/leave" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -20362,8 +21889,8 @@ curl "https://api.pachca.com/api/shared/v1/chats/334/members?role=all&limit=1" \ - `first_name: string` (required, nullable, max length: 255) — Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`). Пример: `"Олег"` - `last_name: string` (required, nullable, max length: 255) — Фамилия. Если не заполнена, возвращается `null` или пустая строка. Пример: `"Петров"` - `nickname: string` (required, max length: 255) — Имя пользователя. Пример: `"olegpetrov"` - - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `"olegp@example.com"` - - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `"+79001234567"` + - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `"olegp@example.com"` + - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `"+79001234567"` - `department: string` (required, nullable, max length: 255) — Департамент. Если не указан, возвращается `null` или пустая строка. Пример: `"Продукт"` - `title: string` (required, nullable) — Должность. Если не указана, возвращается `null` или пустая строка. Пример: `"CIO"` - `role: string` (required) — Уровень доступа @@ -20372,7 +21899,7 @@ curl "https://api.pachca.com/api/shared/v1/chats/334/members?role=all&limit=1" \ - `invite_status: string` (required) — Статус приглашения Значения: `confirmed` — Принято, `sent` — Отправлено - `inviter_id: integer, int32` (required, nullable) — Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён. Пример: `185` - - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Пример: `["Product","Design"]` + - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Мульти-гостю в чужой карточке приходит пустым. Пример: `["Product","Design"]` - `custom_properties: array of object` (required) — Дополнительные поля сотрудника - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678` - `name: string` (required, max length: 32) — Название поля. Пример: `"Город"` @@ -20466,7 +21993,7 @@ curl "https://api.pachca.com/api/shared/v1/chats/334/members?role=all&limit=1" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -20528,7 +22055,7 @@ curl "https://api.pachca.com/api/shared/v1/chats/334/members?role=all&limit=1" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -20558,7 +22085,7 @@ curl "https://api.pachca.com/api/shared/v1/chats/334/members?role=all&limit=1" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -20632,6 +22159,8 @@ response = await client.members.list_members(id=334, params=params) Тех, кто уже состоит в чате, метод пропускает молча и ошибкой это не считает. А вот неизвестный или неактивный идентификатор останавливает весь запрос: метод отвечает `404` и перечисляет такие значения, никто при этом не добавляется. +Бота добавляет только тот, кому это разрешает настройка бота «Кто может добавлять бота в чаты» — подробнее в разделе [Настройки бота](/guides/bots/settings#kto-mozhet-dobavlyat-bota-v-chaty). Если в `member_ids` есть бот, которого вам добавлять нельзя, метод не добавляет никого и отвечает `403` с кодом `bot_add_denied` и идентификаторами таких ботов в `value`. Если в том же запросе есть и неизвестный идентификатор, ответ — `404` с обеими ошибками. + Добавить сразу целый отдел удобнее тегом — [Добавление тегов](/api/members/add-group-tags): тогда состав чата поддерживается сам. ## Параметры @@ -20692,7 +22221,7 @@ curl "https://api.pachca.com/api/shared/v1/chats/334/members" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -20733,15 +22262,35 @@ curl "https://api.pachca.com/api/shared/v1/chats/334/members" \ **Схема ответа при ошибке:** -- `error: string` (required) — Код ошибки. Пример: `"invalid_token"` -- `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` +**anyOf** - один из вариантов: + +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) + - `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` +- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403) + - `error: string` (required) — Код ошибки. Пример: `"invalid_token"` + - `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` **Пример ответа:** ```json { - "error": "invalid_token", - "error_description": "Access token is missing" + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] } ``` @@ -20754,7 +22303,7 @@ curl "https://api.pachca.com/api/shared/v1/chats/334/members" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -20784,7 +22333,7 @@ curl "https://api.pachca.com/api/shared/v1/chats/334/members" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -20909,7 +22458,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/chats/334/members/186" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -21022,7 +22571,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/chats/334/members/186" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -21084,7 +22633,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/chats/334/members/186" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -21114,7 +22663,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/chats/334/members/186" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -21202,8 +22751,8 @@ curl -X POST "https://api.pachca.com/api/shared/v1/messages/154332686/thread" \ **Схема ответа:** - `data: object` (required) — Тред - - `id: integer, int64` (required) — Идентификатор созданного треда (в тред пишут методом [Новое сообщение](/api/messages/create)). Пример: `265142` - - `chat_id: integer, int64` (required) — Идентификатор чата треда (по нему пишут в тред методом [Новое сообщение](/api/messages/create) и читают его методом [Список сообщений чата](/api/messages/list)). Пример: `2637266155` + - `id: integer, int64` (required) — Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](/api/messages/create) с `entity_type: "thread"`. Пример: `265142` + - `chat_id: integer, int64` (required) — Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](/api/messages/list) и работают с его участниками. Пример: `2637266155` - `message_id: integer, int64` (required, nullable) — Идентификатор сообщения, к которому был создан тред. `null` для самостоятельного треда, созданного без привязки к сообщению. Пример: `154332686` - `message_chat_id: integer, int64` (required, nullable) — Идентификатор чата сообщения. `null` для самостоятельного треда, созданного без привязки к сообщению. Пример: `2637266154` - `updated_at: date-time` (required) — Дата и время обновления треда (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2023-02-01T19:20:47.204Z"` @@ -21263,7 +22812,7 @@ curl -X POST "https://api.pachca.com/api/shared/v1/messages/154332686/thread" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -21341,8 +22890,8 @@ curl -X POST "https://api.pachca.com/api/shared/v1/threads" \ **Схема ответа:** - `data: object` (required) — Тред - - `id: integer, int64` (required) — Идентификатор созданного треда (в тред пишут методом [Новое сообщение](/api/messages/create)). Пример: `265142` - - `chat_id: integer, int64` (required) — Идентификатор чата треда (по нему пишут в тред методом [Новое сообщение](/api/messages/create) и читают его методом [Список сообщений чата](/api/messages/list)). Пример: `2637266155` + - `id: integer, int64` (required) — Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](/api/messages/create) с `entity_type: "thread"`. Пример: `265142` + - `chat_id: integer, int64` (required) — Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](/api/messages/list) и работают с его участниками. Пример: `2637266155` - `message_id: integer, int64` (required, nullable) — Идентификатор сообщения, к которому был создан тред. `null` для самостоятельного треда, созданного без привязки к сообщению. Пример: `154332686` - `message_chat_id: integer, int64` (required, nullable) — Идентификатор чата сообщения. `null` для самостоятельного треда, созданного без привязки к сообщению. Пример: `2637266154` - `updated_at: date-time` (required) — Дата и время обновления треда (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2023-02-01T19:20:47.204Z"` @@ -21386,7 +22935,7 @@ curl -X POST "https://api.pachca.com/api/shared/v1/threads" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -21493,8 +23042,8 @@ curl "https://api.pachca.com/api/shared/v1/threads?last_message_at_after=2025-01 **Схема ответа:** - `data: array of object` (required) - - `id: integer, int64` (required) — Идентификатор созданного треда (в тред пишут методом [Новое сообщение](/api/messages/create)). Пример: `265142` - - `chat_id: integer, int64` (required) — Идентификатор чата треда (по нему пишут в тред методом [Новое сообщение](/api/messages/create) и читают его методом [Список сообщений чата](/api/messages/list)). Пример: `2637266155` + - `id: integer, int64` (required) — Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](/api/messages/create) с `entity_type: "thread"`. Пример: `265142` + - `chat_id: integer, int64` (required) — Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](/api/messages/list) и работают с его участниками. Пример: `2637266155` - `message_id: integer, int64` (required, nullable) — Идентификатор сообщения, к которому был создан тред. `null` для самостоятельного треда, созданного без привязки к сообщению. Пример: `154332686` - `message_chat_id: integer, int64` (required, nullable) — Идентификатор чата сообщения. `null` для самостоятельного треда, созданного без привязки к сообщению. Пример: `2637266154` - `updated_at: date-time` (required) — Дата и время обновления треда (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2023-02-01T19:20:47.204Z"` @@ -21538,7 +23087,7 @@ curl "https://api.pachca.com/api/shared/v1/threads?last_message_at_after=2025-01 - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -21584,7 +23133,7 @@ curl "https://api.pachca.com/api/shared/v1/threads?last_message_at_after=2025-01 - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -21630,7 +23179,7 @@ curl "https://api.pachca.com/api/shared/v1/threads?last_message_at_after=2025-01 - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -21700,7 +23249,7 @@ response = await client.threads.list_threads(params=params) > **Скоуп:** `threads:read` -Идентификаторы треда: его собственный `id`, `chat_id` для чтения и отправки сообщений и идентификаторы сообщения, под которым он висит. У самостоятельного треда `message_id` и `message_chat_id` приходят как `null`. +Идентификаторы треда и сообщения, под которым он висит. По `id` в тред пишут методом [Новое сообщение](/api/messages/create) с `entity_type: "thread"`, а по `chat_id` читают его сообщения. У самостоятельного треда `message_id` и `message_chat_id` приходят как `null`. В ответе только идентификаторы: названия и счётчика сообщений у треда нет, о чём он — видно по переписке внутри. Сообщения треда читаются методом [Список сообщений чата](/api/messages/list), а состав участников — методом [Список участников чата](/api/members/list), оба по `chat_id` треда. @@ -21727,8 +23276,8 @@ curl "https://api.pachca.com/api/shared/v1/threads/265142" \ **Схема ответа:** - `data: object` (required) — Тред - - `id: integer, int64` (required) — Идентификатор созданного треда (в тред пишут методом [Новое сообщение](/api/messages/create)). Пример: `265142` - - `chat_id: integer, int64` (required) — Идентификатор чата треда (по нему пишут в тред методом [Новое сообщение](/api/messages/create) и читают его методом [Список сообщений чата](/api/messages/list)). Пример: `2637266155` + - `id: integer, int64` (required) — Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](/api/messages/create) с `entity_type: "thread"`. Пример: `265142` + - `chat_id: integer, int64` (required) — Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](/api/messages/list) и работают с его участниками. Пример: `2637266155` - `message_id: integer, int64` (required, nullable) — Идентификатор сообщения, к которому был создан тред. `null` для самостоятельного треда, созданного без привязки к сообщению. Пример: `154332686` - `message_chat_id: integer, int64` (required, nullable) — Идентификатор чата сообщения. `null` для самостоятельного треда, созданного без привязки к сообщению. Пример: `2637266154` - `updated_at: date-time` (required) — Дата и время обновления треда (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2023-02-01T19:20:47.204Z"` @@ -21772,7 +23321,7 @@ curl "https://api.pachca.com/api/shared/v1/threads/265142" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -21818,7 +23367,7 @@ curl "https://api.pachca.com/api/shared/v1/threads/265142" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -21884,6 +23433,8 @@ response = await client.threads.get_thread(id=265142) Личный чат для этого создавать не требуется: он появится сам, если между вами ещё не было переписки. Между двумя сотрудниками может быть только один личный чат. Со своим собственным идентификатором сообщение уйдёт в чат с самим собой — туда же, куда сотрудник пишет заметки себе. +Чтобы ответить на конкретное сообщение с цитатой, передайте его идентификатор в `parent_message_id`. Так отвечают в любом чате, в том числе в треде: ответ отправляют в тот же чат или тред, где лежит исходное сообщение. + Текст в поле `content` разбирается как markdown: жирный, курсив, зачёркнутый, строчный код, блок кода и ссылки. Списки и таблицы не разбираются — `-`, `1.` и `|` остаются как есть, у цитаты пропадает `>`, а строка с решёткой и пробелом становится жирной. Подробности — в разделе [Форматирование текста](/guides/markdown). `@all` упоминает всех участников чата, `@here` — тех, кто сейчас в сети, а `@` с названием тега без пробелов — сотрудников этого тега. В треде упоминание работает ещё и как приглашение: упомянутого сотрудника, которого в треде нет, Пачка туда добавляет, и он получает доступ к треду и родительскому сообщению. Чтобы этого не происходило, передайте `skip_invite_mentions: true`. В беседе и канале упоминание никого не добавляет, и этот параметр там ничего не меняет. @@ -21908,7 +23459,7 @@ response = await client.threads.get_thread(id=265142) - `entity_type: string` — Тип сущности. Регистр значения не учитывается. Значение вне списка возвращает `400` с кодом `invalid`. Значения: `discussion` — Беседа или канал, `thread` — Тред, `user` — Пользователь - `entity_id: integer, int32` (required) — Идентификатор того, что названо в `entity_type`: беседы или канала, треда либо сотрудника. Пример: `334` - - `content: string` (required) — Текст сообщения. Поддерживает упоминания: `@nickname` или `<@user_id>` (будет автоматически преобразовано в `@nickname`). Пример: `"Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)"` + - `content: string` (required) — Текст сообщения. Поддерживает упоминания: `@nickname` или `<@user_id>` (будет автоматически преобразовано в `@nickname`). У мульти-гостя `<@user_id>` недоступного ему сотрудника остаётся в тексте как есть. Пример: `"Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)"` - `files: array of object` — Прикрепляемые файлы - `key: string` (required, max length: 1000) — Путь к файлу, полученный в методе [Загрузка файла](/api/files/direct-url). Пример: `"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png"` - `name: string` (required, max length: 255) — Название файла, которое вы хотите отображать пользователю. Расширение должно совпадать с расширением файла в `key`, иначе ответ будет 422 с кодом `wrong_params`. Пример: `"logo.png"` @@ -21917,10 +23468,10 @@ response = await client.threads.get_thread(id=265142) - `size: integer, int64` (required) — Размер файла в байтах, отображаемый пользователю. Пример: `12345` - `width: integer, int32` — Ширина изображения в px (используется в случае, если file_type указан как image). Пример: `800` - `height: integer, int32` — Высота изображения в px (используется в случае, если file_type указан как image). Пример: `600` - - `duration_ms: integer, int32` (min: 1) — Длительность в миллисекундах. Обязательно для голосовых сообщений (`file_type` — `voice`), для других типов не используется. Пример: `5400` + - `duration_ms: integer, int32` (min: 1) — Длительность в миллисекундах. Обязательно для голосовых сообщений (`file_type` — `voice`), для других типов не используется. Голосовое сообщение длиннее 30 минут (1 800 000 мс) отклоняется с `422`. Пример: `5400` - `waveform: string` (max length: 256) — Форма волны для визуализации голосового сообщения. Обязательно для голосовых сообщений (`file_type` — `voice`), для других типов не используется. Пример: `"4,8,12,20,16,10,6,3"` - `buttons: array of array` (max items: 32) — Массив строк, каждая из которых представлена массивом кнопок. Максимум 100 кнопок у сообщения, до 8 кнопок в строке. Пример: `[[{"text":"Подробнее","url":"https://example.com/details"},{"text":"Отлично!","data":"awesome"}]]` - - `parent_message_id: integer, int32` — Идентификатор сообщения, на которое отвечаете. Ответ появится прямо в ленте чата, а не в треде: для треда отправляйте сообщение с `entity_type: "thread"`. Пример: `194270` + - `parent_message_id: integer, int32` — Идентификатор сообщения, на которое вы отвечаете с цитатой. Ответить можно на сообщение в любом чате, в том числе в треде: ответ отправляют в тот же чат или тред, где лежит это сообщение, иначе запрос вернёт ошибку `422`. Чтобы написать в тред под сообщением, укажите `entity_type: "thread"` и идентификатор треда в `entity_id`. Пример: `194270` - `display_avatar_url: string` (max length: 255) — Ссылка на специальную аватарку отправителя для этого сообщения. Использование этого поля возможно только с access_token бота. Пример: `"https://example.com/avatar.png"` - `display_name: string` (max length: 255) — Полное специальное имя отправителя для этого сообщения. Использование этого поля возможно только с access_token бота. Пример: `"Бот Поддержки"` - `skip_invite_mentions: boolean` (default: false) — Пропуск добавления упоминаемых пользователей в тред. Работает только при отправке сообщения в тред. Пример: `false` @@ -22038,8 +23589,8 @@ curl "https://api.pachca.com/api/shared/v1/messages" \ - `transcript: string` (required, nullable) — Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна. Пример: `"Привет, посмотри пожалуйста последний отчёт"` - `buttons: array of array` (required, nullable) — Массив строк, каждая из которых представлена массивом кнопок. `null`, если сообщение отправлено без кнопок. - `thread: object` (required, nullable) — Тред, созданный к этому сообщению. `null`, если тред не создан, а также у сообщений, которые сами находятся внутри треда. - - `id: integer, int64` (required) — Идентификатор треда. Пример: `265142` - - `chat_id: integer, int64` (required) — Идентификатор чата треда. Пример: `2637266155` + - `id: integer, int64` (required) — Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](/api/messages/create) с `entity_type: "thread"`. Пример: `265142` + - `chat_id: integer, int64` (required) — Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](/api/messages/list). Пример: `2637266155` - `forwarding: object` (required) — Информация о пересланном сообщении. `null`, если сообщение не является пересланным. - `original_message_id: integer, int32` (required) — Идентификатор оригинального сообщения. Пример: `194275` - `original_chat_id: integer, int32` (required) — Идентификатор чата, в котором находится оригинальное сообщение. Пример: `334` @@ -22125,7 +23676,7 @@ curl "https://api.pachca.com/api/shared/v1/messages" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -22171,7 +23722,7 @@ curl "https://api.pachca.com/api/shared/v1/messages" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -22217,7 +23768,7 @@ curl "https://api.pachca.com/api/shared/v1/messages" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -22247,7 +23798,7 @@ curl "https://api.pachca.com/api/shared/v1/messages" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -22366,7 +23917,7 @@ response = await client.messages.create_message(request=request) Удалённые сообщения в список не попадают. -Сообщения треда отдаются по `chat_id` самого треда, а не по чату, где висит родительское сообщение. Идентификатор треда приходит в поле `thread` родительского сообщения. +Сообщения треда отдаются по `chat_id` самого треда, а не по чату, где висит родительское сообщение. Этот `chat_id` приходит в поле `thread.chat_id` родительского сообщения. ## Параметры @@ -22420,8 +23971,8 @@ curl "https://api.pachca.com/api/shared/v1/messages?chat_id=198&sort=id&order=de - `transcript: string` (required, nullable) — Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна. Пример: `"Привет, посмотри пожалуйста последний отчёт"` - `buttons: array of array` (required, nullable) — Массив строк, каждая из которых представлена массивом кнопок. `null`, если сообщение отправлено без кнопок. - `thread: object` (required, nullable) — Тред, созданный к этому сообщению. `null`, если тред не создан, а также у сообщений, которые сами находятся внутри треда. - - `id: integer, int64` (required) — Идентификатор треда. Пример: `265142` - - `chat_id: integer, int64` (required) — Идентификатор чата треда. Пример: `2637266155` + - `id: integer, int64` (required) — Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](/api/messages/create) с `entity_type: "thread"`. Пример: `265142` + - `chat_id: integer, int64` (required) — Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](/api/messages/list). Пример: `2637266155` - `forwarding: object` (required) — Информация о пересланном сообщении. `null`, если сообщение не является пересланным. - `original_message_id: integer, int32` (required) — Идентификатор оригинального сообщения. Пример: `194275` - `original_chat_id: integer, int32` (required) — Идентификатор чата, в котором находится оригинальное сообщение. Пример: `334` @@ -22521,7 +24072,7 @@ curl "https://api.pachca.com/api/shared/v1/messages?chat_id=198&sort=id&order=de - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -22567,7 +24118,7 @@ curl "https://api.pachca.com/api/shared/v1/messages?chat_id=198&sort=id&order=de - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -22613,7 +24164,7 @@ curl "https://api.pachca.com/api/shared/v1/messages?chat_id=198&sort=id&order=de - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -22643,7 +24194,7 @@ curl "https://api.pachca.com/api/shared/v1/messages?chat_id=198&sort=id&order=de - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -22768,8 +24319,8 @@ curl "https://api.pachca.com/api/shared/v1/messages/194275" \ - `transcript: string` (required, nullable) — Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна. Пример: `"Привет, посмотри пожалуйста последний отчёт"` - `buttons: array of array` (required, nullable) — Массив строк, каждая из которых представлена массивом кнопок. `null`, если сообщение отправлено без кнопок. - `thread: object` (required, nullable) — Тред, созданный к этому сообщению. `null`, если тред не создан, а также у сообщений, которые сами находятся внутри треда. - - `id: integer, int64` (required) — Идентификатор треда. Пример: `265142` - - `chat_id: integer, int64` (required) — Идентификатор чата треда. Пример: `2637266155` + - `id: integer, int64` (required) — Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](/api/messages/create) с `entity_type: "thread"`. Пример: `265142` + - `chat_id: integer, int64` (required) — Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](/api/messages/list). Пример: `2637266155` - `forwarding: object` (required) — Информация о пересланном сообщении. `null`, если сообщение не является пересланным. - `original_message_id: integer, int32` (required) — Идентификатор оригинального сообщения. Пример: `194275` - `original_chat_id: integer, int32` (required) — Идентификатор чата, в котором находится оригинальное сообщение. Пример: `334` @@ -22871,7 +24422,7 @@ curl "https://api.pachca.com/api/shared/v1/messages/194275" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -22917,7 +24468,7 @@ curl "https://api.pachca.com/api/shared/v1/messages/194275" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -22997,7 +24548,7 @@ response = await client.messages.get_message(id=194275) ### Схема - `message: object` (required) — Собранный объект параметров редактируемого сообщения - - `content: string` — Текст сообщения. Поддерживает упоминания: `@nickname` или `<@user_id>` (будет автоматически преобразовано в `@nickname`). Пример: `"Вот попробуйте написать правильно это с первого раза: Будущий, Полощи, Прийти, Грейпфрут, Мозаика, Бюллетень, Дуршлаг, Винегрет."` + - `content: string` — Текст сообщения. Поддерживает упоминания: `@nickname` или `<@user_id>` (будет автоматически преобразовано в `@nickname`). У мульти-гостя `<@user_id>` недоступного ему сотрудника остаётся в тексте как есть. Пример: `"Вот попробуйте написать правильно это с первого раза: Будущий, Полощи, Прийти, Грейпфрут, Мозаика, Бюллетень, Дуршлаг, Винегрет."` - `files: array of object` — Прикрепляемые файлы - `key: string` (required, max length: 1000) — Путь к файлу, полученный в методе [Загрузка файла](/api/files/direct-url). Пример: `"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png"` - `name: string` (required, max length: 255) — Название файла, которое вы хотите отображать пользователю. Расширение должно совпадать с расширением файла в `key`, иначе ответ будет 422 с кодом `wrong_params`. Пример: `"logo.png"` @@ -23006,7 +24557,7 @@ response = await client.messages.get_message(id=194275) - `size: integer, int64` — Размер файла в байтах, отображаемый пользователю. Пример: `12345` - `width: integer, int32` — Ширина изображения в px (используется в случае, если file_type указан как image). Пример: `800` - `height: integer, int32` — Высота изображения в px (используется в случае, если file_type указан как image). Пример: `600` - - `duration_ms: integer, int32` (min: 1) — Длительность в миллисекундах. Обязательно для голосовых сообщений (`file_type` — `voice`), для других типов не используется. Пример: `5400` + - `duration_ms: integer, int32` (min: 1) — Длительность в миллисекундах. Обязательно для голосовых сообщений (`file_type` — `voice`), для других типов не используется. Голосовое сообщение длиннее 30 минут (1 800 000 мс) отклоняется с `422`. Пример: `5400` - `waveform: string` (max length: 256) — Форма волны для визуализации голосового сообщения. Без неё запрос с голосовым файлом (`file_type` — `voice`) не пройдёт проверку, но при редактировании присланное значение не сохраняется. Для других типов не используется. Пример: `"4,8,12,20,16,10,6,3"` - `buttons: array of array` (max items: 32) — Массив строк, каждая из которых представлена массивом кнопок. Максимум 100 кнопок у сообщения, до 8 кнопок в строке. Для удаления кнопок пришлите пустой массив. Пример: `[[{"text":"Подробнее","url":"https://example.com/details"}]]` - `display_avatar_url: string` — Ссылка на специальную аватарку отправителя для этого сообщения. Использование этого поля возможно только с access_token бота. Пример: `"https://example.com/avatar.png"` @@ -23112,8 +24663,8 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/messages/194275" \ - `transcript: string` (required, nullable) — Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна. Пример: `"Привет, посмотри пожалуйста последний отчёт"` - `buttons: array of array` (required, nullable) — Массив строк, каждая из которых представлена массивом кнопок. `null`, если сообщение отправлено без кнопок. - `thread: object` (required, nullable) — Тред, созданный к этому сообщению. `null`, если тред не создан, а также у сообщений, которые сами находятся внутри треда. - - `id: integer, int64` (required) — Идентификатор треда. Пример: `265142` - - `chat_id: integer, int64` (required) — Идентификатор чата треда. Пример: `2637266155` + - `id: integer, int64` (required) — Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](/api/messages/create) с `entity_type: "thread"`. Пример: `265142` + - `chat_id: integer, int64` (required) — Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](/api/messages/list). Пример: `2637266155` - `forwarding: object` (required) — Информация о пересланном сообщении. `null`, если сообщение не является пересланным. - `original_message_id: integer, int32` (required) — Идентификатор оригинального сообщения. Пример: `194275` - `original_chat_id: integer, int32` (required) — Идентификатор чата, в котором находится оригинальное сообщение. Пример: `334` @@ -23199,7 +24750,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/messages/194275" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -23245,7 +24796,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/messages/194275" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -23291,7 +24842,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/messages/194275" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -23321,7 +24872,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/messages/194275" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -23473,7 +25024,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/messages/194275" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -23519,7 +25070,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/messages/194275" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -23660,7 +25211,7 @@ curl "https://api.pachca.com/api/shared/v1/messages/194275/link_previews" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -23722,7 +25273,7 @@ curl "https://api.pachca.com/api/shared/v1/messages/194275/link_previews" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -23752,7 +25303,7 @@ curl "https://api.pachca.com/api/shared/v1/messages/194275/link_previews" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -23896,7 +25447,7 @@ curl -X POST "https://api.pachca.com/api/shared/v1/messages/194275/pin" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -23926,7 +25477,7 @@ curl -X POST "https://api.pachca.com/api/shared/v1/messages/194275/pin" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -24045,7 +25596,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/messages/194275/pin" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -24170,7 +25721,7 @@ curl "https://api.pachca.com/api/shared/v1/messages/194275/read_member_ids?limit - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -24216,7 +25767,7 @@ curl "https://api.pachca.com/api/shared/v1/messages/194275/read_member_ids?limit - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -24262,7 +25813,7 @@ curl "https://api.pachca.com/api/shared/v1/messages/194275/read_member_ids?limit - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -24292,7 +25843,7 @@ curl "https://api.pachca.com/api/shared/v1/messages/194275/read_member_ids?limit - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -24436,7 +25987,7 @@ curl "https://api.pachca.com/api/shared/v1/messages/7231942/reactions" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -24498,7 +26049,7 @@ curl "https://api.pachca.com/api/shared/v1/messages/7231942/reactions" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -24528,7 +26079,7 @@ curl "https://api.pachca.com/api/shared/v1/messages/7231942/reactions" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -24625,7 +26176,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/messages/7231942/reactions? - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -24687,7 +26238,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/messages/7231942/reactions? - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -24717,7 +26268,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/messages/7231942/reactions? - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -24849,7 +26400,7 @@ curl "https://api.pachca.com/api/shared/v1/messages/194275/reactions?limit=1" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -24911,7 +26462,7 @@ curl "https://api.pachca.com/api/shared/v1/messages/194275/reactions?limit=1" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -24941,7 +26492,7 @@ curl "https://api.pachca.com/api/shared/v1/messages/194275/reactions?limit=1" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -25009,6 +26560,8 @@ response = await client.reactions.list_reactions(id=194275, params=params) Метод ищет по названиям, а не по содержанию. Если нужно найти, где что-то обсуждали или о чём договорились, это [Поиск сообщений](/api/search/list-messages). +Слишком тяжёлый запрос может не уложиться по времени: тогда метод отвечает `504` с кодом `timeout`, и запрос стоит сузить. + ## Параметры ### Query параметры @@ -25102,7 +26655,7 @@ curl "https://api.pachca.com/api/shared/v1/search/chats?query=Разработк - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -25148,7 +26701,7 @@ curl "https://api.pachca.com/api/shared/v1/search/chats?query=Разработк - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -25185,6 +26738,36 @@ curl "https://api.pachca.com/api/shared/v1/search/chats?query=Разработк } ``` +### 504: Server error + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + ## SDK примеры @@ -25250,6 +26833,8 @@ response = await client.search.search_chats(params=params) По умолчанию сообщения приходят от новых к старым. `sort=relevance` переключает выдачу на соответствие запросу, где свежие сообщения всё равно ценятся выше. +Слишком тяжёлый запрос может не уложиться по времени: тогда метод отвечает `504` с кодом `timeout`, и запрос стоит сузить. + ## Параметры ### Query параметры @@ -25308,8 +26893,8 @@ curl "https://api.pachca.com/api/shared/v1/search/messages?query=футболк - `transcript: string` (required, nullable) — Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна. Пример: `"Привет, посмотри пожалуйста последний отчёт"` - `buttons: array of array` (required, nullable) — Массив строк, каждая из которых представлена массивом кнопок. `null`, если сообщение отправлено без кнопок. - `thread: object` (required, nullable) — Тред, созданный к этому сообщению. `null`, если тред не создан, а также у сообщений, которые сами находятся внутри треда. - - `id: integer, int64` (required) — Идентификатор треда. Пример: `265142` - - `chat_id: integer, int64` (required) — Идентификатор чата треда. Пример: `2637266155` + - `id: integer, int64` (required) — Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](/api/messages/create) с `entity_type: "thread"`. Пример: `265142` + - `chat_id: integer, int64` (required) — Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](/api/messages/list). Пример: `2637266155` - `forwarding: object` (required) — Информация о пересланном сообщении. `null`, если сообщение не является пересланным. - `original_message_id: integer, int32` (required) — Идентификатор оригинального сообщения. Пример: `194275` - `original_chat_id: integer, int32` (required) — Идентификатор чата, в котором находится оригинальное сообщение. Пример: `334` @@ -25405,7 +26990,7 @@ curl "https://api.pachca.com/api/shared/v1/search/messages?query=футболк - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -25451,7 +27036,7 @@ curl "https://api.pachca.com/api/shared/v1/search/messages?query=футболк - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -25488,6 +27073,36 @@ curl "https://api.pachca.com/api/shared/v1/search/messages?query=футболк } ``` +### 504: Server error + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + ## SDK примеры @@ -25555,6 +27170,8 @@ response = await client.search.search_messages(params=params) Удалённые сотрудники не находятся никогда, приостановленные — только когда задан текстовый запрос, и стоят в выдаче ниже остальных. Из ботов находятся лишь публичные. +Слишком тяжёлый запрос может не уложиться по времени: тогда метод отвечает `504` с кодом `timeout`, и запрос стоит сузить. + ## Параметры ### Query параметры @@ -25590,8 +27207,8 @@ curl "https://api.pachca.com/api/shared/v1/search/users?query=Олег&limit=10& - `first_name: string` (required, nullable, max length: 255) — Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`). Пример: `"Олег"` - `last_name: string` (required, nullable, max length: 255) — Фамилия. Если не заполнена, возвращается `null` или пустая строка. Пример: `"Петров"` - `nickname: string` (required, max length: 255) — Имя пользователя. Пример: `"olegpetrov"` - - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `"olegp@example.com"` - - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `"+79001234567"` + - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `"olegp@example.com"` + - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `"+79001234567"` - `department: string` (required, nullable, max length: 255) — Департамент. Если не указан, возвращается `null` или пустая строка. Пример: `"Продукт"` - `title: string` (required, nullable) — Должность. Если не указана, возвращается `null` или пустая строка. Пример: `"CIO"` - `role: string` (required) — Уровень доступа @@ -25600,7 +27217,7 @@ curl "https://api.pachca.com/api/shared/v1/search/users?query=Олег&limit=10& - `invite_status: string` (required) — Статус приглашения Значения: `confirmed` — Принято, `sent` — Отправлено - `inviter_id: integer, int32` (required, nullable) — Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён. Пример: `185` - - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Пример: `["Product","Design"]` + - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Мульти-гостю в чужой карточке приходит пустым. Пример: `["Product","Design"]` - `custom_properties: array of object` (required) — Дополнительные поля сотрудника - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678` - `name: string` (required, max length: 32) — Название поля. Пример: `"Город"` @@ -25690,7 +27307,7 @@ curl "https://api.pachca.com/api/shared/v1/search/users?query=Олег&limit=10& - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -25736,7 +27353,7 @@ curl "https://api.pachca.com/api/shared/v1/search/users?query=Олег&limit=10& - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -25773,211 +27390,7 @@ curl "https://api.pachca.com/api/shared/v1/search/users?query=Олег&limit=10& } ``` - -## SDK примеры - -### TypeScript - -```typescript -import { PachcaClient, SearchSortOrder, SortOrder, UserRole } from "@pachca/sdk" - -const client = new PachcaClient("YOUR_TOKEN") - -const response = client.search.searchUsers({ - query: "Олег", - limit: 10, - cursor: "eyJpZCI6MTAsImRpciI6ImFzYyJ9", - sort: SearchSortOrder.ByScore, - order: SortOrder.Desc, - createdFrom: "2025-01-01T00:00:00.000Z", - createdTo: "2025-02-01T00:00:00.000Z", - companyRoles: [UserRole.Admin] -}) -// → SearchUsersResponse({ data: User[], meta: SearchPaginationMeta }) -``` - -### Python - -```python -from pachca.client import PachcaClient -from pachca.models import SearchSortOrder, SearchUsersParams, SortOrder, UserRole - -client = PachcaClient("YOUR_TOKEN") - -params = SearchUsersParams( - query="Олег", - limit=10, - cursor="eyJpZCI6MTAsImRpciI6ImFzYyJ9", - sort=SearchSortOrder.BY_SCORE, - order=SortOrder.DESC, - created_from=datetime.fromisoformat("2025-01-01T00:00:00.000Z"), - created_to=datetime.fromisoformat("2025-02-01T00:00:00.000Z"), - company_roles=[UserRole.ADMIN] -) -response = await client.search.search_users(params=params) -# → SearchUsersResponse(data: list[User], meta: SearchPaginationMeta) -``` - ---- - -## API: Tasks - ---- [Document source](https://dev.pachca.com/api/tasks/create.md) --- - -# Новое напоминание - -**Метод**: `POST` - -**Путь**: `/tasks` - -> **Скоуп:** `tasks:create` - -Создаёт напоминание и назначает на него ответственных. - -При создании напоминания обязательно указать его тип: звонок, встреча, простое напоминание, событие или письмо. Описание при этом не требуется — напоминание создастся с текстом по типу. Если описание передано, именно оно и станет текстом напоминания. - -У напоминания должны быть ответственные. Если их не указать, ответственным становится владелец токена. - -Ответственным для напоминания без привязки к каким-либо сущностям может стать любой сотрудник компании. Актуальный состав сотрудников компании вы можете получить в методе [Список сотрудников](/api/users/list). Ответственные, которых вызывающий не видит, молча отбрасываются: ответ приходит успешным, а в `performer_ids` их нет, поэтому сверяйте состав в ответе. - -Напоминание можно привязать к беседе полем `chat_id` — тогда кроме автора и ответственных его видят участники этой беседы. Привязывающий должен сам в ней состоять. В канале, в треде и в архивном чате напоминания не создаются. - -Передать напоминание другому сотруднику — значит сменить ответственного методом [Редактирование напоминания](/api/tasks/update). - -Если к пространству или к профилю подключён календарь, напоминание заодно появляется в нём событием. - -## Тело запроса - -**Обязательно** - -Формат: `application/json` - -### Схема - -- `task: object` (required) — Собранный объект параметров создаваемого напоминания - - `kind: string` (required) — Тип - Значения: `call` — Позвонить контакту, `meeting` — Встреча, `reminder` — Простое напоминание, `event` — Событие, `email` — Написать письмо - - `content: string` — Описание (по умолчанию — название типа). Пример: `"Забрать со склада 21 заказ"` - - `due_at: date-time` — Срок выполнения напоминания (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Секунды отбрасываются: срок встаёт на начало минуты. Исключение — ровно 23:59:59: такое напоминание создаётся на весь день, без указания времени. Пример: `"2020-06-05T12:00:00.000+03:00"` - - `priority: integer, int32` (default: 1, min: 1, max: 3) — Приоритет: 1, 2 (важно) или 3 (очень важно). Пример: `2` - - `performer_ids: array of integer` — Массив идентификаторов пользователей, привязываемых к напоминанию как «ответственные» (по умолчанию ответственным назначается вы). Пример: `[12,13]` - - `chat_id: integer, int32` — Идентификатор чата, к которому привязывается напоминание. Пример: `456` - - `all_day: boolean` — Напоминание на весь день (без указания времени). Пример: `false` - - `custom_properties: array of object` — Задаваемые дополнительные поля - - `id: integer, int32` (required) — Идентификатор поля. Пример: `78` - - `value: string` (required) — Устанавливаемое значение. Пример: `"Синий склад"` - -### Пример - -```json -{ - "task": { - "kind": "reminder", - "content": "Забрать со склада 21 заказ", - "due_at": "2020-06-05T12:00:00.000+03:00", - "priority": 2, - "performer_ids": [ - 12, - 13 - ], - "chat_id": 456, - "all_day": false, - "custom_properties": [ - { - "id": 78, - "value": "Синий склад" - } - ] - } -} -``` - -## Пример запроса - -```bash -curl "https://api.pachca.com/api/shared/v1/tasks" \ - -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ - -H "Content-Type: application/json" \ - -d '{ - "task": { - "kind": "reminder", - "content": "Забрать со склада 21 заказ", - "due_at": "2020-06-05T12:00:00.000+03:00", - "priority": 2, - "performer_ids": [ - 12, - 13 - ], - "chat_id": 456, - "all_day": false, - "custom_properties": [ - { - "id": 78, - "value": "Синий склад" - } - ] - } -}' -``` - -## Ответы - -### 201: The request has succeeded and a new resource has been created as a result. - -**Схема ответа:** - -- `data: object` (required) — Напоминание - - `id: integer, int32` (required) — Идентификатор напоминания. Пример: `22283` - - `kind: string` (required) — Тип - Значения: `call` — Позвонить контакту, `meeting` — Встреча, `reminder` — Простое напоминание, `event` — Событие, `email` — Написать письмо - - `content: string` (required) — Описание. Пример: `"Забрать со склада 21 заказ"` - - `due_at: date-time` (required, nullable) — Срок выполнения напоминания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан. Пример: `"2020-06-05T09:00:00.000Z"` - - `priority: integer, int32` (required) — Приоритет. Пример: `2` - - `user_id: integer, int32` (required) — Идентификатор пользователя-создателя напоминания. Пример: `12` - - `chat_id: integer, int32` (required, nullable) — Идентификатор чата, к которому привязано напоминание. `null`, если напоминание не привязано к чату. Пример: `334` - - `status: string` (required) — Статус напоминания - Значения: `done` — Выполнено, `undone` — Активно - - `created_at: date-time` (required) — Дата и время создания напоминания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2020-06-04T10:37:57.000Z"` - - `performer_ids: array of integer` (required) — Массив идентификаторов пользователей, привязанных к напоминанию как «ответственные». Пример: `[12]` - - `all_day: boolean` (required) — Напоминание на весь день (без указания времени). Пример: `false` - - `custom_properties: array of object` (required) — Дополнительные поля напоминания - - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678` - - `name: string` (required, max length: 32) — Название поля. Пример: `"Город"` - - `data_type: string` (required) — Тип поля - Значения: `string` — Строковое значение, `number` — Числовое значение, `date` — Дата, `link` — Ссылка - - `value: string` (required, nullable, max length: 768) — Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601. Пример: `"Санкт-Петербург"` - -**Пример ответа:** - -```json -{ - "data": { - "id": 22283, - "kind": "reminder", - "content": "Забрать со склада 21 заказ", - "due_at": "2020-06-05T09:00:00.000Z", - "priority": 2, - "user_id": 12, - "chat_id": 334, - "status": "undone", - "created_at": "2020-06-04T10:37:57.000Z", - "performer_ids": [ - 12 - ], - "all_day": false, - "custom_properties": [ - { - "id": 1678, - "name": "Город", - "data_type": "string", - "value": "Санкт-Петербург" - } - ] - } -} -``` - -### 400: The server could not understand the request due to invalid syntax. +### 504: Server error **Схема ответа при ошибке:** @@ -25986,7 +27399,241 @@ curl "https://api.pachca.com/api/shared/v1/tasks" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + + +## SDK примеры + +### TypeScript + +```typescript +import { PachcaClient, SearchSortOrder, SortOrder, UserRole } from "@pachca/sdk" + +const client = new PachcaClient("YOUR_TOKEN") + +const response = client.search.searchUsers({ + query: "Олег", + limit: 10, + cursor: "eyJpZCI6MTAsImRpciI6ImFzYyJ9", + sort: SearchSortOrder.ByScore, + order: SortOrder.Desc, + createdFrom: "2025-01-01T00:00:00.000Z", + createdTo: "2025-02-01T00:00:00.000Z", + companyRoles: [UserRole.Admin] +}) +// → SearchUsersResponse({ data: User[], meta: SearchPaginationMeta }) +``` + +### Python + +```python +from pachca.client import PachcaClient +from pachca.models import SearchSortOrder, SearchUsersParams, SortOrder, UserRole + +client = PachcaClient("YOUR_TOKEN") + +params = SearchUsersParams( + query="Олег", + limit=10, + cursor="eyJpZCI6MTAsImRpciI6ImFzYyJ9", + sort=SearchSortOrder.BY_SCORE, + order=SortOrder.DESC, + created_from=datetime.fromisoformat("2025-01-01T00:00:00.000Z"), + created_to=datetime.fromisoformat("2025-02-01T00:00:00.000Z"), + company_roles=[UserRole.ADMIN] +) +response = await client.search.search_users(params=params) +# → SearchUsersResponse(data: list[User], meta: SearchPaginationMeta) +``` + +--- + +## API: Tasks + +--- [Document source](https://dev.pachca.com/api/tasks/create.md) --- + +# Новое напоминание + +**Метод**: `POST` + +**Путь**: `/tasks` + +> **Скоуп:** `tasks:create` + +Создаёт напоминание и назначает на него ответственных. + +При создании напоминания обязательно указать его тип: звонок, встреча, простое напоминание, событие или письмо. Описание при этом не требуется — напоминание создастся с текстом по типу. Если описание передано, именно оно и станет текстом напоминания. + +У напоминания должны быть ответственные. Если их не указать, ответственным становится владелец токена. + +Ответственным для напоминания без привязки к каким-либо сущностям может стать любой сотрудник компании. Актуальный состав сотрудников компании вы можете получить в методе [Список сотрудников](/api/users/list). Ответственные, которых вызывающий не видит, молча отбрасываются: ответ приходит успешным, а в `performer_ids` их нет, поэтому сверяйте состав в ответе. + +Напоминание можно привязать к беседе полем `chat_id` — тогда кроме автора и ответственных его видят участники этой беседы. Привязывающий должен сам в ней состоять. В канале, в треде и в архивном чате напоминания не создаются. + +Передать напоминание другому сотруднику — значит сменить ответственного методом [Редактирование напоминания](/api/tasks/update). + +Если к пространству или к профилю подключён календарь, напоминание заодно появляется в нём событием. + +## Тело запроса + +**Обязательно** + +Формат: `application/json` + +### Схема + +- `task: object` (required) — Собранный объект параметров создаваемого напоминания + - `kind: string` (required) — Тип + Значения: `call` — Позвонить контакту, `meeting` — Встреча, `reminder` — Простое напоминание, `event` — Событие, `email` — Написать письмо + - `content: string` — Описание (по умолчанию — название типа). Пример: `"Забрать со склада 21 заказ"` + - `due_at: date-time` — Срок выполнения напоминания (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Секунды отбрасываются: срок встаёт на начало минуты. Исключение — ровно 23:59:59: такое напоминание создаётся на весь день, без указания времени. Пример: `"2020-06-05T12:00:00.000+03:00"` + - `priority: integer, int32` (default: 1, min: 1, max: 3) — Приоритет: 1, 2 (важно) или 3 (очень важно). Пример: `2` + - `performer_ids: array of integer` — Массив идентификаторов пользователей, привязываемых к напоминанию как «ответственные» (по умолчанию ответственным назначается вы). Пример: `[12,13]` + - `chat_id: integer, int32` — Идентификатор чата, к которому привязывается напоминание. Пример: `456` + - `all_day: boolean` — Напоминание на весь день (без указания времени). Пример: `false` + - `custom_properties: array of object` — Задаваемые дополнительные поля + - `id: integer, int32` (required) — Идентификатор поля. Пример: `78` + - `value: string` (required) — Устанавливаемое значение. Пример: `"Синий склад"` + +### Пример + +```json +{ + "task": { + "kind": "reminder", + "content": "Забрать со склада 21 заказ", + "due_at": "2020-06-05T12:00:00.000+03:00", + "priority": 2, + "performer_ids": [ + 12, + 13 + ], + "chat_id": 456, + "all_day": false, + "custom_properties": [ + { + "id": 78, + "value": "Синий склад" + } + ] + } +} +``` + +## Пример запроса + +```bash +curl "https://api.pachca.com/api/shared/v1/tasks" \ + -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ + -H "Content-Type: application/json" \ + -d '{ + "task": { + "kind": "reminder", + "content": "Забрать со склада 21 заказ", + "due_at": "2020-06-05T12:00:00.000+03:00", + "priority": 2, + "performer_ids": [ + 12, + 13 + ], + "chat_id": 456, + "all_day": false, + "custom_properties": [ + { + "id": 78, + "value": "Синий склад" + } + ] + } +}' +``` + +## Ответы + +### 201: The request has succeeded and a new resource has been created as a result. + +**Схема ответа:** + +- `data: object` (required) — Напоминание + - `id: integer, int32` (required) — Идентификатор напоминания. Пример: `22283` + - `kind: string` (required) — Тип + Значения: `call` — Позвонить контакту, `meeting` — Встреча, `reminder` — Простое напоминание, `event` — Событие, `email` — Написать письмо + - `content: string` (required) — Описание. Пример: `"Забрать со склада 21 заказ"` + - `due_at: date-time` (required, nullable) — Срок выполнения напоминания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан. Пример: `"2020-06-05T09:00:00.000Z"` + - `priority: integer, int32` (required) — Приоритет. Пример: `2` + - `user_id: integer, int32` (required) — Идентификатор пользователя-создателя напоминания. Пример: `12` + - `chat_id: integer, int32` (required, nullable) — Идентификатор чата, к которому привязано напоминание. `null`, если напоминание не привязано к чату. Пример: `334` + - `status: string` (required) — Статус напоминания + Значения: `done` — Выполнено, `undone` — Активно + - `created_at: date-time` (required) — Дата и время создания напоминания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2020-06-04T10:37:57.000Z"` + - `performer_ids: array of integer` (required) — Массив идентификаторов пользователей, привязанных к напоминанию как «ответственные». Пример: `[12]` + - `all_day: boolean` (required) — Напоминание на весь день (без указания времени). Пример: `false` + - `custom_properties: array of object` (required) — Дополнительные поля напоминания + - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678` + - `name: string` (required, max length: 32) — Название поля. Пример: `"Город"` + - `data_type: string` (required) — Тип поля + Значения: `string` — Строковое значение, `number` — Числовое значение, `date` — Дата, `link` — Ссылка + - `value: string` (required, nullable, max length: 768) — Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601. Пример: `"Санкт-Петербург"` + +**Пример ответа:** + +```json +{ + "data": { + "id": 22283, + "kind": "reminder", + "content": "Забрать со склада 21 заказ", + "due_at": "2020-06-05T09:00:00.000Z", + "priority": 2, + "user_id": 12, + "chat_id": 334, + "status": "undone", + "created_at": "2020-06-04T10:37:57.000Z", + "performer_ids": [ + 12 + ], + "all_day": false, + "custom_properties": [ + { + "id": 1678, + "name": "Город", + "data_type": "string", + "value": "Санкт-Петербург" + } + ] + } +} +``` + +### 400: The server could not understand the request due to invalid syntax. + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -26032,7 +27679,7 @@ curl "https://api.pachca.com/api/shared/v1/tasks" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -26078,7 +27725,7 @@ curl "https://api.pachca.com/api/shared/v1/tasks" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -26108,7 +27755,7 @@ curl "https://api.pachca.com/api/shared/v1/tasks" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -26201,7 +27848,7 @@ response = await client.tasks.create_task(request=request) - `status: string` — Фильтр по состоянию. Если параметр не указан, возвращаются напоминания в любом состоянии. Значения: `done`, `undone` -- `chat_ids: array` — Фильтр по чатам, к которым привязаны напоминания. Доступными считаются чаты, где вы состоите участником, открытые беседы и каналы пространства, а также треды, доступные вам по родительскому чату. Остальные переданные идентификаторы игнорируются без ошибки. Не более 100 идентификаторов. +- `chat_ids: array` — Фильтр по чатам, к которым привязаны напоминания. Доступными считаются чаты, где вы состоите участником, открытые беседы и каналы пространства, а также треды, доступные вам по родительскому чату. Мульти-гостю открытые беседы и каналы доступны, только если он в них участник. Остальные переданные идентификаторы игнорируются без ошибки. Не более 100 идентификаторов. - `performer_ids: array` — Фильтр по ответственным за напоминание. Не более 100 идентификаторов. - `author_id: integer, int32` — Фильтр по автору напоминания - `limit: integer, int32` (default: 50) — Количество возвращаемых сущностей за один запрос @@ -26298,7 +27945,7 @@ curl "https://api.pachca.com/api/shared/v1/tasks?status=undone&chat_ids[]=198&ch - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -26344,7 +27991,7 @@ curl "https://api.pachca.com/api/shared/v1/tasks?status=undone&chat_ids[]=198&ch - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -26534,7 +28181,7 @@ curl "https://api.pachca.com/api/shared/v1/tasks/22283" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -26580,7 +28227,7 @@ curl "https://api.pachca.com/api/shared/v1/tasks/22283" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -26793,7 +28440,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/tasks/22283" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -26839,7 +28486,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/tasks/22283" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -26885,7 +28532,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/tasks/22283" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -26915,7 +28562,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/tasks/22283" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -27049,7 +28696,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/tasks/22283" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -27095,7 +28742,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/tasks/22283" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -27186,7 +28833,7 @@ await client.tasks.delete_task(id=22283) - `size: integer, int64` — Размер файла в байтах, отображаемый пользователю. Пример: `12345` - `width: integer, int32` — Ширина изображения в пикселях. Пример: `800` - `height: integer, int32` — Высота изображения в пикселях. Пример: `600` - - `duration_ms: integer, int32` — Длительность в миллисекундах. Обязательна для голосового сообщения (`file_type` — `voice`). Пример: `5400` + - `duration_ms: integer, int32` — Длительность в миллисекундах. Обязательна для голосового сообщения (`file_type` — `voice`). Голосовое сообщение длиннее 30 минут (1 800 000 мс) отклоняется с `422`. Пример: `5400` - `waveform: string` (max length: 256) — Форма волны для визуализации. Обязательна для голосового сообщения (`file_type` — `voice`). Пример: `"4,8,12,20,16,10,6,3"` - `schedule: object` — Расписание отправки. С ним создаётся отложенное сообщение, без него — обычный черновик. - `start_date: date-time` (required) — Первая отправка (ISO-8601). Из неё берутся время суток, число месяца и день недели, по которым дальше строится повтор. Смещение вида `+03:00` учитывается, время без смещения считается UTC. Пример: `"2026-09-17T12:00:00.000Z"` @@ -27372,7 +29019,7 @@ curl "https://api.pachca.com/api/shared/v1/drafts" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -27418,7 +29065,7 @@ curl "https://api.pachca.com/api/shared/v1/drafts" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -27445,13 +29092,13 @@ curl "https://api.pachca.com/api/shared/v1/drafts" \ **anyOf** - один из вариантов: -- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422) +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) - `errors: array of object` (required) — Массив ошибок - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -27484,7 +29131,7 @@ curl "https://api.pachca.com/api/shared/v1/drafts" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -27514,7 +29161,7 @@ curl "https://api.pachca.com/api/shared/v1/drafts" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -27544,7 +29191,7 @@ curl "https://api.pachca.com/api/shared/v1/drafts" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -27797,7 +29444,7 @@ curl "https://api.pachca.com/api/shared/v1/drafts?type=all&entity_type=discussio - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -27843,7 +29490,7 @@ curl "https://api.pachca.com/api/shared/v1/drafts?type=all&entity_type=discussio - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -27870,13 +29517,13 @@ curl "https://api.pachca.com/api/shared/v1/drafts?type=all&entity_type=discussio **anyOf** - один из вариантов: -- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422) +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) - `errors: array of object` (required) — Массив ошибок - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -27909,7 +29556,7 @@ curl "https://api.pachca.com/api/shared/v1/drafts?type=all&entity_type=discussio - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -28109,7 +29756,7 @@ curl "https://api.pachca.com/api/shared/v1/drafts/4821" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -28136,13 +29783,13 @@ curl "https://api.pachca.com/api/shared/v1/drafts/4821" \ **anyOf** - один из вариантов: -- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422) +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) - `errors: array of object` (required) — Массив ошибок - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -28175,7 +29822,7 @@ curl "https://api.pachca.com/api/shared/v1/drafts/4821" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -28268,7 +29915,7 @@ response = await client.drafts.get_draft(id=4821) - `size: integer, int64` — Размер файла в байтах, отображаемый пользователю. Пример: `12345` - `width: integer, int32` — Ширина изображения в пикселях. Пример: `800` - `height: integer, int32` — Высота изображения в пикселях. Пример: `600` - - `duration_ms: integer, int32` — Длительность в миллисекундах. Обязательна для голосового сообщения (`file_type` — `voice`). Пример: `5400` + - `duration_ms: integer, int32` — Длительность в миллисекундах. Обязательна для голосового сообщения (`file_type` — `voice`). Голосовое сообщение длиннее 30 минут (1 800 000 мс) отклоняется с `422`. Пример: `5400` - `waveform: string` (max length: 256) — Форма волны для визуализации. Обязательна для голосового сообщения (`file_type` — `voice`). Пример: `"4,8,12,20,16,10,6,3"` - `schedule: object` — Расписание отправки. У обычного черновика оно превращает его в отложенное сообщение. У отложенного расписание можно изменить, но не снять: `null` в ответ даст `422` с кодом `draft_type_change_forbidden`. - `start_date: date-time` (required) — Первая отправка (ISO-8601). Из неё берутся время суток, число месяца и день недели, по которым дальше строится повтор. Смещение вида `+03:00` учитывается, время без смещения считается UTC. Пример: `"2026-09-17T12:00:00.000Z"` @@ -28450,7 +30097,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/drafts/4821" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -28496,7 +30143,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/drafts/4821" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -28523,13 +30170,13 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/drafts/4821" \ **anyOf** - один из вариантов: -- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422) +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) - `errors: array of object` (required) — Массив ошибок - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -28562,7 +30209,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/drafts/4821" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -28592,7 +30239,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/drafts/4821" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -28750,7 +30397,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/drafts/4821" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -28777,13 +30424,13 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/drafts/4821" \ **anyOf** - один из вариантов: -- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422) +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) - `errors: array of object` (required) — Массив ошибок - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -28816,7 +30463,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/drafts/4821" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -28944,7 +30591,7 @@ await client.drafts.delete_draft(id=4821) Значения: `radio` — Для радиокнопок всегда radio - `name: string` (required, max length: 255) — Название, которое будет передано в ваше приложение как ключ указанного пользователем выбора - `label: string` (required, max length: 150) — Подпись к группе радиокнопок - - `options: array of object` (required, max items: 10) — Массив радиокнопок + - `options: array of object` (required, max items: 20) — Массив радиокнопок - `text: string` (required, max length: 75) — Отображаемый текст - `value: string` (required, max length: 255) — Уникальное строковое значение, которое будет передано в ваше приложение при выборе этого пункта - `description: string` (max length: 75) — Пояснение, которое будет указано серым цветом в этом пункте под отображаемым текстом @@ -28956,7 +30603,7 @@ await client.drafts.delete_draft(id=4821) Значения: `checkbox` — Для чекбоксов всегда checkbox - `name: string` (required, max length: 255) — Название, которое будет передано в ваше приложение как ключ указанного пользователем выбора - `label: string` (required, max length: 150) — Подпись к группе чекбоксов - - `options: array of object` (required, max items: 10) — Массив чекбоксов + - `options: array of object` (required, max items: 20) — Массив чекбоксов - `text: string` (required, max length: 75) — Отображаемый текст - `value: string` (required, max length: 255) — Уникальное строковое значение, которое будет передано в ваше приложение при выборе этого пункта - `description: string` (max length: 75) — Пояснение, которое будет указано серым цветом в этом пункте под отображаемым текстом @@ -29237,7 +30884,7 @@ curl "https://api.pachca.com/api/shared/v1/views/open" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -29283,7 +30930,7 @@ curl "https://api.pachca.com/api/shared/v1/views/open" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -29329,7 +30976,7 @@ curl "https://api.pachca.com/api/shared/v1/views/open" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -29359,7 +31006,7 @@ curl "https://api.pachca.com/api/shared/v1/views/open" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -29534,7 +31181,7 @@ curl "https://api.pachca.com/api/shared/v1/views/01KAJZ2XDSS2S3DSW9EXJZ0TBV/subm - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -29580,7 +31227,7 @@ curl "https://api.pachca.com/api/shared/v1/views/01KAJZ2XDSS2S3DSW9EXJZ0TBV/subm - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -29610,7 +31257,7 @@ curl "https://api.pachca.com/api/shared/v1/views/01KAJZ2XDSS2S3DSW9EXJZ0TBV/subm - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -29640,7 +31287,7 @@ curl "https://api.pachca.com/api/shared/v1/views/01KAJZ2XDSS2S3DSW9EXJZ0TBV/subm - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -29670,7 +31317,7 @@ curl "https://api.pachca.com/api/shared/v1/views/01KAJZ2XDSS2S3DSW9EXJZ0TBV/subm - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -29735,7 +31382,7 @@ response = await client.views.submit_view_response(view_id="01KAJZ2XDSS2S3DSW9EX Метод позволяет боту сгенерировать себе новый `access_token` своим же токеном — без участия администратора и без знания собственного `id`. -Ротируется тот самый токен, которым сделан запрос, и он инвалидируется сразу. +Перевыпускается основной токен бота — тот, что без имени, а если такого нет, самый старый, и он инвалидируется сразу. Если бот ходит отдельным токеном, этот токен остаётся прежним. Новый токен возвращается в ответе один раз — обязательно сохраните его, иначе бот потеряет доступ к API. Скоупы переносятся с прежнего токена. @@ -29752,8 +31399,14 @@ curl -X POST "https://api.pachca.com/api/shared/v1/bot/recreate_token" \ **Схема ответа:** -- `data: object` (required) — Параметры созданного бота +- `data: object` (required) — Параметры бота с новым токеном - `id: integer, int32` (required) — Идентификатор бота (совпадает с `user_id` бота). Пример: `1738816` + - `oauth_client: object` (required) — Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией. У бота без токенов может прийти `null`. + - `client_id: string` (required) — Идентификатор клиента для ссылки авторизации. Пример: `"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY"` + - `client_secret_preview: string` (required) — Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета. Пример: `"cH5kR9mN...x7Qp"` + - `confidential: boolean` (required) — Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE. Пример: `true` + - `redirect_uris: array of string` (required) — Адреса возврата после согласия. Пример: `["https://example.com/oauth/callback"]` + - `scopes: array of string` (required) — Права, которые бот запрашивает у сотрудника на экране согласия. Пример: `["messages:read","messages:create"]` - `webhook: object` (required) — Объект параметров вебхука - `name: string` (required, max length: 255) — Имя бота. Пример: `"Бот задач"` - `nickname: string` (required, max length: 255) — Никнейм бота. Пример: `"tasks_bot"` @@ -29773,8 +31426,8 @@ curl -X POST "https://api.pachca.com/api/shared/v1/bot/recreate_token" \ - `single_chat: boolean` (required) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false` - `can_edit: array of string` (required) — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `["admin"]` - `who_can_add: string` (required) — Кто может добавлять бота в чаты - Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Любой пользователь, в том числе гости - - `access_token: string` (required) — Токен доступа бота. Возвращается при создании бота и при ротации токена. Пример: `"bm90X2FfcmVhbF90b2tlbg"` + Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей + - `access_token: string` (required) — Новый токен бота. Возвращается один раз. Пример: `"bm90X2FfcmVhbF90b2tlbg"` **Пример ответа:** @@ -29782,6 +31435,18 @@ curl -X POST "https://api.pachca.com/api/shared/v1/bot/recreate_token" \ { "data": { "id": 1738816, + "oauth_client": { + "client_id": "aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY", + "client_secret_preview": "dGhpc19p...ZWNy", + "confidential": true, + "redirect_uris": [ + "https://example.com/oauth/callback" + ], + "scopes": [ + "messages:read", + "messages:create" + ] + }, "webhook": { "name": "Бот задач", "nickname": "tasks_bot", @@ -29838,7 +31503,7 @@ curl -X POST "https://api.pachca.com/api/shared/v1/bot/recreate_token" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -29884,7 +31549,7 @@ curl -X POST "https://api.pachca.com/api/shared/v1/bot/recreate_token" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -29916,7 +31581,7 @@ import { PachcaClient } from "@pachca/sdk" const client = new PachcaClient("YOUR_TOKEN") const response = client.bots.selfRecreateBotToken() -// → BotCreateResponse({ id: number, webhook: BotWebhook({ name: string, nickname: string, outgoingUrl: string | null, events: BotEventName[], triggerOn: BotTriggerOn, commands: string[], scopes: string[], template: string | null, templateEngine: BotTemplateEngine, challengeKey: string | null, linkPreviewEnabled: boolean, ignoreSelfMessages: boolean, eventsHistoryEnabled: boolean, singleChat: boolean, canEdit: BotCanEdit[], whoCanAdd: BotWhoCanAdd }), accessToken: string }) +// → BotSelfTokenResponse({ id: number, oauthClient: BotOAuthClient({ clientId: string, clientSecretPreview: string, confidential: boolean, redirectUris: string[], scopes: string[] }) | null, webhook: BotSelfWebhook({ name: string, nickname: string, outgoingUrl: string | null, events: BotEventName[], triggerOn: BotTriggerOn, commands: string[], scopes: string[], template: string | null, templateEngine: BotTemplateEngine, challengeKey: string | null, linkPreviewEnabled: boolean, ignoreSelfMessages: boolean, eventsHistoryEnabled: boolean, singleChat: boolean, canEdit: BotCanEdit[], whoCanAdd: BotWhoCanAdd }), accessToken: string }) ``` ### Python @@ -29927,7 +31592,7 @@ from pachca.client import PachcaClient client = PachcaClient("YOUR_TOKEN") response = await client.bots.self_recreate_bot_token() -# → BotCreateResponse(id: int, webhook: BotWebhook(name: str, nickname: str, outgoing_url: str | None, events: list[BotEventName], trigger_on: BotTriggerOn, commands: list[str], scopes: list[str], template: str | None, template_engine: BotTemplateEngine, challenge_key: str | None, link_preview_enabled: bool, ignore_self_messages: bool, events_history_enabled: bool, single_chat: bool, can_edit: list[BotCanEdit], who_can_add: BotWhoCanAdd), access_token: str) +# → BotSelfTokenResponse(id: int, oauth_client: BotOAuthClient(client_id: str, client_secret_preview: str, confidential: bool, redirect_uris: list[str], scopes: list[str]) | None, webhook: BotSelfWebhook(name: str, nickname: str, outgoing_url: str | None, events: list[BotEventName], trigger_on: BotTriggerOn, commands: list[str], scopes: list[str], template: str | None, template_engine: BotTemplateEngine, challenge_key: str | None, link_preview_enabled: bool, ignore_self_messages: bool, events_history_enabled: bool, single_chat: bool, can_edit: list[BotCanEdit], who_can_add: BotWhoCanAdd), access_token: str) ``` --- @@ -29984,8 +31649,14 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/bot/webhook" \ **Схема ответа:** -- `data: object` (required) — Параметры бота +- `data: object` (required) — Параметры бота в ответах методов самого бота - `id: integer, int32` (required) — Идентификатор бота (совпадает с `user_id` бота). Пример: `1738816` + - `oauth_client: object` (required) — Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией. У бота без токенов может прийти `null`. + - `client_id: string` (required) — Идентификатор клиента для ссылки авторизации. Пример: `"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY"` + - `client_secret_preview: string` (required) — Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета. Пример: `"cH5kR9mN...x7Qp"` + - `confidential: boolean` (required) — Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE. Пример: `true` + - `redirect_uris: array of string` (required) — Адреса возврата после согласия. Пример: `["https://example.com/oauth/callback"]` + - `scopes: array of string` (required) — Права, которые бот запрашивает у сотрудника на экране согласия. Пример: `["messages:read","messages:create"]` - `webhook: object` (required) — Объект параметров вебхука - `name: string` (required, max length: 255) — Имя бота. Пример: `"Бот задач"` - `nickname: string` (required, max length: 255) — Никнейм бота. Пример: `"tasks_bot"` @@ -30005,7 +31676,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/bot/webhook" \ - `single_chat: boolean` (required) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false` - `can_edit: array of string` (required) — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `["admin"]` - `who_can_add: string` (required) — Кто может добавлять бота в чаты - Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Любой пользователь, в том числе гости + Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей **Пример ответа:** @@ -30013,6 +31684,18 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/bot/webhook" \ { "data": { "id": 1738816, + "oauth_client": { + "client_id": "aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY", + "client_secret_preview": "dGhpc19p...ZWNy", + "confidential": true, + "redirect_uris": [ + "https://example.com/oauth/callback" + ], + "scopes": [ + "messages:read", + "messages:create" + ] + }, "webhook": { "name": "Бот задач", "nickname": "tasks_bot", @@ -30052,7 +31735,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/bot/webhook" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -30098,7 +31781,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/bot/webhook" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -30144,7 +31827,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/bot/webhook" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -30177,7 +31860,7 @@ const client = new PachcaClient("YOUR_TOKEN") const request: BotWebhookSelfUpdateRequest = { webhook: { outgoingUrl: "https://www.website.com/tasks/new" } } const response = client.bots.selfUpdateBotWebhook(request) -// → BotResponse({ id: number, webhook: BotWebhook({ name: string, nickname: string, outgoingUrl: string | null, events: BotEventName[], triggerOn: BotTriggerOn, commands: string[], scopes: string[], template: string | null, templateEngine: BotTemplateEngine, challengeKey: string | null, linkPreviewEnabled: boolean, ignoreSelfMessages: boolean, eventsHistoryEnabled: boolean, singleChat: boolean, canEdit: BotCanEdit[], whoCanAdd: BotWhoCanAdd }) }) +// → BotSelfResponse({ id: number, oauthClient: BotOAuthClient({ clientId: string, clientSecretPreview: string, confidential: boolean, redirectUris: string[], scopes: string[] }) | null, webhook: BotSelfWebhook({ name: string, nickname: string, outgoingUrl: string | null, events: BotEventName[], triggerOn: BotTriggerOn, commands: string[], scopes: string[], template: string | null, templateEngine: BotTemplateEngine, challengeKey: string | null, linkPreviewEnabled: boolean, ignoreSelfMessages: boolean, eventsHistoryEnabled: boolean, singleChat: boolean, canEdit: BotCanEdit[], whoCanAdd: BotWhoCanAdd }) }) ``` ### Python @@ -30190,7 +31873,7 @@ client = PachcaClient("YOUR_TOKEN") request = BotWebhookSelfUpdateRequest(webhook=BotWebhookSelfUpdateRequestWebhook(outgoing_url="https://www.website.com/tasks/new")) response = await client.bots.self_update_bot_webhook(request=request) -# → BotResponse(id: int, webhook: BotWebhook(name: str, nickname: str, outgoing_url: str | None, events: list[BotEventName], trigger_on: BotTriggerOn, commands: list[str], scopes: list[str], template: str | None, template_engine: BotTemplateEngine, challenge_key: str | None, link_preview_enabled: bool, ignore_self_messages: bool, events_history_enabled: bool, single_chat: bool, can_edit: list[BotCanEdit], who_can_add: BotWhoCanAdd)) +# → BotSelfResponse(id: int, oauth_client: BotOAuthClient(client_id: str, client_secret_preview: str, confidential: bool, redirect_uris: list[str], scopes: list[str]) | None, webhook: BotSelfWebhook(name: str, nickname: str, outgoing_url: str | None, events: list[BotEventName], trigger_on: BotTriggerOn, commands: list[str], scopes: list[str], template: str | None, template_engine: BotTemplateEngine, challenge_key: str | None, link_preview_enabled: bool, ignore_self_messages: bool, events_history_enabled: bool, single_chat: bool, can_edit: list[BotCanEdit], who_can_add: BotWhoCanAdd)) ``` --- @@ -30207,7 +31890,7 @@ response = await client.bots.self_update_bot_webhook(request=request) Боты, которых вызывающий вправе настраивать: созданные им самим и те, чьи настройки открывают ему доступ к редактированию. -Параметр `query` отбирает ботов по части имени, без опечаток. Токены ботов в списке не приходят — их показывают один раз при создании и при ротации. +Параметр `query` отбирает ботов по части имени, без опечаток. Токены ботов в списке не приходят: значение токена показывают один раз, а сами токены бота отдаёт [Список токенов бота](/api/bots/list-tokens). Перечень всех ботов пространства, включая чужих, доступен владельцу на тарифе «Корпорация» — [Список ботов пространства](/api/bots/list-company). Там чужие боты приходят с одними лишь именем и ником, остальные настройки скрыты. @@ -30236,6 +31919,13 @@ curl "https://api.pachca.com/api/shared/v1/bots?query=задач&limit=1" \ - `data: array of object` (required) - `id: integer, int32` (required) — Идентификатор бота (совпадает с `user_id` бота). Пример: `1738816` + - `name: string` (required) — Имя бота. Пример: `"Бот задач"` + - `nickname: string` (required) — Никнейм бота. Пример: `"tasks_bot"` + - `avatar_url: string` (required, nullable) — Ссылка на аватар бота. `null`, если аватар не задан. Пример: `"https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg"` + - `creator_id: integer, int32` (required, nullable) — Идентификатор сотрудника, создавшего бота. `null`, если создатель не записан. Пример: `12` + - `created_at: date-time` (required) — Дата и время создания бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2025-05-15T14:30:00.000Z"` + - `authorized_users_count: integer, int32` (required) — Сколько сотрудников авторизовали бота. Пример: `3` + - `last_used_at: date-time` (required, nullable) — Дата и время, когда бот последний раз работал (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ: запрос на входящий вебхук или вызов API любым токеном бота, включая токены сотрудников. `null`, если такого не было. Использование токена учитывается не чаще раза в час. Пример: `"2025-05-15T14:30:00.000Z"` - `webhook: object` (required) — Объект параметров вебхука - `name: string` (required, max length: 255) — Имя бота. Пример: `"Бот задач"` - `nickname: string` (required, max length: 255) — Никнейм бота. Пример: `"tasks_bot"` @@ -30255,7 +31945,29 @@ curl "https://api.pachca.com/api/shared/v1/bots?query=задач&limit=1" \ - `single_chat: boolean` (required) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false` - `can_edit: array of string` (required) — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `["admin"]` - `who_can_add: string` (required) — Кто может добавлять бота в чаты - Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Любой пользователь, в том числе гости + Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей + - `kind: string` (required) — Источник входящего вебхука. `null`, если входящий вебхук у бота выключен. + Значения: `simple` — Свой формат: сообщение собирается из тела запроса по шаблону бота, `gitlab` — GitLab: Пачка сама разбирает запрос и собирает сообщение, `grafana` — Grafana: Пачка сама разбирает запрос и собирает сообщение + - `unfurl_domains: array of string` (required) — Домены, ссылки на которые бот разворачивает. Пример: `["example.com"]` + - `last_request_at: date-time` (required, nullable) — Дата и время последнего запроса на входящий вебхук бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если запросов не было. Пример: `"2025-05-15T14:30:00.000Z"` + - `oauth_client_enabled: boolean` (required) — Включена ли у бота авторизация от имени сотрудника. Пример: `true` + - `oauth_client: object` (required) — Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией, поэтому включена ли она, смотрите в `oauth_client_enabled`. У бота без токенов может прийти `null`. + - `client_id: string` (required) — Идентификатор клиента для ссылки авторизации. Пример: `"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY"` + - `client_secret_preview: string` (required) — Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета. Пример: `"cH5kR9mN...x7Qp"` + - `confidential: boolean` (required) — Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE. Пример: `true` + - `redirect_uris: array of string` (required) — Адреса возврата после согласия. Пример: `["https://example.com/oauth/callback"]` + - `scopes: array of string` (required) — Права, которые бот запрашивает у сотрудника на экране согласия. Пример: `["messages:read","messages:create"]` + - `promo: object` (required) — Страница бота в витрине. `null`, если авторизация у бота выключена. + - `description: string` (required, nullable) — Описание бота. `null`, если не задано. Пример: `"Собирает сводку по задачам Jira и присылает её в чат"` + - `published: boolean` (required) — Опубликован ли бот в витрине. Пример: `true` + - `promo_images: array of object` (required) — Скриншоты страницы бота + - `key: string` (required) — Ключ изображения. Пример: `"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"` + - `url: string` (required) — Ссылка на изображение. Пример: `"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"` + - `permissions: object` (required) — Что вы можете делать с этим ботом + - `update_oauth_client: boolean` (required) — Менять авторизацию от имени сотрудника, страницу в витрине и имя бота. Пример: `true` + - `recreate_token: boolean` (required) — Выпускать, менять и удалять токены бота и обновлять секрет клиента. Пример: `true` + - `destroy: boolean` (required) — Удалить бота. Пример: `true` + - `client_secret: string` — Секрет клиента. Приходит один раз: при включении серверного клиента, при переходе на него и при ротации секрета. Пример: `"dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA"` - `meta: object` (required) — Метаданные пагинации - `paginate: object` (required) — Вспомогательная информация - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `"eyJxZCO2MiwiZGlyIjomSNYjIn3"` @@ -30270,6 +31982,13 @@ curl "https://api.pachca.com/api/shared/v1/bots?query=задач&limit=1" \ "data": [ { "id": 1738816, + "name": "Бот задач", + "nickname": "tasks_bot", + "avatar_url": null, + "creator_id": 12, + "created_at": "2025-05-15T14:30:00.000Z", + "authorized_users_count": 3, + "last_used_at": "2025-05-20T09:15:00.000Z", "webhook": { "name": "Бот задач", "nickname": "tasks_bot", @@ -30294,7 +32013,33 @@ curl "https://api.pachca.com/api/shared/v1/bots?query=задач&limit=1" \ "can_edit": [ "admin" ], - "who_can_add": "creator" + "who_can_add": "creator", + "kind": "simple", + "unfurl_domains": [], + "last_request_at": "2025-05-20T09:15:00.000Z" + }, + "oauth_client_enabled": true, + "oauth_client": { + "client_id": "aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY", + "client_secret_preview": "dGhpc19p...ZWNy", + "confidential": true, + "redirect_uris": [ + "https://example.com/oauth/callback" + ], + "scopes": [ + "messages:read", + "messages:create" + ] + }, + "promo": { + "description": "Собирает сводку по задачам и присылает её в чат", + "published": true, + "promo_images": [] + }, + "permissions": { + "update_oauth_client": true, + "recreate_token": true, + "destroy": true } } ], @@ -30331,7 +32076,7 @@ curl "https://api.pachca.com/api/shared/v1/bots?query=задач&limit=1" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -30415,13 +32160,17 @@ response = await client.bots.list_bots(params=params) > **Скоуп:** `bots:write` -Создаёт бота в пространстве и сразу отдаёт его `access_token`. Сохраните токен при создании: тот же самый повторно не показывают, останется перевыпустить его методом [Ротация токена бота](/api/bots/recreate-token). +Создаёт бота в пространстве. По умолчанию бот получает входящий вебхук в своём формате и сразу отдаёт свой `access_token`. Сохраните токен при создании: тот же самый повторно не показывают, останется перевыпустить его методом [Ротация токена бота](/api/bots/recreate-token). + +С `empty: true` создаётся пустой бот, как в интерфейсе: только имя и ник, без токена и без входящего вебхука. Токены ему выпускают методом [Новый токен бота](/api/bots/create-token), а входящий вебхук включают полем `kind` в объекте `webhook`. Созданный бот ещё никуда не пишет. В беседу и канал он пишет только как участник, а добавляют его как сотрудника — методом [Добавление пользователей](/api/members/add), передав `id` бота. В канале бот получает роль редактора. Личные сообщения и треды в открытых чатах членства не требуют. Входящий вебхук бота отправляет сообщение сразу во все беседы и каналы, где бот состоит, поэтому набор его чатов и решает, куда оно попадёт. Токен для этого не нужен, достаточно адреса вебхука. Чтобы написать в один конкретный чат, берите метод [Новое сообщение](/api/messages/create) — вот там токен уже нужен. -Ник обязан заканчиваться на `_bot` и быть свободным в пространстве. Ограничение `single_chat` задаётся только здесь: при редактировании бота оно уже не меняется. +Авторизацию от имени сотрудника можно включить сразу, передав `oauth_client`, а страницу в витрине заполнить в `promo`. У серверного клиента секрет приходит в `client_secret` один раз. Подробнее — в разделе [Настройка авторизации](/guides/oauth/setup). + +Ник обязан заканчиваться на `_bot` и быть свободным в пространстве. ## Тело запроса @@ -30431,6 +32180,7 @@ response = await client.bots.list_bots(params=params) ### Схема +- `empty: boolean` (default: false) — Создать пустого бота: без токена и без входящего вебхука. Без этого поля бот создаётся с входящим вебхуком в своём формате, а его токен приходит в `access_token`. Пример: `false` - `webhook: object` (required) — Объект параметров вебхука создаваемого бота - `name: string` (required, max length: 255) — Имя бота. Пример: `"Бот задач"` - `nickname: string` (max length: 255) — Никнейм бота. Должен заканчиваться на `_bot`. Пример: `"tasks_bot"` @@ -30448,9 +32198,20 @@ response = await client.bots.list_bots(params=params) - `ignore_self_messages: boolean` (default: false) — Игнорировать входящие сообщения, отправленные самим ботом. Пример: `false` - `events_history_enabled: boolean` (default: false) — Сохранять историю событий бота для последующего получения через метод истории событий. Пример: `false` - `who_can_add: string` — Кто может добавлять бота в чаты - Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Любой пользователь, в том числе гости + Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей - `can_edit: array of string` — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `["admin"]` - - `single_chat: boolean` (default: false) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Задаётся только при создании, при редактировании не меняется. Пример: `false` + - `single_chat: boolean` (default: false) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false` + - `kind: string` — Источник входящего вебхука. Без `empty` по умолчанию `simple`, а у пустого бота входящий вебхук включается только этим полем. + Значения: `simple` — Свой формат: сообщение собирается из тела запроса по шаблону бота, `gitlab` — GitLab: Пачка сама разбирает запрос и собирает сообщение, `grafana` — Grafana: Пачка сама разбирает запрос и собирает сообщение + - `unfurl_domains: array of string` — Домены, ссылки на которые бот разворачивает, не больше 5. Работают вместе с событием `message_link_shared`. Пример: `["example.com"]` +- `oauth_client: object` — Включить авторизацию от имени сотрудника сразу при создании + - `confidential: boolean` — Где хранится секрет: `true` — серверное приложение хранит `client_secret` и обменивает код у себя, `false` — приложение без секрета (браузер, мобильное, CLI) обменивает код по PKCE. Если не передать, значение не меняется, а у нового клиента — `true`. Пример: `true` + - `redirect_uris: array of string` — Адреса возврата после согласия. HTTPS обязателен, кроме адресов на этом же компьютере (`localhost`, `127.0.0.1`). Адрес в ссылке авторизации должен совпадать с одним из списка точно, у `localhost` и `127.0.0.1` порт не сравнивается. При включении передайте хотя бы один адрес. Список заменяется целиком. Пример: `["https://example.com/oauth/callback"]` + - `scopes: array of string` — Права, которые бот запрашивает у сотрудника на экране согласия. Доступны только права, которые можно выдать самому боту. Если при включении поле не передать, запрашиваются все права бота. Список заменяется целиком. Пример: `["messages:read","messages:create"]` +- `promo: object` — Страница бота в витрине. Задаётся только вместе с `oauth_client`: без авторизации страницы у бота нет. + - `description: string` — Описание: чем бот занимается и зачем его подключать. Без описания бота нельзя опубликовать. Пример: `"Собирает сводку по задачам Jira и присылает её в чат"` + - `published: boolean` — Опубликовать бота в витрине: он появится карточкой на вкладке «Обзор». Публикация требует описания. Пример: `true` + - `promo_images: array of string` — Скриншоты страницы бота, не больше 5: ключи загруженных изображений (`key` из [Получение подписи, ключа и других параметров](/api/files/uploads)). Список заменяется целиком, порядок сохраняется. Пример: `["attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"]` ### Пример @@ -30470,6 +32231,16 @@ response = await client.bots.list_bots(params=params) "scopes": [ "messages:create" ] + }, + "oauth_client": { + "confidential": true, + "redirect_uris": [ + "https://example.com/oauth/callback" + ], + "scopes": [ + "messages:read", + "messages:create" + ] } } ``` @@ -30495,6 +32266,16 @@ curl "https://api.pachca.com/api/shared/v1/bots" \ "scopes": [ "messages:create" ] + }, + "oauth_client": { + "confidential": true, + "redirect_uris": [ + "https://example.com/oauth/callback" + ], + "scopes": [ + "messages:read", + "messages:create" + ] } }' ``` @@ -30507,6 +32288,13 @@ curl "https://api.pachca.com/api/shared/v1/bots" \ - `data: object` (required) — Параметры созданного бота - `id: integer, int32` (required) — Идентификатор бота (совпадает с `user_id` бота). Пример: `1738816` + - `name: string` (required) — Имя бота. Пример: `"Бот задач"` + - `nickname: string` (required) — Никнейм бота. Пример: `"tasks_bot"` + - `avatar_url: string` (required, nullable) — Ссылка на аватар бота. `null`, если аватар не задан. Пример: `"https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg"` + - `creator_id: integer, int32` (required, nullable) — Идентификатор сотрудника, создавшего бота. `null`, если создатель не записан. Пример: `12` + - `created_at: date-time` (required) — Дата и время создания бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2025-05-15T14:30:00.000Z"` + - `authorized_users_count: integer, int32` (required) — Сколько сотрудников авторизовали бота. Пример: `3` + - `last_used_at: date-time` (required, nullable) — Дата и время, когда бот последний раз работал (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ: запрос на входящий вебхук или вызов API любым токеном бота, включая токены сотрудников. `null`, если такого не было. Использование токена учитывается не чаще раза в час. Пример: `"2025-05-15T14:30:00.000Z"` - `webhook: object` (required) — Объект параметров вебхука - `name: string` (required, max length: 255) — Имя бота. Пример: `"Бот задач"` - `nickname: string` (required, max length: 255) — Никнейм бота. Пример: `"tasks_bot"` @@ -30526,8 +32314,30 @@ curl "https://api.pachca.com/api/shared/v1/bots" \ - `single_chat: boolean` (required) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false` - `can_edit: array of string` (required) — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `["admin"]` - `who_can_add: string` (required) — Кто может добавлять бота в чаты - Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Любой пользователь, в том числе гости - - `access_token: string` (required) — Токен доступа бота. Возвращается при создании бота и при ротации токена. Пример: `"bm90X2FfcmVhbF90b2tlbg"` + Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей + - `kind: string` (required) — Источник входящего вебхука. `null`, если входящий вебхук у бота выключен. + Значения: `simple` — Свой формат: сообщение собирается из тела запроса по шаблону бота, `gitlab` — GitLab: Пачка сама разбирает запрос и собирает сообщение, `grafana` — Grafana: Пачка сама разбирает запрос и собирает сообщение + - `unfurl_domains: array of string` (required) — Домены, ссылки на которые бот разворачивает. Пример: `["example.com"]` + - `last_request_at: date-time` (required, nullable) — Дата и время последнего запроса на входящий вебхук бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если запросов не было. Пример: `"2025-05-15T14:30:00.000Z"` + - `oauth_client_enabled: boolean` (required) — Включена ли у бота авторизация от имени сотрудника. Пример: `true` + - `oauth_client: object` (required) — Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией, поэтому включена ли она, смотрите в `oauth_client_enabled`. У бота без токенов может прийти `null`. + - `client_id: string` (required) — Идентификатор клиента для ссылки авторизации. Пример: `"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY"` + - `client_secret_preview: string` (required) — Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета. Пример: `"cH5kR9mN...x7Qp"` + - `confidential: boolean` (required) — Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE. Пример: `true` + - `redirect_uris: array of string` (required) — Адреса возврата после согласия. Пример: `["https://example.com/oauth/callback"]` + - `scopes: array of string` (required) — Права, которые бот запрашивает у сотрудника на экране согласия. Пример: `["messages:read","messages:create"]` + - `promo: object` (required) — Страница бота в витрине. `null`, если авторизация у бота выключена. + - `description: string` (required, nullable) — Описание бота. `null`, если не задано. Пример: `"Собирает сводку по задачам Jira и присылает её в чат"` + - `published: boolean` (required) — Опубликован ли бот в витрине. Пример: `true` + - `promo_images: array of object` (required) — Скриншоты страницы бота + - `key: string` (required) — Ключ изображения. Пример: `"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"` + - `url: string` (required) — Ссылка на изображение. Пример: `"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"` + - `permissions: object` (required) — Что вы можете делать с этим ботом + - `update_oauth_client: boolean` (required) — Менять авторизацию от имени сотрудника, страницу в витрине и имя бота. Пример: `true` + - `recreate_token: boolean` (required) — Выпускать, менять и удалять токены бота и обновлять секрет клиента. Пример: `true` + - `destroy: boolean` (required) — Удалить бота. Пример: `true` + - `client_secret: string` — Секрет клиента. Приходит один раз: при включении серверного клиента, при переходе на него и при ротации секрета. Пример: `"dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA"` + - `access_token: string` — Токен доступа бота. Возвращается при создании бота и при ротации токена. Не приходит, если бот создан с `empty: true`. Пример: `"bm90X2FfcmVhbF90b2tlbg"` **Пример ответа:** @@ -30535,6 +32345,13 @@ curl "https://api.pachca.com/api/shared/v1/bots" \ { "data": { "id": 1738816, + "name": "Бот задач", + "nickname": "tasks_bot", + "avatar_url": null, + "creator_id": 12, + "created_at": "2025-05-15T14:30:00.000Z", + "authorized_users_count": 0, + "last_used_at": null, "webhook": { "name": "Бот задач", "nickname": "tasks_bot", @@ -30559,8 +32376,35 @@ curl "https://api.pachca.com/api/shared/v1/bots" \ "can_edit": [ "admin" ], - "who_can_add": "creator" + "who_can_add": "creator", + "kind": "simple", + "unfurl_domains": [], + "last_request_at": null }, + "oauth_client_enabled": true, + "oauth_client": { + "client_id": "aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY", + "client_secret_preview": "dGhpc19p...ZWNy", + "confidential": true, + "redirect_uris": [ + "https://example.com/oauth/callback" + ], + "scopes": [ + "messages:read", + "messages:create" + ] + }, + "promo": { + "description": null, + "published": false, + "promo_images": [] + }, + "permissions": { + "update_oauth_client": true, + "recreate_token": true, + "destroy": true + }, + "client_secret": "dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA", "access_token": "bm90X2FfcmVhbF90b2tlbg" } } @@ -30575,7 +32419,7 @@ curl "https://api.pachca.com/api/shared/v1/bots" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -30621,7 +32465,7 @@ curl "https://api.pachca.com/api/shared/v1/bots" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -30664,11 +32508,12 @@ curl "https://api.pachca.com/api/shared/v1/bots" \ ### TypeScript ```typescript -import { BotCanEdit, BotCreateRequest, BotCreateRequestWebhook, BotEventName, BotTemplateEngine, BotTriggerOn, BotWhoCanAdd, PachcaClient } from "@pachca/sdk" +import { BotCanEdit, BotCreateRequest, BotCreateRequestWebhook, BotEventName, BotOAuthClientRequest, BotPromoRequest, BotTemplateEngine, BotTriggerOn, BotWebhookKind, BotWhoCanAdd, PachcaClient } from "@pachca/sdk" const client = new PachcaClient("YOUR_TOKEN") const request: BotCreateRequest = { + empty: false, webhook: { name: "Бот задач", nickname: "tasks_bot", @@ -30685,22 +32530,35 @@ const request: BotCreateRequest = { eventsHistoryEnabled: false, whoCanAdd: BotWhoCanAdd.Creator, canEdit: [BotCanEdit.Admin], - singleChat: false + singleChat: false, + kind: BotWebhookKind.Simple, + unfurlDomains: ["example"] + }, + oauthClient: { + confidential: true, + redirectUris: ["example"], + scopes: ["example"] + }, + promo: { + description: "Собирает сводку по задачам Jira и присылает её в чат", + published: true, + promoImages: ["example"] } } const response = client.bots.createBot(request) -// → BotCreateResponse({ id: number, webhook: BotWebhook({ name: string, nickname: string, outgoingUrl: string | null, events: BotEventName[], triggerOn: BotTriggerOn, commands: string[], scopes: string[], template: string | null, templateEngine: BotTemplateEngine, challengeKey: string | null, linkPreviewEnabled: boolean, ignoreSelfMessages: boolean, eventsHistoryEnabled: boolean, singleChat: boolean, canEdit: BotCanEdit[], whoCanAdd: BotWhoCanAdd }), accessToken: string }) +// → BotCreateResponse({ id: number, name: string, nickname: string, avatarUrl: string | null, creatorId: number | null, createdAt: string, authorizedUsersCount: number, lastUsedAt: string | null, webhook: BotWebhook({ name: string, nickname: string, outgoingUrl: string | null, events: BotEventName[], triggerOn: BotTriggerOn, commands: string[], scopes: string[], template: string | null, templateEngine: BotTemplateEngine, challengeKey: string | null, linkPreviewEnabled: boolean, ignoreSelfMessages: boolean, eventsHistoryEnabled: boolean, singleChat: boolean, canEdit: BotCanEdit[], whoCanAdd: BotWhoCanAdd, kind: BotWebhookKind | null, unfurlDomains: string[], lastRequestAt: string | null }), oauthClientEnabled: boolean, oauthClient: BotOAuthClient({ clientId: string, clientSecretPreview: string, confidential: boolean, redirectUris: string[], scopes: string[] }) | null, promo: BotPromo({ description: string | null, published: boolean, promoImages: BotPromoImage({ key: string, url: string })[] }) | null, permissions: BotPermissions({ updateOauthClient: boolean, recreateToken: boolean, destroy: boolean }), clientSecret?: string, accessToken?: string }) ``` ### Python ```python from pachca.client import PachcaClient -from pachca.models import BotCanEdit, BotCreateRequest, BotCreateRequestWebhook, BotEventName, BotTemplateEngine, BotTriggerOn, BotWhoCanAdd +from pachca.models import BotCanEdit, BotCreateRequest, BotCreateRequestWebhook, BotEventName, BotOAuthClientRequest, BotPromoRequest, BotTemplateEngine, BotTriggerOn, BotWebhookKind, BotWhoCanAdd client = PachcaClient("YOUR_TOKEN") request = BotCreateRequest( + empty=False, webhook=BotCreateRequestWebhook( name="Бот задач", nickname="tasks_bot", @@ -30717,11 +32575,23 @@ request = BotCreateRequest( events_history_enabled=False, who_can_add=BotWhoCanAdd.CREATOR, can_edit=[BotCanEdit.ADMIN], - single_chat=False + single_chat=False, + kind=BotWebhookKind.SIMPLE, + unfurl_domains=["example"] + ), + oauth_client=BotOAuthClientRequest( + confidential=True, + redirect_uris=["example"], + scopes=["example"] + ), + promo=BotPromoRequest( + description="Собирает сводку по задачам Jira и присылает её в чат", + published=True, + promo_images=["example"] ) ) response = await client.bots.create_bot(request=request) -# → BotCreateResponse(id: int, webhook: BotWebhook(name: str, nickname: str, outgoing_url: str | None, events: list[BotEventName], trigger_on: BotTriggerOn, commands: list[str], scopes: list[str], template: str | None, template_engine: BotTemplateEngine, challenge_key: str | None, link_preview_enabled: bool, ignore_self_messages: bool, events_history_enabled: bool, single_chat: bool, can_edit: list[BotCanEdit], who_can_add: BotWhoCanAdd), access_token: str) +# → BotCreateResponse(id: int, name: str, nickname: str, avatar_url: str | None, creator_id: int | None, created_at: datetime, authorized_users_count: int, last_used_at: datetime | None, webhook: BotWebhook(name: str, nickname: str, outgoing_url: str | None, events: list[BotEventName], trigger_on: BotTriggerOn, commands: list[str], scopes: list[str], template: str | None, template_engine: BotTemplateEngine, challenge_key: str | None, link_preview_enabled: bool, ignore_self_messages: bool, events_history_enabled: bool, single_chat: bool, can_edit: list[BotCanEdit], who_can_add: BotWhoCanAdd, kind: BotWebhookKind | None, unfurl_domains: list[str], last_request_at: datetime | None), oauth_client_enabled: bool, oauth_client: BotOAuthClient(client_id: str, client_secret_preview: str, confidential: bool, redirect_uris: list[str], scopes: list[str]) | None, promo: BotPromo(description: str | None, published: bool, promo_images: list[BotPromoImage(key: str, url: str)]) | None, permissions: BotPermissions(update_oauth_client: bool, recreate_token: bool, destroy: bool), client_secret: str | None, access_token: str | None) ``` --- @@ -30736,9 +32606,9 @@ response = await client.bots.create_bot(request=request) > **Скоуп:** `bots:read` -Настройки бота. Токен в ответе не приходит — его показывают один раз при создании бота и при вызове метода [Ротация токена бота](/api/bots/recreate-token). +Настройки бота. Токен в ответе не приходит — его показывают один раз при создании бота и при вызове метода [Ротация токена бота](/api/bots/recreate-token). Токены бота отдаёт [Список токенов бота](/api/bots/list-tokens). -Метод отдаёт только тех ботов, которых вызывающий вправе настраивать: своих, а также чужих, если настройки бота открывают доступ администратору пространства или владельцу чата, где бот состоит. На остальных метод ответит `403`. +Метод отдаёт только тех ботов, которых вызывающий вправе настраивать: своих, а также чужих, если настройки бота открывают доступ администраторам пространства или руководителям чатов, где бот состоит. На остальных метод ответит `403`. Перечень всех ботов пространства, включая чужих, доступен владельцу на тарифе «Корпорация» — [Список ботов пространства](/api/bots/list-company). @@ -30764,6 +32634,13 @@ curl "https://api.pachca.com/api/shared/v1/bots/1738816" \ - `data: object` (required) — Параметры бота - `id: integer, int32` (required) — Идентификатор бота (совпадает с `user_id` бота). Пример: `1738816` + - `name: string` (required) — Имя бота. Пример: `"Бот задач"` + - `nickname: string` (required) — Никнейм бота. Пример: `"tasks_bot"` + - `avatar_url: string` (required, nullable) — Ссылка на аватар бота. `null`, если аватар не задан. Пример: `"https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg"` + - `creator_id: integer, int32` (required, nullable) — Идентификатор сотрудника, создавшего бота. `null`, если создатель не записан. Пример: `12` + - `created_at: date-time` (required) — Дата и время создания бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2025-05-15T14:30:00.000Z"` + - `authorized_users_count: integer, int32` (required) — Сколько сотрудников авторизовали бота. Пример: `3` + - `last_used_at: date-time` (required, nullable) — Дата и время, когда бот последний раз работал (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ: запрос на входящий вебхук или вызов API любым токеном бота, включая токены сотрудников. `null`, если такого не было. Использование токена учитывается не чаще раза в час. Пример: `"2025-05-15T14:30:00.000Z"` - `webhook: object` (required) — Объект параметров вебхука - `name: string` (required, max length: 255) — Имя бота. Пример: `"Бот задач"` - `nickname: string` (required, max length: 255) — Никнейм бота. Пример: `"tasks_bot"` @@ -30783,7 +32660,29 @@ curl "https://api.pachca.com/api/shared/v1/bots/1738816" \ - `single_chat: boolean` (required) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false` - `can_edit: array of string` (required) — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `["admin"]` - `who_can_add: string` (required) — Кто может добавлять бота в чаты - Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Любой пользователь, в том числе гости + Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей + - `kind: string` (required) — Источник входящего вебхука. `null`, если входящий вебхук у бота выключен. + Значения: `simple` — Свой формат: сообщение собирается из тела запроса по шаблону бота, `gitlab` — GitLab: Пачка сама разбирает запрос и собирает сообщение, `grafana` — Grafana: Пачка сама разбирает запрос и собирает сообщение + - `unfurl_domains: array of string` (required) — Домены, ссылки на которые бот разворачивает. Пример: `["example.com"]` + - `last_request_at: date-time` (required, nullable) — Дата и время последнего запроса на входящий вебхук бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если запросов не было. Пример: `"2025-05-15T14:30:00.000Z"` + - `oauth_client_enabled: boolean` (required) — Включена ли у бота авторизация от имени сотрудника. Пример: `true` + - `oauth_client: object` (required) — Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией, поэтому включена ли она, смотрите в `oauth_client_enabled`. У бота без токенов может прийти `null`. + - `client_id: string` (required) — Идентификатор клиента для ссылки авторизации. Пример: `"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY"` + - `client_secret_preview: string` (required) — Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета. Пример: `"cH5kR9mN...x7Qp"` + - `confidential: boolean` (required) — Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE. Пример: `true` + - `redirect_uris: array of string` (required) — Адреса возврата после согласия. Пример: `["https://example.com/oauth/callback"]` + - `scopes: array of string` (required) — Права, которые бот запрашивает у сотрудника на экране согласия. Пример: `["messages:read","messages:create"]` + - `promo: object` (required) — Страница бота в витрине. `null`, если авторизация у бота выключена. + - `description: string` (required, nullable) — Описание бота. `null`, если не задано. Пример: `"Собирает сводку по задачам Jira и присылает её в чат"` + - `published: boolean` (required) — Опубликован ли бот в витрине. Пример: `true` + - `promo_images: array of object` (required) — Скриншоты страницы бота + - `key: string` (required) — Ключ изображения. Пример: `"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"` + - `url: string` (required) — Ссылка на изображение. Пример: `"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"` + - `permissions: object` (required) — Что вы можете делать с этим ботом + - `update_oauth_client: boolean` (required) — Менять авторизацию от имени сотрудника, страницу в витрине и имя бота. Пример: `true` + - `recreate_token: boolean` (required) — Выпускать, менять и удалять токены бота и обновлять секрет клиента. Пример: `true` + - `destroy: boolean` (required) — Удалить бота. Пример: `true` + - `client_secret: string` — Секрет клиента. Приходит один раз: при включении серверного клиента, при переходе на него и при ротации секрета. Пример: `"dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA"` **Пример ответа:** @@ -30791,6 +32690,13 @@ curl "https://api.pachca.com/api/shared/v1/bots/1738816" \ { "data": { "id": 1738816, + "name": "Бот задач", + "nickname": "tasks_bot", + "avatar_url": null, + "creator_id": 12, + "created_at": "2025-05-15T14:30:00.000Z", + "authorized_users_count": 3, + "last_used_at": "2025-05-20T09:15:00.000Z", "webhook": { "name": "Бот задач", "nickname": "tasks_bot", @@ -30815,7 +32721,33 @@ curl "https://api.pachca.com/api/shared/v1/bots/1738816" \ "can_edit": [ "admin" ], - "who_can_add": "creator" + "who_can_add": "creator", + "kind": "simple", + "unfurl_domains": [], + "last_request_at": "2025-05-20T09:15:00.000Z" + }, + "oauth_client_enabled": true, + "oauth_client": { + "client_id": "aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY", + "client_secret_preview": "dGhpc19p...ZWNy", + "confidential": true, + "redirect_uris": [ + "https://example.com/oauth/callback" + ], + "scopes": [ + "messages:read", + "messages:create" + ] + }, + "promo": { + "description": "Собирает сводку по задачам и присылает её в чат", + "published": true, + "promo_images": [] + }, + "permissions": { + "update_oauth_client": true, + "recreate_token": true, + "destroy": true } } } @@ -30846,7 +32778,7 @@ curl "https://api.pachca.com/api/shared/v1/bots/1738816" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -30892,7 +32824,7 @@ curl "https://api.pachca.com/api/shared/v1/bots/1738816" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -30924,7 +32856,7 @@ import { PachcaClient } from "@pachca/sdk" const client = new PachcaClient("YOUR_TOKEN") const response = client.bots.getBot(1738816) -// → BotResponse({ id: number, webhook: BotWebhook({ name: string, nickname: string, outgoingUrl: string | null, events: BotEventName[], triggerOn: BotTriggerOn, commands: string[], scopes: string[], template: string | null, templateEngine: BotTemplateEngine, challengeKey: string | null, linkPreviewEnabled: boolean, ignoreSelfMessages: boolean, eventsHistoryEnabled: boolean, singleChat: boolean, canEdit: BotCanEdit[], whoCanAdd: BotWhoCanAdd }) }) +// → BotResponse({ id: number, name: string, nickname: string, avatarUrl: string | null, creatorId: number | null, createdAt: string, authorizedUsersCount: number, lastUsedAt: string | null, webhook: BotWebhook({ name: string, nickname: string, outgoingUrl: string | null, events: BotEventName[], triggerOn: BotTriggerOn, commands: string[], scopes: string[], template: string | null, templateEngine: BotTemplateEngine, challengeKey: string | null, linkPreviewEnabled: boolean, ignoreSelfMessages: boolean, eventsHistoryEnabled: boolean, singleChat: boolean, canEdit: BotCanEdit[], whoCanAdd: BotWhoCanAdd, kind: BotWebhookKind | null, unfurlDomains: string[], lastRequestAt: string | null }), oauthClientEnabled: boolean, oauthClient: BotOAuthClient({ clientId: string, clientSecretPreview: string, confidential: boolean, redirectUris: string[], scopes: string[] }) | null, promo: BotPromo({ description: string | null, published: boolean, promoImages: BotPromoImage({ key: string, url: string })[] }) | null, permissions: BotPermissions({ updateOauthClient: boolean, recreateToken: boolean, destroy: boolean }), clientSecret?: string }) ``` ### Python @@ -30935,7 +32867,7 @@ from pachca.client import PachcaClient client = PachcaClient("YOUR_TOKEN") response = await client.bots.get_bot(id=1738816) -# → BotResponse(id: int, webhook: BotWebhook(name: str, nickname: str, outgoing_url: str | None, events: list[BotEventName], trigger_on: BotTriggerOn, commands: list[str], scopes: list[str], template: str | None, template_engine: BotTemplateEngine, challenge_key: str | None, link_preview_enabled: bool, ignore_self_messages: bool, events_history_enabled: bool, single_chat: bool, can_edit: list[BotCanEdit], who_can_add: BotWhoCanAdd)) +# → BotResponse(id: int, name: str, nickname: str, avatar_url: str | None, creator_id: int | None, created_at: datetime, authorized_users_count: int, last_used_at: datetime | None, webhook: BotWebhook(name: str, nickname: str, outgoing_url: str | None, events: list[BotEventName], trigger_on: BotTriggerOn, commands: list[str], scopes: list[str], template: str | None, template_engine: BotTemplateEngine, challenge_key: str | None, link_preview_enabled: bool, ignore_self_messages: bool, events_history_enabled: bool, single_chat: bool, can_edit: list[BotCanEdit], who_can_add: BotWhoCanAdd, kind: BotWebhookKind | None, unfurl_domains: list[str], last_request_at: datetime | None), oauth_client_enabled: bool, oauth_client: BotOAuthClient(client_id: str, client_secret_preview: str, confidential: bool, redirect_uris: list[str], scopes: list[str]) | None, promo: BotPromo(description: str | None, published: bool, promo_images: list[BotPromoImage(key: str, url: str)]) | None, permissions: BotPermissions(update_oauth_client: bool, recreate_token: bool, destroy: bool), client_secret: str | None) ``` --- @@ -30952,11 +32884,13 @@ response = await client.bots.get_bot(id=1738816) Меняет настройки бота: перезаписываются только переданные поля. -Поле `single_chat` принимается только при создании бота. В этом методе оно молча игнорируется: ответ приходит успешный, а режим бота не меняется. +Ник обязан заканчиваться на `_bot` и быть свободным в пространстве, иначе метод отвечает ошибкой валидации. Команды и скоупы заменяются переданным списком целиком. Скоупы относятся к основному токену бота — тому, что без имени, а если такого нет, к самому старому — и применяются к нему сразу, перевыпускать его не нужно. Права отдельного токена меняет [Изменение токена бота](/api/bots/update-token). -Ник обязан заканчиваться на `_bot` и быть свободным в пространстве, иначе метод отвечает ошибкой валидации. Команды и скоупы заменяются переданным списком целиком, а новый набор скоупов сразу применяется к действующему токену бота — перевыпускать его не нужно. +Объект `oauth_client` включает авторизацию от имени сотрудника или меняет её настройки, а `null` её выключает: авторизации, выданные сотрудниками, отзываются, страница в витрине удаляется, собственные токены бота продолжают работать. Когда клиент становится серверным, его секрет приходит в `client_secret` один раз. Страницу в витрине задаёт `promo`, пока авторизация включена. -Вы не можете редактировать бота, настройки которого вам недоступны (поле «Кто может редактировать настройки бота» находится во вкладке «Основное» в настройках бота). +Включать событие `message_link_shared`, а у бота с ним менять домены, адрес вебхука и историю событий может только администратор или владелец пространства. + +Имя бота, авторизацию от имени сотрудника и страницу в витрине меняют только его создатель и администратор пространства, если настройки бота открывают администраторам доступ к редактированию. Остальные настройки нельзя менять у бота, настройки которого вам недоступны (поле «Кто может редактировать настройки бота» находится во вкладке «Основное» в настройках бота). ## Параметры @@ -30973,7 +32907,7 @@ response = await client.bots.get_bot(id=1738816) ### Схема -- `webhook: object` (required) — Объект параметров вебхука редактируемого бота +- `webhook: object` — Объект параметров вебхука редактируемого бота - `name: string` (max length: 255) — Имя бота. Пример: `"Бот задач"` - `nickname: string` (max length: 255) — Никнейм бота. Должен заканчиваться на `_bot`. Пример: `"tasks_bot"` - `outgoing_url: string` — URL исходящего вебхука. Пример: `"https://www.website.com/tasks/new"` @@ -30990,8 +32924,20 @@ response = await client.bots.get_bot(id=1738816) - `ignore_self_messages: boolean` (default: false) — Игнорировать входящие сообщения, отправленные самим ботом. Пример: `false` - `events_history_enabled: boolean` (default: false) — Сохранять историю событий бота для последующего получения через метод истории событий. Пример: `false` - `who_can_add: string` — Кто может добавлять бота в чаты - Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Любой пользователь, в том числе гости + Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей - `can_edit: array of string` — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `["admin"]` + - `single_chat: boolean` — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false` + - `kind: string` — Источник входящего вебхука. Если у бота входящего вебхука не было, он включается. + Значения: `simple` — Свой формат: сообщение собирается из тела запроса по шаблону бота, `gitlab` — GitLab: Пачка сама разбирает запрос и собирает сообщение, `grafana` — Grafana: Пачка сама разбирает запрос и собирает сообщение + - `unfurl_domains: array of string` — Домены, ссылки на которые бот разворачивает, не больше 5. Работают вместе с событием `message_link_shared`. Пример: `["example.com"]` +- `oauth_client: object` — Настройки авторизации от имени сотрудника. Если авторизация выключена, объект её включает, а `null` выключает: выданные сотрудниками авторизации отзываются, страница в витрине удаляется. + - `confidential: boolean` — Где хранится секрет: `true` — серверное приложение хранит `client_secret` и обменивает код у себя, `false` — приложение без секрета (браузер, мобильное, CLI) обменивает код по PKCE. Если не передать, значение не меняется, а у нового клиента — `true`. Пример: `true` + - `redirect_uris: array of string` — Адреса возврата после согласия. HTTPS обязателен, кроме адресов на этом же компьютере (`localhost`, `127.0.0.1`). Адрес в ссылке авторизации должен совпадать с одним из списка точно, у `localhost` и `127.0.0.1` порт не сравнивается. При включении передайте хотя бы один адрес. Список заменяется целиком. Пример: `["https://example.com/oauth/callback"]` + - `scopes: array of string` — Права, которые бот запрашивает у сотрудника на экране согласия. Доступны только права, которые можно выдать самому боту. Если при включении поле не передать, запрашиваются все права бота. Список заменяется целиком. Пример: `["messages:read","messages:create"]` +- `promo: object` — Страница бота в витрине. Доступна, только когда у бота включена авторизация. + - `description: string` — Описание: чем бот занимается и зачем его подключать. Без описания бота нельзя опубликовать. Пример: `"Собирает сводку по задачам Jira и присылает её в чат"` + - `published: boolean` — Опубликовать бота в витрине: он появится карточкой на вкладке «Обзор». Публикация требует описания. Пример: `true` + - `promo_images: array of string` — Скриншоты страницы бота, не больше 5: ключи загруженных изображений (`key` из [Получение подписи, ключа и других параметров](/api/files/uploads)). Список заменяется целиком, порядок сохраняется. Пример: `["attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"]` ### Пример @@ -31015,6 +32961,28 @@ response = await client.bots.get_bot(id=1738816) "challenge_key": "challenge", "can_edit": [ "admin" + ], + "single_chat": false, + "kind": "simple", + "unfurl_domains": [ + "example.com" + ] + }, + "oauth_client": { + "confidential": true, + "redirect_uris": [ + "https://example.com/oauth/callback" + ], + "scopes": [ + "messages:read", + "messages:create" + ] + }, + "promo": { + "description": "Собирает сводку по задачам Jira и присылает её в чат", + "published": true, + "promo_images": [ + "attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png" ] } } @@ -31045,6 +33013,28 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/bots/1738816" \ "challenge_key": "challenge", "can_edit": [ "admin" + ], + "single_chat": false, + "kind": "simple", + "unfurl_domains": [ + "example.com" + ] + }, + "oauth_client": { + "confidential": true, + "redirect_uris": [ + "https://example.com/oauth/callback" + ], + "scopes": [ + "messages:read", + "messages:create" + ] + }, + "promo": { + "description": "Собирает сводку по задачам Jira и присылает её в чат", + "published": true, + "promo_images": [ + "attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png" ] } }' @@ -31058,6 +33048,13 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/bots/1738816" \ - `data: object` (required) — Параметры бота - `id: integer, int32` (required) — Идентификатор бота (совпадает с `user_id` бота). Пример: `1738816` + - `name: string` (required) — Имя бота. Пример: `"Бот задач"` + - `nickname: string` (required) — Никнейм бота. Пример: `"tasks_bot"` + - `avatar_url: string` (required, nullable) — Ссылка на аватар бота. `null`, если аватар не задан. Пример: `"https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg"` + - `creator_id: integer, int32` (required, nullable) — Идентификатор сотрудника, создавшего бота. `null`, если создатель не записан. Пример: `12` + - `created_at: date-time` (required) — Дата и время создания бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2025-05-15T14:30:00.000Z"` + - `authorized_users_count: integer, int32` (required) — Сколько сотрудников авторизовали бота. Пример: `3` + - `last_used_at: date-time` (required, nullable) — Дата и время, когда бот последний раз работал (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ: запрос на входящий вебхук или вызов API любым токеном бота, включая токены сотрудников. `null`, если такого не было. Использование токена учитывается не чаще раза в час. Пример: `"2025-05-15T14:30:00.000Z"` - `webhook: object` (required) — Объект параметров вебхука - `name: string` (required, max length: 255) — Имя бота. Пример: `"Бот задач"` - `nickname: string` (required, max length: 255) — Никнейм бота. Пример: `"tasks_bot"` @@ -31077,7 +33074,29 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/bots/1738816" \ - `single_chat: boolean` (required) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false` - `can_edit: array of string` (required) — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `["admin"]` - `who_can_add: string` (required) — Кто может добавлять бота в чаты - Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Любой пользователь, в том числе гости + Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей + - `kind: string` (required) — Источник входящего вебхука. `null`, если входящий вебхук у бота выключен. + Значения: `simple` — Свой формат: сообщение собирается из тела запроса по шаблону бота, `gitlab` — GitLab: Пачка сама разбирает запрос и собирает сообщение, `grafana` — Grafana: Пачка сама разбирает запрос и собирает сообщение + - `unfurl_domains: array of string` (required) — Домены, ссылки на которые бот разворачивает. Пример: `["example.com"]` + - `last_request_at: date-time` (required, nullable) — Дата и время последнего запроса на входящий вебхук бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если запросов не было. Пример: `"2025-05-15T14:30:00.000Z"` + - `oauth_client_enabled: boolean` (required) — Включена ли у бота авторизация от имени сотрудника. Пример: `true` + - `oauth_client: object` (required) — Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией, поэтому включена ли она, смотрите в `oauth_client_enabled`. У бота без токенов может прийти `null`. + - `client_id: string` (required) — Идентификатор клиента для ссылки авторизации. Пример: `"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY"` + - `client_secret_preview: string` (required) — Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета. Пример: `"cH5kR9mN...x7Qp"` + - `confidential: boolean` (required) — Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE. Пример: `true` + - `redirect_uris: array of string` (required) — Адреса возврата после согласия. Пример: `["https://example.com/oauth/callback"]` + - `scopes: array of string` (required) — Права, которые бот запрашивает у сотрудника на экране согласия. Пример: `["messages:read","messages:create"]` + - `promo: object` (required) — Страница бота в витрине. `null`, если авторизация у бота выключена. + - `description: string` (required, nullable) — Описание бота. `null`, если не задано. Пример: `"Собирает сводку по задачам Jira и присылает её в чат"` + - `published: boolean` (required) — Опубликован ли бот в витрине. Пример: `true` + - `promo_images: array of object` (required) — Скриншоты страницы бота + - `key: string` (required) — Ключ изображения. Пример: `"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"` + - `url: string` (required) — Ссылка на изображение. Пример: `"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"` + - `permissions: object` (required) — Что вы можете делать с этим ботом + - `update_oauth_client: boolean` (required) — Менять авторизацию от имени сотрудника, страницу в витрине и имя бота. Пример: `true` + - `recreate_token: boolean` (required) — Выпускать, менять и удалять токены бота и обновлять секрет клиента. Пример: `true` + - `destroy: boolean` (required) — Удалить бота. Пример: `true` + - `client_secret: string` — Секрет клиента. Приходит один раз: при включении серверного клиента, при переходе на него и при ротации секрета. Пример: `"dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA"` **Пример ответа:** @@ -31085,6 +33104,13 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/bots/1738816" \ { "data": { "id": 1738816, + "name": "Бот задач", + "nickname": "tasks_bot", + "avatar_url": "https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg", + "creator_id": 12, + "created_at": "2025-05-15T14:30:00.000Z", + "authorized_users_count": 3, + "last_used_at": "2025-05-15T14:30:00.000Z", "webhook": { "name": "Бот задач", "nickname": "tasks_bot", @@ -31109,8 +33135,42 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/bots/1738816" \ "can_edit": [ "admin" ], - "who_can_add": "creator" - } + "who_can_add": "creator", + "kind": "simple", + "unfurl_domains": [ + "example.com" + ], + "last_request_at": "2025-05-15T14:30:00.000Z" + }, + "oauth_client_enabled": true, + "oauth_client": { + "client_id": "aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY", + "client_secret_preview": "cH5kR9mN...x7Qp", + "confidential": true, + "redirect_uris": [ + "https://example.com/oauth/callback" + ], + "scopes": [ + "messages:read", + "messages:create" + ] + }, + "promo": { + "description": "Собирает сводку по задачам Jira и присылает её в чат", + "published": true, + "promo_images": [ + { + "key": "attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png", + "url": "https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png" + } + ] + }, + "permissions": { + "update_oauth_client": true, + "recreate_token": true, + "destroy": true + }, + "client_secret": "dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA" } } ``` @@ -31124,7 +33184,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/bots/1738816" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -31170,7 +33230,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/bots/1738816" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -31195,6 +33255,226 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/bots/1738816" \ **Схема ответа при ошибке:** +**anyOf** - один из вариантов: + +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) + - `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` +- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403) + - `error: string` (required) — Код ошибки. Пример: `"invalid_token"` + - `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + +### 404: The server cannot find the requested resource. + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + +### 422: Client error + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + + +## SDK примеры + +### TypeScript + +```typescript +import { BotCanEdit, BotEventName, BotOAuthClientRequest, BotPromoRequest, BotTemplateEngine, BotTriggerOn, BotUpdateRequest, BotUpdateRequestWebhook, BotWebhookKind, BotWhoCanAdd, PachcaClient } from "@pachca/sdk" + +const client = new PachcaClient("YOUR_TOKEN") + +const request: BotUpdateRequest = { + webhook: { + name: "Бот задач", + nickname: "tasks_bot", + outgoingUrl: "https://www.website.com/tasks/new", + events: [BotEventName.MessageNew], + triggerOn: BotTriggerOn.Commands, + commands: ["example"], + scopes: ["example"], + template: "Заказ от {{ client }} на сумму {{ amount }} ₽", + templateEngine: BotTemplateEngine.Liquid, + challengeKey: "challenge", + linkPreviewEnabled: true, + ignoreSelfMessages: false, + eventsHistoryEnabled: false, + whoCanAdd: BotWhoCanAdd.Creator, + canEdit: [BotCanEdit.Admin], + singleChat: false, + kind: BotWebhookKind.Simple, + unfurlDomains: ["example"] + }, + oauthClient: { + confidential: true, + redirectUris: ["example"], + scopes: ["example"] + }, + promo: { + description: "Собирает сводку по задачам Jira и присылает её в чат", + published: true, + promoImages: ["example"] + } +} +const response = client.bots.updateBot(1738816, request) +// → BotResponse({ id: number, name: string, nickname: string, avatarUrl: string | null, creatorId: number | null, createdAt: string, authorizedUsersCount: number, lastUsedAt: string | null, webhook: BotWebhook({ name: string, nickname: string, outgoingUrl: string | null, events: BotEventName[], triggerOn: BotTriggerOn, commands: string[], scopes: string[], template: string | null, templateEngine: BotTemplateEngine, challengeKey: string | null, linkPreviewEnabled: boolean, ignoreSelfMessages: boolean, eventsHistoryEnabled: boolean, singleChat: boolean, canEdit: BotCanEdit[], whoCanAdd: BotWhoCanAdd, kind: BotWebhookKind | null, unfurlDomains: string[], lastRequestAt: string | null }), oauthClientEnabled: boolean, oauthClient: BotOAuthClient({ clientId: string, clientSecretPreview: string, confidential: boolean, redirectUris: string[], scopes: string[] }) | null, promo: BotPromo({ description: string | null, published: boolean, promoImages: BotPromoImage({ key: string, url: string })[] }) | null, permissions: BotPermissions({ updateOauthClient: boolean, recreateToken: boolean, destroy: boolean }), clientSecret?: string }) +``` + +### Python + +```python +from pachca.client import PachcaClient +from pachca.models import BotCanEdit, BotEventName, BotOAuthClientRequest, BotPromoRequest, BotTemplateEngine, BotTriggerOn, BotUpdateRequest, BotUpdateRequestWebhook, BotWebhookKind, BotWhoCanAdd + +client = PachcaClient("YOUR_TOKEN") + +request = BotUpdateRequest( + webhook=BotUpdateRequestWebhook( + name="Бот задач", + nickname="tasks_bot", + outgoing_url="https://www.website.com/tasks/new", + events=[BotEventName.MESSAGE_NEW], + trigger_on=BotTriggerOn.COMMANDS, + commands=["example"], + scopes=["example"], + template="Заказ от {{ client }} на сумму {{ amount }} ₽", + template_engine=BotTemplateEngine.LIQUID, + challenge_key="challenge", + link_preview_enabled=True, + ignore_self_messages=False, + events_history_enabled=False, + who_can_add=BotWhoCanAdd.CREATOR, + can_edit=[BotCanEdit.ADMIN], + single_chat=False, + kind=BotWebhookKind.SIMPLE, + unfurl_domains=["example"] + ), + oauth_client=BotOAuthClientRequest( + confidential=True, + redirect_uris=["example"], + scopes=["example"] + ), + promo=BotPromoRequest( + description="Собирает сводку по задачам Jira и присылает её в чат", + published=True, + promo_images=["example"] + ) +) +response = await client.bots.update_bot(id=1738816, request=request) +# → BotResponse(id: int, name: str, nickname: str, avatar_url: str | None, creator_id: int | None, created_at: datetime, authorized_users_count: int, last_used_at: datetime | None, webhook: BotWebhook(name: str, nickname: str, outgoing_url: str | None, events: list[BotEventName], trigger_on: BotTriggerOn, commands: list[str], scopes: list[str], template: str | None, template_engine: BotTemplateEngine, challenge_key: str | None, link_preview_enabled: bool, ignore_self_messages: bool, events_history_enabled: bool, single_chat: bool, can_edit: list[BotCanEdit], who_can_add: BotWhoCanAdd, kind: BotWebhookKind | None, unfurl_domains: list[str], last_request_at: datetime | None), oauth_client_enabled: bool, oauth_client: BotOAuthClient(client_id: str, client_secret_preview: str, confidential: bool, redirect_uris: list[str], scopes: list[str]) | None, promo: BotPromo(description: str | None, published: bool, promo_images: list[BotPromoImage(key: str, url: str)]) | None, permissions: BotPermissions(update_oauth_client: bool, recreate_token: bool, destroy: bool), client_secret: str | None) +``` + +--- + +--- [Document source](https://dev.pachca.com/api/bots/delete.md) --- + +# Удаление бота + +**Метод**: `DELETE` + +**Путь**: `/bots/{id}` + +> **Скоуп:** `bots:write` + +Убирает бота из пространства насовсем. Все токены бота сразу перестают работать, как и авторизации, выданные ему сотрудниками. Бот исключается из всех чатов, его вебхуки удаляются, страница в витрине тоже. + +Удаление доступно создателю бота, а также администратору пространства, если настройки бота открывают администраторам доступ к редактированию. Владельцы и администраторы чатов удалять бота не могут, даже если им разрешено его редактировать. + +## Параметры + +### Path параметры + +- `id: integer, int32` (required) — Идентификатор бота + + +## Пример запроса + +```bash +curl -X DELETE "https://api.pachca.com/api/shared/v1/bots/1738816" \ + -H "Authorization: Bearer YOUR_ACCESS_TOKEN" +``` + +## Ответы + +### 204: There is no content to send for this request, but the headers may be useful. + +### 401: Access is unauthorized. + +**Схема ответа при ошибке:** + - `error: string` (required) — Код ошибки. Пример: `"invalid_token"` - `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` @@ -31207,7 +33487,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/bots/1738816" \ } ``` -### 404: The server cannot find the requested resource. +### 402: Client error **Схема ответа при ошибке:** @@ -31216,7 +33496,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/bots/1738816" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -31237,7 +33517,1759 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/bots/1738816" \ } ``` -### 422: Client error +### 403: Access is forbidden. + +**Схема ответа при ошибке:** + +- `error: string` (required) — Код ошибки. Пример: `"invalid_token"` +- `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` + +**Пример ответа:** + +```json +{ + "error": "invalid_token", + "error_description": "Access token is missing" +} +``` + +### 404: The server cannot find the requested resource. + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + + +## SDK примеры + +### TypeScript + +```typescript +import { PachcaClient } from "@pachca/sdk" + +const client = new PachcaClient("YOUR_TOKEN") + +client.bots.deleteBot(1738816) +``` + +### Python + +```python +from pachca.client import PachcaClient + +client = PachcaClient("YOUR_TOKEN") + +await client.bots.delete_bot(id=1738816) +``` + +--- + +--- [Document source](https://dev.pachca.com/api/bots/recreate-token.md) --- + +# Ротация токена бота + +**Метод**: `POST` + +**Путь**: `/bots/{id}/recreate_token` + +> **Скоуп:** `bots:write` + +Метод генерирует боту новый `access_token` и сразу инвалидирует прежний. Используйте его при компрометации токена или плановой ротации секрета в `CI`. + +Перевыпускается основной токен бота — тот, что без имени, а если такого нет, самый старый. Отдельный токен перевыпускает [Перевыпуск токена бота](/api/bots/reissue-token). + +Новый токен возвращается в ответе только один раз — сохраните его сразу. Права у него те же: скоупы переносятся с прежнего токена. + +Ротация доступна создателю бота, а также администратору пространства, если настройки бота открывают администраторам доступ к редактированию. Владелец чата, где состоит бот, ротировать токен не может, даже когда остальные настройки бота ему открыты. + +## Параметры + +### Path параметры + +- `id: integer, int32` (required) — Идентификатор бота + + +## Пример запроса + +```bash +curl -X POST "https://api.pachca.com/api/shared/v1/bots/1738816/recreate_token" \ + -H "Authorization: Bearer YOUR_ACCESS_TOKEN" +``` + +## Ответы + +### 200: The request has succeeded. + +**Схема ответа:** + +- `data: object` (required) — Параметры созданного бота + - `id: integer, int32` (required) — Идентификатор бота (совпадает с `user_id` бота). Пример: `1738816` + - `name: string` (required) — Имя бота. Пример: `"Бот задач"` + - `nickname: string` (required) — Никнейм бота. Пример: `"tasks_bot"` + - `avatar_url: string` (required, nullable) — Ссылка на аватар бота. `null`, если аватар не задан. Пример: `"https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg"` + - `creator_id: integer, int32` (required, nullable) — Идентификатор сотрудника, создавшего бота. `null`, если создатель не записан. Пример: `12` + - `created_at: date-time` (required) — Дата и время создания бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2025-05-15T14:30:00.000Z"` + - `authorized_users_count: integer, int32` (required) — Сколько сотрудников авторизовали бота. Пример: `3` + - `last_used_at: date-time` (required, nullable) — Дата и время, когда бот последний раз работал (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ: запрос на входящий вебхук или вызов API любым токеном бота, включая токены сотрудников. `null`, если такого не было. Использование токена учитывается не чаще раза в час. Пример: `"2025-05-15T14:30:00.000Z"` + - `webhook: object` (required) — Объект параметров вебхука + - `name: string` (required, max length: 255) — Имя бота. Пример: `"Бот задач"` + - `nickname: string` (required, max length: 255) — Никнейм бота. Пример: `"tasks_bot"` + - `outgoing_url: string` (required, nullable) — URL исходящего вебхука. `null`, если исходящий вебхук у бота не настроен. Пример: `"https://www.website.com/tasks/new"` + - `events: array of string` (required) — События, на которые подписан бот. Пример: `["message_new"]` + - `trigger_on: string` (required) — Условие срабатывания исходящего вебхука + Значения: `commands` — Только на команды (триггер-слова) из commands, `all_messages` — На все сообщения в чатах, где есть бот, `unfurl` — На развёртывание ссылок (link previews) + - `commands: array of string` (required) — Команды бота (триггер-слова). Пример: `["/task"]` + - `scopes: array of string` (required) — Скоупы (права доступа) токена бота. Набор по умолчанию шире того, что можно назначить явно, поэтому здесь могут встречаться значения, недоступные для явной установки. Пример: `["messages:create"]` + - `template: string` (required, nullable) — Шаблон форматирования входящего вебхука. `null`, если не задан. Пример: `"Заказ от {{ client }} на сумму {{ amount }} ₽"` + - `template_engine: string` (required) — Шаблонизатор для обработки шаблона входящего вебхука + Значения: `liquid` — Liquid — условия, циклы и фильтры, `mustache` — Mustache — простая подстановка без логики + - `challenge_key: string` (required, nullable) — Название поля проверки для верификации входящего вебхука. `null`, если не задано. Пример: `"challenge"` + - `link_preview_enabled: boolean` (required) — Показывать превью ссылок в сообщениях входящего вебхука. Пример: `true` + - `ignore_self_messages: boolean` (required) — Игнорировать входящие сообщения, отправленные самим ботом. Пример: `false` + - `events_history_enabled: boolean` (required) — Сохранять историю событий бота для последующего получения через метод истории событий. Пример: `false` + - `single_chat: boolean` (required) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false` + - `can_edit: array of string` (required) — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `["admin"]` + - `who_can_add: string` (required) — Кто может добавлять бота в чаты + Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей + - `kind: string` (required) — Источник входящего вебхука. `null`, если входящий вебхук у бота выключен. + Значения: `simple` — Свой формат: сообщение собирается из тела запроса по шаблону бота, `gitlab` — GitLab: Пачка сама разбирает запрос и собирает сообщение, `grafana` — Grafana: Пачка сама разбирает запрос и собирает сообщение + - `unfurl_domains: array of string` (required) — Домены, ссылки на которые бот разворачивает. Пример: `["example.com"]` + - `last_request_at: date-time` (required, nullable) — Дата и время последнего запроса на входящий вебхук бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если запросов не было. Пример: `"2025-05-15T14:30:00.000Z"` + - `oauth_client_enabled: boolean` (required) — Включена ли у бота авторизация от имени сотрудника. Пример: `true` + - `oauth_client: object` (required) — Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией, поэтому включена ли она, смотрите в `oauth_client_enabled`. У бота без токенов может прийти `null`. + - `client_id: string` (required) — Идентификатор клиента для ссылки авторизации. Пример: `"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY"` + - `client_secret_preview: string` (required) — Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета. Пример: `"cH5kR9mN...x7Qp"` + - `confidential: boolean` (required) — Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE. Пример: `true` + - `redirect_uris: array of string` (required) — Адреса возврата после согласия. Пример: `["https://example.com/oauth/callback"]` + - `scopes: array of string` (required) — Права, которые бот запрашивает у сотрудника на экране согласия. Пример: `["messages:read","messages:create"]` + - `promo: object` (required) — Страница бота в витрине. `null`, если авторизация у бота выключена. + - `description: string` (required, nullable) — Описание бота. `null`, если не задано. Пример: `"Собирает сводку по задачам Jira и присылает её в чат"` + - `published: boolean` (required) — Опубликован ли бот в витрине. Пример: `true` + - `promo_images: array of object` (required) — Скриншоты страницы бота + - `key: string` (required) — Ключ изображения. Пример: `"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"` + - `url: string` (required) — Ссылка на изображение. Пример: `"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"` + - `permissions: object` (required) — Что вы можете делать с этим ботом + - `update_oauth_client: boolean` (required) — Менять авторизацию от имени сотрудника, страницу в витрине и имя бота. Пример: `true` + - `recreate_token: boolean` (required) — Выпускать, менять и удалять токены бота и обновлять секрет клиента. Пример: `true` + - `destroy: boolean` (required) — Удалить бота. Пример: `true` + - `client_secret: string` — Секрет клиента. Приходит один раз: при включении серверного клиента, при переходе на него и при ротации секрета. Пример: `"dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA"` + - `access_token: string` — Токен доступа бота. Возвращается при создании бота и при ротации токена. Не приходит, если бот создан с `empty: true`. Пример: `"bm90X2FfcmVhbF90b2tlbg"` + +**Пример ответа:** + +```json +{ + "data": { + "id": 1738816, + "name": "Бот задач", + "nickname": "tasks_bot", + "avatar_url": null, + "creator_id": 12, + "created_at": "2025-05-15T14:30:00.000Z", + "authorized_users_count": 3, + "last_used_at": "2025-05-20T09:15:00.000Z", + "webhook": { + "name": "Бот задач", + "nickname": "tasks_bot", + "outgoing_url": "https://www.website.com/tasks/new", + "events": [ + "message_new" + ], + "trigger_on": "commands", + "commands": [ + "/task" + ], + "scopes": [ + "messages:create" + ], + "template": "Заказ от {{ client }} на сумму {{ amount }} ₽", + "template_engine": "liquid", + "challenge_key": "challenge", + "link_preview_enabled": true, + "ignore_self_messages": false, + "events_history_enabled": false, + "single_chat": false, + "can_edit": [ + "admin" + ], + "who_can_add": "creator", + "kind": "simple", + "unfurl_domains": [], + "last_request_at": "2025-05-20T09:15:00.000Z" + }, + "oauth_client_enabled": true, + "oauth_client": { + "client_id": "aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY", + "client_secret_preview": "dGhpc19p...ZWNy", + "confidential": true, + "redirect_uris": [ + "https://example.com/oauth/callback" + ], + "scopes": [ + "messages:read", + "messages:create" + ] + }, + "promo": { + "description": "Собирает сводку по задачам и присылает её в чат", + "published": true, + "promo_images": [] + }, + "permissions": { + "update_oauth_client": true, + "recreate_token": true, + "destroy": true + }, + "access_token": "bm90X2FfcmVhbF90b2tlbg" + } +} +``` + +### 401: Access is unauthorized. + +**Схема ответа при ошибке:** + +- `error: string` (required) — Код ошибки. Пример: `"invalid_token"` +- `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` + +**Пример ответа:** + +```json +{ + "error": "invalid_token", + "error_description": "Access token is missing" +} +``` + +### 402: Client error + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + +### 403: Access is forbidden. + +**Схема ответа при ошибке:** + +- `error: string` (required) — Код ошибки. Пример: `"invalid_token"` +- `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` + +**Пример ответа:** + +```json +{ + "error": "invalid_token", + "error_description": "Access token is missing" +} +``` + +### 404: The server cannot find the requested resource. + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + + +## SDK примеры + +### TypeScript + +```typescript +import { PachcaClient } from "@pachca/sdk" + +const client = new PachcaClient("YOUR_TOKEN") + +const response = client.bots.recreateBotToken(1738816) +// → BotCreateResponse({ id: number, name: string, nickname: string, avatarUrl: string | null, creatorId: number | null, createdAt: string, authorizedUsersCount: number, lastUsedAt: string | null, webhook: BotWebhook({ name: string, nickname: string, outgoingUrl: string | null, events: BotEventName[], triggerOn: BotTriggerOn, commands: string[], scopes: string[], template: string | null, templateEngine: BotTemplateEngine, challengeKey: string | null, linkPreviewEnabled: boolean, ignoreSelfMessages: boolean, eventsHistoryEnabled: boolean, singleChat: boolean, canEdit: BotCanEdit[], whoCanAdd: BotWhoCanAdd, kind: BotWebhookKind | null, unfurlDomains: string[], lastRequestAt: string | null }), oauthClientEnabled: boolean, oauthClient: BotOAuthClient({ clientId: string, clientSecretPreview: string, confidential: boolean, redirectUris: string[], scopes: string[] }) | null, promo: BotPromo({ description: string | null, published: boolean, promoImages: BotPromoImage({ key: string, url: string })[] }) | null, permissions: BotPermissions({ updateOauthClient: boolean, recreateToken: boolean, destroy: boolean }), clientSecret?: string, accessToken?: string }) +``` + +### Python + +```python +from pachca.client import PachcaClient + +client = PachcaClient("YOUR_TOKEN") + +response = await client.bots.recreate_bot_token(id=1738816) +# → BotCreateResponse(id: int, name: str, nickname: str, avatar_url: str | None, creator_id: int | None, created_at: datetime, authorized_users_count: int, last_used_at: datetime | None, webhook: BotWebhook(name: str, nickname: str, outgoing_url: str | None, events: list[BotEventName], trigger_on: BotTriggerOn, commands: list[str], scopes: list[str], template: str | None, template_engine: BotTemplateEngine, challenge_key: str | None, link_preview_enabled: bool, ignore_self_messages: bool, events_history_enabled: bool, single_chat: bool, can_edit: list[BotCanEdit], who_can_add: BotWhoCanAdd, kind: BotWebhookKind | None, unfurl_domains: list[str], last_request_at: datetime | None), oauth_client_enabled: bool, oauth_client: BotOAuthClient(client_id: str, client_secret_preview: str, confidential: bool, redirect_uris: list[str], scopes: list[str]) | None, promo: BotPromo(description: str | None, published: bool, promo_images: list[BotPromoImage(key: str, url: str)]) | None, permissions: BotPermissions(update_oauth_client: bool, recreate_token: bool, destroy: bool), client_secret: str | None, access_token: str | None) +``` + +--- + +--- [Document source](https://dev.pachca.com/api/bots/rotate-client-secret.md) --- + +# Ротация секрета клиента + +**Метод**: `POST` + +**Путь**: `/bots/{id}/rotate_client_secret` + +> **Скоуп:** `bots:write` + +Выпускает новый `client_secret` для авторизации от имени сотрудника. Прежний секрет перестаёт работать сразу, поэтому сначала подготовьте бота к замене. Уже выданные авторизации и полученные токены продолжают работать. + +Новый секрет приходит в `client_secret` один раз. Метод работает только у бота с включённой авторизацией и серверным клиентом (`confidential: true`), иначе отвечает `400`. + +Ротация доступна создателю бота, а также администратору пространства, если настройки бота открывают администраторам доступ к редактированию. + +## Параметры + +### Path параметры + +- `id: integer, int32` (required) — Идентификатор бота + + +## Пример запроса + +```bash +curl -X POST "https://api.pachca.com/api/shared/v1/bots/1738816/rotate_client_secret" \ + -H "Authorization: Bearer YOUR_ACCESS_TOKEN" +``` + +## Ответы + +### 200: The request has succeeded. + +**Схема ответа:** + +- `data: object` (required) — Параметры бота + - `id: integer, int32` (required) — Идентификатор бота (совпадает с `user_id` бота). Пример: `1738816` + - `name: string` (required) — Имя бота. Пример: `"Бот задач"` + - `nickname: string` (required) — Никнейм бота. Пример: `"tasks_bot"` + - `avatar_url: string` (required, nullable) — Ссылка на аватар бота. `null`, если аватар не задан. Пример: `"https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg"` + - `creator_id: integer, int32` (required, nullable) — Идентификатор сотрудника, создавшего бота. `null`, если создатель не записан. Пример: `12` + - `created_at: date-time` (required) — Дата и время создания бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2025-05-15T14:30:00.000Z"` + - `authorized_users_count: integer, int32` (required) — Сколько сотрудников авторизовали бота. Пример: `3` + - `last_used_at: date-time` (required, nullable) — Дата и время, когда бот последний раз работал (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ: запрос на входящий вебхук или вызов API любым токеном бота, включая токены сотрудников. `null`, если такого не было. Использование токена учитывается не чаще раза в час. Пример: `"2025-05-15T14:30:00.000Z"` + - `webhook: object` (required) — Объект параметров вебхука + - `name: string` (required, max length: 255) — Имя бота. Пример: `"Бот задач"` + - `nickname: string` (required, max length: 255) — Никнейм бота. Пример: `"tasks_bot"` + - `outgoing_url: string` (required, nullable) — URL исходящего вебхука. `null`, если исходящий вебхук у бота не настроен. Пример: `"https://www.website.com/tasks/new"` + - `events: array of string` (required) — События, на которые подписан бот. Пример: `["message_new"]` + - `trigger_on: string` (required) — Условие срабатывания исходящего вебхука + Значения: `commands` — Только на команды (триггер-слова) из commands, `all_messages` — На все сообщения в чатах, где есть бот, `unfurl` — На развёртывание ссылок (link previews) + - `commands: array of string` (required) — Команды бота (триггер-слова). Пример: `["/task"]` + - `scopes: array of string` (required) — Скоупы (права доступа) токена бота. Набор по умолчанию шире того, что можно назначить явно, поэтому здесь могут встречаться значения, недоступные для явной установки. Пример: `["messages:create"]` + - `template: string` (required, nullable) — Шаблон форматирования входящего вебхука. `null`, если не задан. Пример: `"Заказ от {{ client }} на сумму {{ amount }} ₽"` + - `template_engine: string` (required) — Шаблонизатор для обработки шаблона входящего вебхука + Значения: `liquid` — Liquid — условия, циклы и фильтры, `mustache` — Mustache — простая подстановка без логики + - `challenge_key: string` (required, nullable) — Название поля проверки для верификации входящего вебхука. `null`, если не задано. Пример: `"challenge"` + - `link_preview_enabled: boolean` (required) — Показывать превью ссылок в сообщениях входящего вебхука. Пример: `true` + - `ignore_self_messages: boolean` (required) — Игнорировать входящие сообщения, отправленные самим ботом. Пример: `false` + - `events_history_enabled: boolean` (required) — Сохранять историю событий бота для последующего получения через метод истории событий. Пример: `false` + - `single_chat: boolean` (required) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false` + - `can_edit: array of string` (required) — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `["admin"]` + - `who_can_add: string` (required) — Кто может добавлять бота в чаты + Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей + - `kind: string` (required) — Источник входящего вебхука. `null`, если входящий вебхук у бота выключен. + Значения: `simple` — Свой формат: сообщение собирается из тела запроса по шаблону бота, `gitlab` — GitLab: Пачка сама разбирает запрос и собирает сообщение, `grafana` — Grafana: Пачка сама разбирает запрос и собирает сообщение + - `unfurl_domains: array of string` (required) — Домены, ссылки на которые бот разворачивает. Пример: `["example.com"]` + - `last_request_at: date-time` (required, nullable) — Дата и время последнего запроса на входящий вебхук бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если запросов не было. Пример: `"2025-05-15T14:30:00.000Z"` + - `oauth_client_enabled: boolean` (required) — Включена ли у бота авторизация от имени сотрудника. Пример: `true` + - `oauth_client: object` (required) — Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией, поэтому включена ли она, смотрите в `oauth_client_enabled`. У бота без токенов может прийти `null`. + - `client_id: string` (required) — Идентификатор клиента для ссылки авторизации. Пример: `"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY"` + - `client_secret_preview: string` (required) — Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета. Пример: `"cH5kR9mN...x7Qp"` + - `confidential: boolean` (required) — Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE. Пример: `true` + - `redirect_uris: array of string` (required) — Адреса возврата после согласия. Пример: `["https://example.com/oauth/callback"]` + - `scopes: array of string` (required) — Права, которые бот запрашивает у сотрудника на экране согласия. Пример: `["messages:read","messages:create"]` + - `promo: object` (required) — Страница бота в витрине. `null`, если авторизация у бота выключена. + - `description: string` (required, nullable) — Описание бота. `null`, если не задано. Пример: `"Собирает сводку по задачам Jira и присылает её в чат"` + - `published: boolean` (required) — Опубликован ли бот в витрине. Пример: `true` + - `promo_images: array of object` (required) — Скриншоты страницы бота + - `key: string` (required) — Ключ изображения. Пример: `"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"` + - `url: string` (required) — Ссылка на изображение. Пример: `"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"` + - `permissions: object` (required) — Что вы можете делать с этим ботом + - `update_oauth_client: boolean` (required) — Менять авторизацию от имени сотрудника, страницу в витрине и имя бота. Пример: `true` + - `recreate_token: boolean` (required) — Выпускать, менять и удалять токены бота и обновлять секрет клиента. Пример: `true` + - `destroy: boolean` (required) — Удалить бота. Пример: `true` + - `client_secret: string` — Секрет клиента. Приходит один раз: при включении серверного клиента, при переходе на него и при ротации секрета. Пример: `"dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA"` + +**Пример ответа:** + +```json +{ + "data": { + "id": 1738816, + "name": "Бот задач", + "nickname": "tasks_bot", + "avatar_url": null, + "creator_id": 12, + "created_at": "2025-05-15T14:30:00.000Z", + "authorized_users_count": 3, + "last_used_at": "2025-05-20T09:15:00.000Z", + "webhook": { + "name": "Бот задач", + "nickname": "tasks_bot", + "outgoing_url": "https://www.website.com/tasks/new", + "events": [ + "message_new" + ], + "trigger_on": "commands", + "commands": [ + "/task" + ], + "scopes": [ + "messages:create" + ], + "template": "Заказ от {{ client }} на сумму {{ amount }} ₽", + "template_engine": "liquid", + "challenge_key": "challenge", + "link_preview_enabled": true, + "ignore_self_messages": false, + "events_history_enabled": false, + "single_chat": false, + "can_edit": [ + "admin" + ], + "who_can_add": "creator", + "kind": "simple", + "unfurl_domains": [], + "last_request_at": "2025-05-20T09:15:00.000Z" + }, + "oauth_client_enabled": true, + "oauth_client": { + "client_id": "aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY", + "client_secret_preview": "dGhpc19p...ZWNy", + "confidential": true, + "redirect_uris": [ + "https://example.com/oauth/callback" + ], + "scopes": [ + "messages:read", + "messages:create" + ] + }, + "promo": { + "description": "Собирает сводку по задачам и присылает её в чат", + "published": true, + "promo_images": [] + }, + "permissions": { + "update_oauth_client": true, + "recreate_token": true, + "destroy": true + }, + "client_secret": "dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA" + } +} +``` + +### 400: The server could not understand the request due to invalid syntax. + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + +### 401: Access is unauthorized. + +**Схема ответа при ошибке:** + +- `error: string` (required) — Код ошибки. Пример: `"invalid_token"` +- `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` + +**Пример ответа:** + +```json +{ + "error": "invalid_token", + "error_description": "Access token is missing" +} +``` + +### 402: Client error + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + +### 403: Access is forbidden. + +**Схема ответа при ошибке:** + +**anyOf** - один из вариантов: + +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) + - `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` +- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403) + - `error: string` (required) — Код ошибки. Пример: `"invalid_token"` + - `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + +### 404: The server cannot find the requested resource. + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + + +## SDK примеры + +### TypeScript + +```typescript +import { PachcaClient } from "@pachca/sdk" + +const client = new PachcaClient("YOUR_TOKEN") + +const response = client.bots.rotateBotClientSecret(1738816) +// → BotResponse({ id: number, name: string, nickname: string, avatarUrl: string | null, creatorId: number | null, createdAt: string, authorizedUsersCount: number, lastUsedAt: string | null, webhook: BotWebhook({ name: string, nickname: string, outgoingUrl: string | null, events: BotEventName[], triggerOn: BotTriggerOn, commands: string[], scopes: string[], template: string | null, templateEngine: BotTemplateEngine, challengeKey: string | null, linkPreviewEnabled: boolean, ignoreSelfMessages: boolean, eventsHistoryEnabled: boolean, singleChat: boolean, canEdit: BotCanEdit[], whoCanAdd: BotWhoCanAdd, kind: BotWebhookKind | null, unfurlDomains: string[], lastRequestAt: string | null }), oauthClientEnabled: boolean, oauthClient: BotOAuthClient({ clientId: string, clientSecretPreview: string, confidential: boolean, redirectUris: string[], scopes: string[] }) | null, promo: BotPromo({ description: string | null, published: boolean, promoImages: BotPromoImage({ key: string, url: string })[] }) | null, permissions: BotPermissions({ updateOauthClient: boolean, recreateToken: boolean, destroy: boolean }), clientSecret?: string }) +``` + +### Python + +```python +from pachca.client import PachcaClient + +client = PachcaClient("YOUR_TOKEN") + +response = await client.bots.rotate_bot_client_secret(id=1738816) +# → BotResponse(id: int, name: str, nickname: str, avatar_url: str | None, creator_id: int | None, created_at: datetime, authorized_users_count: int, last_used_at: datetime | None, webhook: BotWebhook(name: str, nickname: str, outgoing_url: str | None, events: list[BotEventName], trigger_on: BotTriggerOn, commands: list[str], scopes: list[str], template: str | None, template_engine: BotTemplateEngine, challenge_key: str | None, link_preview_enabled: bool, ignore_self_messages: bool, events_history_enabled: bool, single_chat: bool, can_edit: list[BotCanEdit], who_can_add: BotWhoCanAdd, kind: BotWebhookKind | None, unfurl_domains: list[str], last_request_at: datetime | None), oauth_client_enabled: bool, oauth_client: BotOAuthClient(client_id: str, client_secret_preview: str, confidential: bool, redirect_uris: list[str], scopes: list[str]) | None, promo: BotPromo(description: str | None, published: bool, promo_images: list[BotPromoImage(key: str, url: str)]) | None, permissions: BotPermissions(update_oauth_client: bool, recreate_token: bool, destroy: bool), client_secret: str | None) +``` + +--- + +--- [Document source](https://dev.pachca.com/api/bots/list-scopes.md) --- + +# Каталог прав бота + +**Метод**: `GET` + +**Путь**: `/bots/{id}/scopes` + +> **Скоуп:** `bots:read` + +Права, которые можно выдать этому боту: его токенам и авторизации от имени сотрудника. У каждого права есть описание, категория и готовые наборы, в которые оно входит, как при выборе прав в интерфейсе. + +Каталог доступен тем же, кто видит токены бота: создателю бота, а также администратору пространства, если настройки бота открывают администраторам доступ к редактированию. + +## Параметры + +### Path параметры + +- `id: integer, int32` (required) — Идентификатор бота + + +## Пример запроса + +```bash +curl "https://api.pachca.com/api/shared/v1/bots/1738816/scopes" \ + -H "Authorization: Bearer YOUR_ACCESS_TOKEN" +``` + +## Ответы + +### 200: The request has succeeded. + +**Схема ответа:** + +- `scopes: array of object` (required) — Права, доступные боту + - `id: string` (required) — Право. Пример: `"messages:create"` + - `title: string` (required) — Описание права. Пример: `"Отправка сообщений"` + - `group: string` (required) — Категория права, `id` из `groups`. Пример: `"messages"` + - `preset: array of string` (required) — Наборы, в которые входит право, `id` из `presets`. Пример: `["admin"]` +- `groups: array of object` (required) — Категории прав + - `id: string` (required) — Идентификатор категории. Пример: `"messages"` + - `title: string` (required) — Название категории. Пример: `"Сообщения"` + - `description: string` (required) — Описание категории. Пример: `"Работа с сообщениями"` +- `presets: array of object` (required) — Готовые наборы прав + - `id: string` (required) — Идентификатор набора: `read-only` или `admin`. Пример: `"read-only"` + - `title: string` (required) — Название набора. Пример: `"Только чтение"` + +**Пример ответа:** + +```json +{ + "scopes": [ + { + "id": "messages:create", + "title": "Отправка сообщений", + "group": "messages", + "preset": [ + "admin" + ] + } + ], + "groups": [ + { + "id": "messages", + "title": "Сообщения", + "description": "Работа с сообщениями" + } + ], + "presets": [ + { + "id": "read-only", + "title": "Только чтение" + }, + { + "id": "admin", + "title": "Администратор" + } + ] +} +``` + +### 401: Access is unauthorized. + +**Схема ответа при ошибке:** + +- `error: string` (required) — Код ошибки. Пример: `"invalid_token"` +- `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` + +**Пример ответа:** + +```json +{ + "error": "invalid_token", + "error_description": "Access token is missing" +} +``` + +### 402: Client error + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + +### 403: Access is forbidden. + +**Схема ответа при ошибке:** + +**anyOf** - один из вариантов: + +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) + - `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` +- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403) + - `error: string` (required) — Код ошибки. Пример: `"invalid_token"` + - `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + +### 404: The server cannot find the requested resource. + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + + +## SDK примеры + +### TypeScript + +```typescript +import { PachcaClient } from "@pachca/sdk" + +const client = new PachcaClient("YOUR_TOKEN") + +const response = client.bots.getBotScopes(1738816) +// → BotScopeCatalog({ scopes: BotScopeCatalogItem({ id: string, title: string, group: string, preset: string[] })[], groups: BotScopeCatalogGroup({ id: string, title: string, description: string })[], presets: BotScopeCatalogPreset({ id: string, title: string })[] }) +``` + +### Python + +```python +from pachca.client import PachcaClient + +client = PachcaClient("YOUR_TOKEN") + +response = await client.bots.get_bot_scopes(id=1738816) +# → BotScopeCatalog(scopes: list[BotScopeCatalogItem(id: str, title: str, group: str, preset: list[str])], groups: list[BotScopeCatalogGroup(id: str, title: str, description: str)], presets: list[BotScopeCatalogPreset(id: str, title: str)]) +``` + +--- + +--- [Document source](https://dev.pachca.com/api/bots/list-tokens.md) --- + +# Список токенов бота + +**Метод**: `GET` + +**Путь**: `/bots/{id}/tokens` + +> **Скоуп:** `bots:read` + +Действующие токены бота: основной, выпущенный вместе с ботом, и отдельные — со своим именем и правами. Значение токена здесь замаскировано: полностью его показывают один раз, при выпуске и перевыпуске. + +Работать с токенами бота могут только его создатель и администратор пространства, если настройки бота открывают администраторам доступ к редактированию. Владельцу чата с ботом метод отвечает `403`, даже когда остальные настройки бота ему открыты. + +## Параметры + +### Path параметры + +- `id: integer, int32` (required) — Идентификатор бота + +### Query параметры + +- `limit: integer, int32` (default: 50) — Количество возвращаемых сущностей за один запрос +- `cursor: string` — Курсор для пагинации (из `meta.paginate.next_page`) + + +## Пример запроса + +```bash +# Для получения следующей страницы используйте cursor из meta.paginate.next_page +curl "https://api.pachca.com/api/shared/v1/bots/1738816/tokens?limit=1" \ + -H "Authorization: Bearer YOUR_ACCESS_TOKEN" +``` + +## Ответы + +### 200: The request has succeeded. + +**Схема ответа:** + +- `data: array of object` (required) + - `id: integer, int64` (required) — Идентификатор токена. Пример: `4827` + - `token: string` (required) — Токен в маскированном виде (видны первые 8 и последние 4 символа). Полное значение приходит один раз: при выпуске и перевыпуске токена. Пример: `"cH5kR9mN...x7Qp"` + - `name: string` (required, nullable) — Имя токена. `null` у токена, выпущенного без имени. Пример: `"Сервер уведомлений"` + - `user_id: integer, int64` (required) — Идентификатор бота, которому принадлежит токен. Пример: `1738816` + - `scopes: array of string` (required) — Права токена. Пример: `["messages:create","chats:read"]` + - `created_at: date-time` (required) — Дата и время выпуска токена (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2025-01-15T10:30:00.000Z"` + - `revoked_at: date-time` (required, nullable) — Дата отзыва токена. Всегда `null`: отозванные токены в ответ не попадают. Пример: `null` + - `expires_in: integer, int32` (required, nullable) — Время жизни токена в секундах. У токенов бота `null`: они бессрочные. Пример: `null` + - `last_used_at: date-time` (required, nullable) — Дата последнего использования токена. `null`, пока по токену не было ни одного запроса. Обновляется не чаще раза в час, поэтому может отставать. Пример: `"2025-02-24T14:20:00.000Z"` + - `authorized_at: date-time` (required, nullable) — Дата авторизации. У токенов бота `null`. Пример: `null` +- `meta: object` (required) — Метаданные пагинации + - `paginate: object` (required) — Вспомогательная информация + - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `"eyJxZCO2MiwiZGlyIjomSNYjIn3"` + - `prev_page: string` — Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка. Пример: `"eyJxZCO2MiwiZGlyIjoiYXNjIn0"` + - `has_next: boolean` — Есть ли ещё данные на следующей странице. На последней странице — `false`. Пример: `true` + - `has_prev: boolean` — Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`. Пример: `false` + +**Пример ответа:** + +```json +{ + "data": [ + { + "id": 4827, + "token": "cH5kR9mN...x7Qp", + "name": "Сервер уведомлений", + "user_id": 1738816, + "scopes": [ + "messages:create", + "chats:read" + ], + "created_at": "2025-01-15T10:30:00.000Z", + "revoked_at": null, + "expires_in": null, + "last_used_at": "2025-02-24T14:20:00.000Z", + "authorized_at": null + } + ], + "meta": { + "paginate": { + "next_page": "eyJpZCI6NDgyN30" + } + } +} +``` + +### 400: The server could not understand the request due to invalid syntax. + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + +### 401: Access is unauthorized. + +**Схема ответа при ошибке:** + +- `error: string` (required) — Код ошибки. Пример: `"invalid_token"` +- `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` + +**Пример ответа:** + +```json +{ + "error": "invalid_token", + "error_description": "Access token is missing" +} +``` + +### 402: Client error + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + +### 403: Access is forbidden. + +**Схема ответа при ошибке:** + +**anyOf** - один из вариантов: + +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) + - `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` +- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403) + - `error: string` (required) — Код ошибки. Пример: `"invalid_token"` + - `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + +### 404: The server cannot find the requested resource. + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + + +## SDK примеры + +### TypeScript + +```typescript +import { PachcaClient } from "@pachca/sdk" + +const client = new PachcaClient("YOUR_TOKEN") + +const response = client.bots.listBotTokens(1738816, { limit: 1, cursor: "eyJpZCI6NDgyN30" }) +// → ListBotTokensResponse({ data: BotAccessToken[], meta: PaginationMeta }) +``` + +### Python + +```python +from pachca.client import PachcaClient +from pachca.models import ListBotTokensParams + +client = PachcaClient("YOUR_TOKEN") + +params = ListBotTokensParams(limit=1, cursor="eyJpZCI6NDgyN30") +response = await client.bots.list_bot_tokens(id=1738816, params=params) +# → ListBotTokensResponse(data: list[BotAccessToken], meta: PaginationMeta) +``` + +--- + +--- [Document source](https://dev.pachca.com/api/bots/create-token.md) --- + +# Новый токен бота + +**Метод**: `POST` + +**Путь**: `/bots/{id}/tokens` + +> **Скоуп:** `bots:write` + +Выпускает боту ещё один токен со своим именем и правами. Токенов у бота может быть несколько: например, отдельный на каждый сервис, чтобы отзывать их по одному. + +Значение токена приходит в ответе один раз — сохраните его сразу. Токен бессрочный и работает, пока его не удалят. + +Права выбирают из тех, что можно выдать боту: их перечисляет [Каталог прав бота](/api/bots/list-scopes). На право не из каталога метод отвечает `400`. Без `scopes` токен выпускается без прав. + +Работать с токенами бота могут только его создатель и администратор пространства, если настройки бота открывают администраторам доступ к редактированию. Владельцу чата с ботом метод отвечает `403`, даже когда остальные настройки бота ему открыты. + +## Параметры + +### Path параметры + +- `id: integer, int32` (required) — Идентификатор бота + + +## Тело запроса + +**Обязательно** + +Формат: `application/json` + +### Схема + +- `name: string` (required, max length: 255) — Имя токена: по нему токены различают в списке. Пример: `"Сервер уведомлений"` +- `scopes: array of string` — Права токена. Доступны только права, которые можно выдать боту. Если не передать, токен выпускается без прав. Пример: `["messages:create","chats:read"]` + +### Пример + +```json +{ + "name": "Сервер уведомлений", + "scopes": [ + "messages:create", + "chats:read" + ] +} +``` + +## Пример запроса + +```bash +curl "https://api.pachca.com/api/shared/v1/bots/1738816/tokens" \ + -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ + -H "Content-Type: application/json" \ + -d '{ + "name": "Сервер уведомлений", + "scopes": [ + "messages:create", + "chats:read" + ] +}' +``` + +## Ответы + +### 201: The request has succeeded and a new resource has been created as a result. + +**Схема ответа:** + +- `data: object` (required) — Токен бота + - `id: integer, int64` (required) — Идентификатор токена. Пример: `4827` + - `token: string` (required) — Токен в маскированном виде (видны первые 8 и последние 4 символа). Полное значение приходит один раз: при выпуске и перевыпуске токена. Пример: `"cH5kR9mN...x7Qp"` + - `name: string` (required, nullable) — Имя токена. `null` у токена, выпущенного без имени. Пример: `"Сервер уведомлений"` + - `user_id: integer, int64` (required) — Идентификатор бота, которому принадлежит токен. Пример: `1738816` + - `scopes: array of string` (required) — Права токена. Пример: `["messages:create","chats:read"]` + - `created_at: date-time` (required) — Дата и время выпуска токена (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2025-01-15T10:30:00.000Z"` + - `revoked_at: date-time` (required, nullable) — Дата отзыва токена. Всегда `null`: отозванные токены в ответ не попадают. Пример: `null` + - `expires_in: integer, int32` (required, nullable) — Время жизни токена в секундах. У токенов бота `null`: они бессрочные. Пример: `null` + - `last_used_at: date-time` (required, nullable) — Дата последнего использования токена. `null`, пока по токену не было ни одного запроса. Обновляется не чаще раза в час, поэтому может отставать. Пример: `"2025-02-24T14:20:00.000Z"` + - `authorized_at: date-time` (required, nullable) — Дата авторизации. У токенов бота `null`. Пример: `null` + +**Пример ответа:** + +```json +{ + "data": { + "id": 4827, + "token": "bm90X2FfcmVhbF90b2tlbg", + "name": "Сервер уведомлений", + "user_id": 1738816, + "scopes": [ + "messages:create", + "chats:read" + ], + "created_at": "2025-01-15T10:30:00.000Z", + "revoked_at": null, + "expires_in": null, + "last_used_at": null, + "authorized_at": null + } +} +``` + +### 400: The server could not understand the request due to invalid syntax. + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + +### 401: Access is unauthorized. + +**Схема ответа при ошибке:** + +- `error: string` (required) — Код ошибки. Пример: `"invalid_token"` +- `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` + +**Пример ответа:** + +```json +{ + "error": "invalid_token", + "error_description": "Access token is missing" +} +``` + +### 402: Client error + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + +### 403: Access is forbidden. + +**Схема ответа при ошибке:** + +**anyOf** - один из вариантов: + +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) + - `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` +- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403) + - `error: string` (required) — Код ошибки. Пример: `"invalid_token"` + - `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + +### 404: The server cannot find the requested resource. + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + + +## SDK примеры + +### TypeScript + +```typescript +import { BotTokenCreateRequest, PachcaClient } from "@pachca/sdk" + +const client = new PachcaClient("YOUR_TOKEN") + +const request: BotTokenCreateRequest = { name: "Сервер уведомлений", scopes: ["example"] } +const response = client.bots.createBotToken(1738816, request) +// → BotAccessToken({ id: number, token: string, name: string | null, userId: number, scopes: string[], createdAt: string, revokedAt: string | null, expiresIn: number | null, lastUsedAt: string | null, authorizedAt: string | null }) +``` + +### Python + +```python +from pachca.client import PachcaClient +from pachca.models import BotTokenCreateRequest + +client = PachcaClient("YOUR_TOKEN") + +request = BotTokenCreateRequest(name="Сервер уведомлений", scopes=["example"]) +response = await client.bots.create_bot_token(id=1738816, request=request) +# → BotAccessToken(id: int, token: str, name: str | None, user_id: int, scopes: list[str], created_at: datetime, revoked_at: datetime | None, expires_in: int | None, last_used_at: datetime | None, authorized_at: datetime | None) +``` + +--- + +--- [Document source](https://dev.pachca.com/api/bots/update-token.md) --- + +# Изменение токена бота + +**Метод**: `PUT` + +**Путь**: `/bots/{id}/tokens/{token_id}` + +> **Скоуп:** `bots:write` + +Меняет имя или права токена. Новые права действуют сразу: перевыпускать токен не нужно, его значение остаётся прежним. Права заменяются переданным списком целиком. + +Работать с токенами бота могут только его создатель и администратор пространства, если настройки бота открывают администраторам доступ к редактированию. Владельцу чата с ботом метод отвечает `403`, даже когда остальные настройки бота ему открыты. + +## Параметры + +### Path параметры + +- `id: integer, int32` (required) — Идентификатор бота +- `token_id: integer, int64` (required) — Идентификатор токена + + +## Тело запроса + +**Обязательно** + +Формат: `application/json` + +### Схема + +- `name: string` (max length: 255) — Новое имя токена. Пример: `"Сервер уведомлений"` +- `scopes: array of string` — Новые права токена. Список заменяется целиком и действует сразу, перевыпускать токен не нужно. Пример: `["messages:create","chats:read"]` + +### Пример + +```json +{ + "name": "Сервер уведомлений", + "scopes": [ + "messages:create", + "chats:read" + ] +} +``` + +## Пример запроса + +```bash +curl -X PUT "https://api.pachca.com/api/shared/v1/bots/1738816/tokens/4827" \ + -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ + -H "Content-Type: application/json" \ + -d '{ + "name": "Сервер уведомлений", + "scopes": [ + "messages:create", + "chats:read" + ] +}' +``` + +## Ответы + +### 200: The request has succeeded. + +**Схема ответа:** + +- `data: object` (required) — Токен бота + - `id: integer, int64` (required) — Идентификатор токена. Пример: `4827` + - `token: string` (required) — Токен в маскированном виде (видны первые 8 и последние 4 символа). Полное значение приходит один раз: при выпуске и перевыпуске токена. Пример: `"cH5kR9mN...x7Qp"` + - `name: string` (required, nullable) — Имя токена. `null` у токена, выпущенного без имени. Пример: `"Сервер уведомлений"` + - `user_id: integer, int64` (required) — Идентификатор бота, которому принадлежит токен. Пример: `1738816` + - `scopes: array of string` (required) — Права токена. Пример: `["messages:create","chats:read"]` + - `created_at: date-time` (required) — Дата и время выпуска токена (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2025-01-15T10:30:00.000Z"` + - `revoked_at: date-time` (required, nullable) — Дата отзыва токена. Всегда `null`: отозванные токены в ответ не попадают. Пример: `null` + - `expires_in: integer, int32` (required, nullable) — Время жизни токена в секундах. У токенов бота `null`: они бессрочные. Пример: `null` + - `last_used_at: date-time` (required, nullable) — Дата последнего использования токена. `null`, пока по токену не было ни одного запроса. Обновляется не чаще раза в час, поэтому может отставать. Пример: `"2025-02-24T14:20:00.000Z"` + - `authorized_at: date-time` (required, nullable) — Дата авторизации. У токенов бота `null`. Пример: `null` + +**Пример ответа:** + +```json +{ + "data": { + "id": 4827, + "token": "cH5kR9mN...x7Qp", + "name": "Сервер уведомлений", + "user_id": 1738816, + "scopes": [ + "messages:create", + "chats:read" + ], + "created_at": "2025-01-15T10:30:00.000Z", + "revoked_at": null, + "expires_in": null, + "last_used_at": "2025-02-24T14:20:00.000Z", + "authorized_at": null + } +} +``` + +### 400: The server could not understand the request due to invalid syntax. + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + +### 401: Access is unauthorized. + +**Схема ответа при ошибке:** + +- `error: string` (required) — Код ошибки. Пример: `"invalid_token"` +- `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` + +**Пример ответа:** + +```json +{ + "error": "invalid_token", + "error_description": "Access token is missing" +} +``` + +### 402: Client error + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + +### 403: Access is forbidden. + +**Схема ответа при ошибке:** + +**anyOf** - один из вариантов: + +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) + - `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` +- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403) + - `error: string` (required) — Код ошибки. Пример: `"invalid_token"` + - `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + +### 404: The server cannot find the requested resource. + +**Схема ответа при ошибке:** + +- `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` + +**Пример ответа:** + +```json +{ + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] +} +``` + + +## SDK примеры + +### TypeScript + +```typescript +import { BotTokenUpdateRequest, PachcaClient } from "@pachca/sdk" + +const client = new PachcaClient("YOUR_TOKEN") + +const request: BotTokenUpdateRequest = { name: "Сервер уведомлений", scopes: ["example"] } +const response = client.bots.updateBotToken(1738816, 4827, request) +// → BotAccessToken({ id: number, token: string, name: string | null, userId: number, scopes: string[], createdAt: string, revokedAt: string | null, expiresIn: number | null, lastUsedAt: string | null, authorizedAt: string | null }) +``` + +### Python + +```python +from pachca.client import PachcaClient +from pachca.models import BotTokenUpdateRequest + +client = PachcaClient("YOUR_TOKEN") + +request = BotTokenUpdateRequest(name="Сервер уведомлений", scopes=["example"]) +response = await client.bots.update_bot_token(id=1738816, token_id=4827, request=request) +# → BotAccessToken(id: int, token: str, name: str | None, user_id: int, scopes: list[str], created_at: datetime, revoked_at: datetime | None, expires_in: int | None, last_used_at: datetime | None, authorized_at: datetime | None) +``` + +--- + +--- [Document source](https://dev.pachca.com/api/bots/delete-token.md) --- + +# Удаление токена бота + +**Метод**: `DELETE` + +**Путь**: `/bots/{id}/tokens/{token_id}` + +> **Скоуп:** `bots:write` + +Удаляет токен: запросы с ним сразу перестают проходить. Остальные токены бота продолжают работать. + +Работать с токенами бота могут только его создатель и администратор пространства, если настройки бота открывают администраторам доступ к редактированию. Владельцу чата с ботом метод отвечает `403`, даже когда остальные настройки бота ему открыты. + +## Параметры + +### Path параметры + +- `id: integer, int32` (required) — Идентификатор бота +- `token_id: integer, int64` (required) — Идентификатор токена + + +## Пример запроса + +```bash +curl -X DELETE "https://api.pachca.com/api/shared/v1/bots/1738816/tokens/4827" \ + -H "Authorization: Bearer YOUR_ACCESS_TOKEN" +``` + +## Ответы + +### 204: There is no content to send for this request, but the headers may be useful. + +### 401: Access is unauthorized. + +**Схема ответа при ошибке:** + +- `error: string` (required) — Код ошибки. Пример: `"invalid_token"` +- `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` + +**Пример ответа:** + +```json +{ + "error": "invalid_token", + "error_description": "Access token is missing" +} +``` + +### 402: Client error **Схема ответа при ошибке:** @@ -31246,7 +35278,7 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/bots/1738816" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -31267,133 +35299,25 @@ curl -X PUT "https://api.pachca.com/api/shared/v1/bots/1738816" \ } ``` - -## SDK примеры - -### TypeScript - -```typescript -import { BotCanEdit, BotEventName, BotTemplateEngine, BotTriggerOn, BotUpdateRequest, BotUpdateRequestWebhook, BotWhoCanAdd, PachcaClient } from "@pachca/sdk" - -const client = new PachcaClient("YOUR_TOKEN") - -const request: BotUpdateRequest = { - webhook: { - name: "Бот задач", - nickname: "tasks_bot", - outgoingUrl: "https://www.website.com/tasks/new", - events: [BotEventName.MessageNew], - triggerOn: BotTriggerOn.Commands, - commands: ["example"], - scopes: ["example"], - template: "Заказ от {{ client }} на сумму {{ amount }} ₽", - templateEngine: BotTemplateEngine.Liquid, - challengeKey: "challenge", - linkPreviewEnabled: true, - ignoreSelfMessages: false, - eventsHistoryEnabled: false, - whoCanAdd: BotWhoCanAdd.Creator, - canEdit: [BotCanEdit.Admin] - } -} -const response = client.bots.updateBot(1738816, request) -// → BotResponse({ id: number, webhook: BotWebhook({ name: string, nickname: string, outgoingUrl: string | null, events: BotEventName[], triggerOn: BotTriggerOn, commands: string[], scopes: string[], template: string | null, templateEngine: BotTemplateEngine, challengeKey: string | null, linkPreviewEnabled: boolean, ignoreSelfMessages: boolean, eventsHistoryEnabled: boolean, singleChat: boolean, canEdit: BotCanEdit[], whoCanAdd: BotWhoCanAdd }) }) -``` - -### Python - -```python -from pachca.client import PachcaClient -from pachca.models import BotCanEdit, BotEventName, BotTemplateEngine, BotTriggerOn, BotUpdateRequest, BotUpdateRequestWebhook, BotWhoCanAdd - -client = PachcaClient("YOUR_TOKEN") - -request = BotUpdateRequest( - webhook=BotUpdateRequestWebhook( - name="Бот задач", - nickname="tasks_bot", - outgoing_url="https://www.website.com/tasks/new", - events=[BotEventName.MESSAGE_NEW], - trigger_on=BotTriggerOn.COMMANDS, - commands=["example"], - scopes=["example"], - template="Заказ от {{ client }} на сумму {{ amount }} ₽", - template_engine=BotTemplateEngine.LIQUID, - challenge_key="challenge", - link_preview_enabled=True, - ignore_self_messages=False, - events_history_enabled=False, - who_can_add=BotWhoCanAdd.CREATOR, - can_edit=[BotCanEdit.ADMIN] - ) -) -response = await client.bots.update_bot(id=1738816, request=request) -# → BotResponse(id: int, webhook: BotWebhook(name: str, nickname: str, outgoing_url: str | None, events: list[BotEventName], trigger_on: BotTriggerOn, commands: list[str], scopes: list[str], template: str | None, template_engine: BotTemplateEngine, challenge_key: str | None, link_preview_enabled: bool, ignore_self_messages: bool, events_history_enabled: bool, single_chat: bool, can_edit: list[BotCanEdit], who_can_add: BotWhoCanAdd)) -``` - ---- - ---- [Document source](https://dev.pachca.com/api/bots/delete.md) --- - -# Удаление бота - -**Метод**: `DELETE` - -**Путь**: `/bots/{id}` - -> **Скоуп:** `bots:write` - -Убирает бота из пространства насовсем. Прежний `access_token` бота сразу инвалидируется, бот исключается из всех чатов, его исходящий вебхук удаляется. - -Удаление доступно создателю бота, а также администратору пространства, если настройки бота открывают администраторам доступ к редактированию. Владельцы и администраторы чатов удалять бота не могут, даже если им разрешено его редактировать. - -## Параметры - -### Path параметры - -- `id: integer, int32` (required) — Идентификатор бота - - -## Пример запроса - -```bash -curl -X DELETE "https://api.pachca.com/api/shared/v1/bots/1738816" \ - -H "Authorization: Bearer YOUR_ACCESS_TOKEN" -``` - -## Ответы - -### 204: There is no content to send for this request, but the headers may be useful. - -### 401: Access is unauthorized. +### 403: Access is forbidden. **Схема ответа при ошибке:** -- `error: string` (required) — Код ошибки. Пример: `"invalid_token"` -- `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` - -**Пример ответа:** - -```json -{ - "error": "invalid_token", - "error_description": "Access token is missing" -} -``` - -### 402: Client error - -**Схема ответа при ошибке:** +**anyOf** - один из вариантов: -- `errors: array of object` (required) — Массив ошибок - - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` - - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` - **Структура значений Record:** - - Тип значения: `any` +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) + - `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` +- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403) + - `error: string` (required) — Код ошибки. Пример: `"invalid_token"` + - `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` **Пример ответа:** @@ -31411,22 +35335,6 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/bots/1738816" \ } ``` -### 403: Access is forbidden. - -**Схема ответа при ошибке:** - -- `error: string` (required) — Код ошибки. Пример: `"invalid_token"` -- `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` - -**Пример ответа:** - -```json -{ - "error": "invalid_token", - "error_description": "Access token is missing" -} -``` - ### 404: The server cannot find the requested resource. **Схема ответа при ошибке:** @@ -31436,7 +35344,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/bots/1738816" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -31467,7 +35375,7 @@ import { PachcaClient } from "@pachca/sdk" const client = new PachcaClient("YOUR_TOKEN") -client.bots.deleteBot(1738816) +client.bots.deleteBotToken(1738816, 4827) ``` ### Python @@ -31477,39 +35385,39 @@ from pachca.client import PachcaClient client = PachcaClient("YOUR_TOKEN") -await client.bots.delete_bot(id=1738816) +await client.bots.delete_bot_token(id=1738816, token_id=4827) ``` --- ---- [Document source](https://dev.pachca.com/api/bots/recreate-token.md) --- +--- [Document source](https://dev.pachca.com/api/bots/reissue-token.md) --- -# Ротация токена бота +# Перевыпуск токена бота **Метод**: `POST` -**Путь**: `/bots/{id}/recreate_token` +**Путь**: `/bots/{id}/tokens/{token_id}/reissue` > **Скоуп:** `bots:write` -Метод генерирует боту новый `access_token` и сразу инвалидирует прежний. Используйте его при компрометации токена или плановой ротации секрета в `CI`. - -Новый токен возвращается в ответе только один раз — сохраните его сразу. Права у него те же: скоупы переносятся с прежнего токена. +Заменяет значение токена новым: прежнее сразу перестаёт работать, имя и права остаются. Новое значение приходит в ответе один раз — сохраните его сразу. +Метод нужен, когда токен утёк или его меняют по плану. Основной токен бота перевыпускает и [Ротация токена бота](/api/bots/recreate-token). -Ротация доступна создателю бота, а также администратору пространства, если настройки бота открывают администраторам доступ к редактированию. Владелец чата, где состоит бот, ротировать токен не может, даже когда остальные настройки бота ему открыты. +Работать с токенами бота могут только его создатель и администратор пространства, если настройки бота открывают администраторам доступ к редактированию. Владельцу чата с ботом метод отвечает `403`, даже когда остальные настройки бота ему открыты. ## Параметры ### Path параметры - `id: integer, int32` (required) — Идентификатор бота +- `token_id: integer, int64` (required) — Идентификатор токена ## Пример запроса ```bash -curl -X POST "https://api.pachca.com/api/shared/v1/bots/1738816/recreate_token" \ +curl -X POST "https://api.pachca.com/api/shared/v1/bots/1738816/tokens/4827/reissue" \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" ``` @@ -31519,63 +35427,36 @@ curl -X POST "https://api.pachca.com/api/shared/v1/bots/1738816/recreate_token" **Схема ответа:** -- `data: object` (required) — Параметры созданного бота - - `id: integer, int32` (required) — Идентификатор бота (совпадает с `user_id` бота). Пример: `1738816` - - `webhook: object` (required) — Объект параметров вебхука - - `name: string` (required, max length: 255) — Имя бота. Пример: `"Бот задач"` - - `nickname: string` (required, max length: 255) — Никнейм бота. Пример: `"tasks_bot"` - - `outgoing_url: string` (required, nullable) — URL исходящего вебхука. `null`, если исходящий вебхук у бота не настроен. Пример: `"https://www.website.com/tasks/new"` - - `events: array of string` (required) — События, на которые подписан бот. Пример: `["message_new"]` - - `trigger_on: string` (required) — Условие срабатывания исходящего вебхука - Значения: `commands` — Только на команды (триггер-слова) из commands, `all_messages` — На все сообщения в чатах, где есть бот, `unfurl` — На развёртывание ссылок (link previews) - - `commands: array of string` (required) — Команды бота (триггер-слова). Пример: `["/task"]` - - `scopes: array of string` (required) — Скоупы (права доступа) токена бота. Набор по умолчанию шире того, что можно назначить явно, поэтому здесь могут встречаться значения, недоступные для явной установки. Пример: `["messages:create"]` - - `template: string` (required, nullable) — Шаблон форматирования входящего вебхука. `null`, если не задан. Пример: `"Заказ от {{ client }} на сумму {{ amount }} ₽"` - - `template_engine: string` (required) — Шаблонизатор для обработки шаблона входящего вебхука - Значения: `liquid` — Liquid — условия, циклы и фильтры, `mustache` — Mustache — простая подстановка без логики - - `challenge_key: string` (required, nullable) — Название поля проверки для верификации входящего вебхука. `null`, если не задано. Пример: `"challenge"` - - `link_preview_enabled: boolean` (required) — Показывать превью ссылок в сообщениях входящего вебхука. Пример: `true` - - `ignore_self_messages: boolean` (required) — Игнорировать входящие сообщения, отправленные самим ботом. Пример: `false` - - `events_history_enabled: boolean` (required) — Сохранять историю событий бота для последующего получения через метод истории событий. Пример: `false` - - `single_chat: boolean` (required) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false` - - `can_edit: array of string` (required) — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `["admin"]` - - `who_can_add: string` (required) — Кто может добавлять бота в чаты - Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Любой пользователь, в том числе гости - - `access_token: string` (required) — Токен доступа бота. Возвращается при создании бота и при ротации токена. Пример: `"bm90X2FfcmVhbF90b2tlbg"` +- `data: object` (required) — Токен бота + - `id: integer, int64` (required) — Идентификатор токена. Пример: `4827` + - `token: string` (required) — Токен в маскированном виде (видны первые 8 и последние 4 символа). Полное значение приходит один раз: при выпуске и перевыпуске токена. Пример: `"cH5kR9mN...x7Qp"` + - `name: string` (required, nullable) — Имя токена. `null` у токена, выпущенного без имени. Пример: `"Сервер уведомлений"` + - `user_id: integer, int64` (required) — Идентификатор бота, которому принадлежит токен. Пример: `1738816` + - `scopes: array of string` (required) — Права токена. Пример: `["messages:create","chats:read"]` + - `created_at: date-time` (required) — Дата и время выпуска токена (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2025-01-15T10:30:00.000Z"` + - `revoked_at: date-time` (required, nullable) — Дата отзыва токена. Всегда `null`: отозванные токены в ответ не попадают. Пример: `null` + - `expires_in: integer, int32` (required, nullable) — Время жизни токена в секундах. У токенов бота `null`: они бессрочные. Пример: `null` + - `last_used_at: date-time` (required, nullable) — Дата последнего использования токена. `null`, пока по токену не было ни одного запроса. Обновляется не чаще раза в час, поэтому может отставать. Пример: `"2025-02-24T14:20:00.000Z"` + - `authorized_at: date-time` (required, nullable) — Дата авторизации. У токенов бота `null`. Пример: `null` **Пример ответа:** ```json { "data": { - "id": 1738816, - "webhook": { - "name": "Бот задач", - "nickname": "tasks_bot", - "outgoing_url": "https://www.website.com/tasks/new", - "events": [ - "message_new" - ], - "trigger_on": "commands", - "commands": [ - "/task" - ], - "scopes": [ - "messages:create" - ], - "template": "Заказ от {{ client }} на сумму {{ amount }} ₽", - "template_engine": "liquid", - "challenge_key": "challenge", - "link_preview_enabled": true, - "ignore_self_messages": false, - "events_history_enabled": false, - "single_chat": false, - "can_edit": [ - "admin" - ], - "who_can_add": "creator" - }, - "access_token": "bm90X2FfcmVhbF90b2tlbg" + "id": 4827, + "token": "bm90X2FfcmVhbF90b2tlbg", + "name": "Сервер уведомлений", + "user_id": 1738816, + "scopes": [ + "messages:create", + "chats:read" + ], + "created_at": "2025-01-15T10:30:00.000Z", + "revoked_at": null, + "expires_in": null, + "last_used_at": "2025-02-24T14:20:00.000Z", + "authorized_at": null } } ``` @@ -31605,7 +35486,7 @@ curl -X POST "https://api.pachca.com/api/shared/v1/bots/1738816/recreate_token" - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -31630,15 +35511,35 @@ curl -X POST "https://api.pachca.com/api/shared/v1/bots/1738816/recreate_token" **Схема ответа при ошибке:** -- `error: string` (required) — Код ошибки. Пример: `"invalid_token"` -- `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` +**anyOf** - один из вариантов: + +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) + - `errors: array of object` (required) — Массив ошибок + - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` + - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` + - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` + - `code: string` (required) — Код ошибки + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` + **Структура значений Record:** + - Тип значения: `any` +- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403) + - `error: string` (required) — Код ошибки. Пример: `"invalid_token"` + - `error_description: string` (required) — Описание ошибки. Пример: `"Access token is missing"` **Пример ответа:** ```json { - "error": "invalid_token", - "error_description": "Access token is missing" + "errors": [ + { + "key": "field.name", + "value": "invalid_value", + "message": "Поле не может быть пустым", + "code": "blank", + "payload": null + } + ] } ``` @@ -31651,7 +35552,7 @@ curl -X POST "https://api.pachca.com/api/shared/v1/bots/1738816/recreate_token" - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -31682,8 +35583,8 @@ import { PachcaClient } from "@pachca/sdk" const client = new PachcaClient("YOUR_TOKEN") -const response = client.bots.recreateBotToken(1738816) -// → BotCreateResponse({ id: number, webhook: BotWebhook({ name: string, nickname: string, outgoingUrl: string | null, events: BotEventName[], triggerOn: BotTriggerOn, commands: string[], scopes: string[], template: string | null, templateEngine: BotTemplateEngine, challengeKey: string | null, linkPreviewEnabled: boolean, ignoreSelfMessages: boolean, eventsHistoryEnabled: boolean, singleChat: boolean, canEdit: BotCanEdit[], whoCanAdd: BotWhoCanAdd }), accessToken: string }) +const response = client.bots.reissueBotToken(1738816, 4827) +// → BotAccessToken({ id: number, token: string, name: string | null, userId: number, scopes: string[], createdAt: string, revokedAt: string | null, expiresIn: number | null, lastUsedAt: string | null, authorizedAt: string | null }) ``` ### Python @@ -31693,8 +35594,8 @@ from pachca.client import PachcaClient client = PachcaClient("YOUR_TOKEN") -response = await client.bots.recreate_bot_token(id=1738816) -# → BotCreateResponse(id: int, webhook: BotWebhook(name: str, nickname: str, outgoing_url: str | None, events: list[BotEventName], trigger_on: BotTriggerOn, commands: list[str], scopes: list[str], template: str | None, template_engine: BotTemplateEngine, challenge_key: str | None, link_preview_enabled: bool, ignore_self_messages: bool, events_history_enabled: bool, single_chat: bool, can_edit: list[BotCanEdit], who_can_add: BotWhoCanAdd), access_token: str) +response = await client.bots.reissue_bot_token(id=1738816, token_id=4827) +# → BotAccessToken(id: int, token: str, name: str | None, user_id: int, scopes: list[str], created_at: datetime, revoked_at: datetime | None, expires_in: int | None, last_used_at: datetime | None, authorized_at: datetime | None) ``` --- @@ -31740,6 +35641,12 @@ curl "https://api.pachca.com/api/shared/v1/company/bots?query=задач&limit=1 - `data: array of object` (required) - `id: integer, int32` (required) — Идентификатор бота (совпадает с `user_id` бота). Пример: `1738816` + - `oauth_client: object` (required) — Параметры авторизации от имени сотрудника. `null` у бота, недоступного вам для редактирования. Может прийти и у бота с выключенной авторизацией, а у бота без токенов может прийти `null`. + - `client_id: string` (required) — Идентификатор клиента для ссылки авторизации. Пример: `"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY"` + - `client_secret_preview: string` (required) — Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета. Пример: `"cH5kR9mN...x7Qp"` + - `confidential: boolean` (required) — Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE. Пример: `true` + - `redirect_uris: array of string` (required) — Адреса возврата после согласия. Пример: `["https://example.com/oauth/callback"]` + - `scopes: array of string` (required) — Права, которые бот запрашивает у сотрудника на экране согласия. Пример: `["messages:read","messages:create"]` - `webhook: object` (required) — Объект параметров вебхука - `name: string` (required, max length: 255) — Имя бота. Пример: `"Бот задач"` - `nickname: string` (required, max length: 255) — Никнейм бота. Пример: `"tasks_bot"` @@ -31759,7 +35666,7 @@ curl "https://api.pachca.com/api/shared/v1/company/bots?query=задач&limit=1 - `single_chat: boolean` (required, nullable) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false` - `can_edit: array of string` (required, nullable) — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `["admin"]` - `who_can_add: string` (required) — Кто может добавлять бота в чаты - Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Любой пользователь, в том числе гости + Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей - `meta: object` (required) — Метаданные пагинации - `paginate: object` (required) — Вспомогательная информация - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `"eyJxZCO2MiwiZGlyIjomSNYjIn3"` @@ -31774,6 +35681,18 @@ curl "https://api.pachca.com/api/shared/v1/company/bots?query=задач&limit=1 "data": [ { "id": 1738816, + "oauth_client": { + "client_id": "aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY", + "client_secret_preview": "dGhpc19p...ZWNy", + "confidential": true, + "redirect_uris": [ + "https://example.com/oauth/callback" + ], + "scopes": [ + "messages:read", + "messages:create" + ] + }, "webhook": { "name": "Бот задач", "nickname": "tasks_bot", @@ -31803,6 +35722,7 @@ curl "https://api.pachca.com/api/shared/v1/company/bots?query=задач&limit=1 }, { "id": 1738817, + "oauth_client": null, "webhook": { "name": "Бот релизов", "nickname": "release_bot", @@ -31840,7 +35760,7 @@ curl "https://api.pachca.com/api/shared/v1/company/bots?query=задач&limit=1 - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -31886,7 +35806,7 @@ curl "https://api.pachca.com/api/shared/v1/company/bots?query=задач&limit=1 - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -31913,13 +35833,13 @@ curl "https://api.pachca.com/api/shared/v1/company/bots?query=задач&limit=1 **anyOf** - один из вариантов: -- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422) +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) - `errors: array of object` (required) — Массив ошибок - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -31992,7 +35912,7 @@ response = await client.bots.list_company_bots(params=params) Журнал событий бота: то же самое, что уходит в исходящий вебхук, но забирается запросом. Метод нужен, когда принимать вебхуки на свой адрес нельзя — обработчик недоступен из интернета, поднимается не всегда или пишется прямо сейчас. -Журнал ведётся, только когда в настройках бота включён пункт «Сохранять историю событий» во вкладке «Исходящий webhook». Адрес вебхука при этом можно не указывать вовсе, а если он указан, событие и уедет на него, и ляжет в журнал. +Журнал ведётся, только когда в настройках бота включён пункт «Сохранять историю событий» на вкладке «Исходящий вебхук». Адрес вебхука при этом можно не указывать вовсе, а если он указан, событие и уедет на него, и ляжет в журнал. Метод работает только с токеном бота: у личного токена своего журнала нет. События отдаются от новых к старым, идентификатор события — строка, а не число. @@ -32114,6 +36034,12 @@ curl "https://api.pachca.com/api/shared/v1/webhooks/events?limit=1" \ - `domain: string` (required) — Домен ссылки. Пример: `"example.com"` - `skip: boolean` (required) — Признак того, что автор сообщения скрыл превью для этой ссылки. Если `true` — бот не должен создавать превью. Пример: `false` - `user_id: integer, int32` (required) — Идентификатор отправителя сообщения. Пример: `2345` + - `entity_type: string` (required) — Тип сущности, к которой относится сообщение со ссылкой + Значения: `discussion` — Беседа или канал, `thread` — Тред, `user` — Пользователь + - `entity_id: integer, int32` (required, nullable) — Идентификатор сущности: беседы или канала, треда. В личной переписке `null`: бот в ней не участвует, и собеседника ему не раскрывают. Пример: `23438` + - `thread: object` (required) — Тред, в котором отправлено сообщение со ссылкой. `null`, если сообщение отправлено не в треде. + - `message_id: integer, int32` (required, nullable) — Идентификатор сообщения, к которому был создан тред. `null` у треда без сообщения-родителя — такие создаёт [Новый самостоятельный тред](/api/threads/create). Пример: `12345` + - `message_chat_id: integer, int32` (required, nullable) — Идентификатор чата сообщения, к которому был создан тред. `null` у треда без сообщения-родителя. Пример: `67890` - `created_at: date-time` (required) — Дата и время создания сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2024-09-18T19:53:14.000Z"` - `webhook_timestamp: integer, int32` (required) — Дата и время отправки вебхука (UTC+0) в формате UNIX. Пример: `1726685594` - **VideoCallWebhookPayload**: Структура исходящего вебхука о видеозвонке @@ -32199,7 +36125,7 @@ curl "https://api.pachca.com/api/shared/v1/webhooks/events?limit=1" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -32245,7 +36171,7 @@ curl "https://api.pachca.com/api/shared/v1/webhooks/events?limit=1" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -32291,7 +36217,7 @@ curl "https://api.pachca.com/api/shared/v1/webhooks/events?limit=1" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -32398,7 +36324,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/webhooks/events/01KAJZ2XDSS - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -32444,7 +36370,7 @@ curl -X DELETE "https://api.pachca.com/api/shared/v1/webhooks/events/01KAJZ2XDSS - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -32517,7 +36443,7 @@ await client.bots.delete_webhook_event(id="01KAJZ2XDSS2S3DSW9EXJZ0TBV") - `start_time: date-time` — Начальная метка времени, включительно (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Значение, которое не удалось разобрать, фильтр снимает — ответ придёт полным, без ошибки. - `end_time: date-time` — Конечная метка времени, включительно (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Значение, которое не удалось разобрать, фильтр снимает — ответ придёт полным, без ошибки. - `event_key: string` — Фильтр по конкретному типу события - Значения: `user_login`, `user_logout`, `user_2fa_fail`, `user_2fa_success`, `user_2fa_disabled`, `user_created`, `user_deleted`, `user_role_changed`, `user_updated`, `tag_created`, `tag_deleted`, `user_added_to_tag`, `user_removed_from_tag`, `chat_created`, `chat_renamed`, `chat_permission_changed`, `user_chat_join`, `user_chat_leave`, `tag_added_to_chat`, `tag_removed_from_chat`, `message_updated`, `message_deleted`, `message_created`, `reaction_created`, `reaction_deleted`, `thread_created`, `access_token_created`, `access_token_updated`, `access_token_destroy`, `kms_encrypt`, `kms_decrypt`, `audit_events_accessed`, `company_chats_accessed`, `company_bots_accessed`, `dlp_violation_detected`, `search_users_api`, `search_chats_api`, `search_messages_api`, `bot_scopes_updated`, `bot_webhook_settings_updated`, `bot_token_recreated`, `bot_deleted`, `bot_oauth_client_updated`, `oauth_authorization_granted`, `oauth_authorization_revoked`, `oauth_device_authorization_approved`, `oauth_device_authorization_denied`, `video_call_started`, `video_call_finished`, `video_call_recording_ready`, `exchange_disabled` + Значения: `user_login`, `user_logout`, `user_2fa_fail`, `user_2fa_success`, `user_2fa_disabled`, `user_created`, `user_deleted`, `user_role_changed`, `user_updated`, `tag_created`, `tag_deleted`, `user_added_to_tag`, `user_removed_from_tag`, `chat_created`, `chat_renamed`, `chat_permission_changed`, `user_chat_join`, `user_chat_leave`, `tag_added_to_chat`, `tag_removed_from_chat`, `message_updated`, `message_deleted`, `message_created`, `reaction_created`, `reaction_deleted`, `thread_created`, `access_token_created`, `access_token_updated`, `access_token_destroy`, `kms_encrypt`, `kms_decrypt`, `audit_events_accessed`, `company_chats_accessed`, `company_bots_accessed`, `dlp_violation_detected`, `search_users_api`, `search_chats_api`, `search_messages_api`, `bot_scopes_updated`, `bot_webhook_settings_updated`, `bot_token_recreated`, `bot_deleted`, `bot_oauth_client_updated`, `bot_oauth_client_disabled`, `bot_oauth_client_secret_rotated`, `bot_token_created`, `bot_token_updated`, `bot_token_reissued`, `oauth_authorization_granted`, `oauth_authorization_revoked`, `oauth_device_authorization_approved`, `oauth_device_authorization_denied`, `video_call_started`, `video_call_finished`, `video_call_recording_ready`, `exchange_disabled` - `actor_id: string` — Идентификатор пользователя, выполнившего действие - `actor_type: string` — Тип актора - `entity_id: string` — Идентификатор затронутой сущности @@ -32544,7 +36470,7 @@ curl "https://api.pachca.com/api/shared/v1/audit_events?start_time=2025-05-01T09 - `id: string` (required) — Уникальный идентификатор события. Пример: `"a1b2c3d4-5e6f-7g8h-9i10-j11k12l13m14"` - `created_at: date-time` (required) — Дата и время создания события (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2025-05-15T14:30:00.000Z"` - `event_key: string` (required) — Ключ типа события - Значения: `user_login` — Пользователь успешно вошел в систему, `user_logout` — Пользователь вышел из системы, `user_2fa_fail` — Неудачная попытка двухфакторной аутентификации, `user_2fa_success` — Успешная двухфакторная аутентификация, `user_2fa_disabled` — Двухфакторная аутентификация отключена у сотрудника, `user_created` — Создана новая учетная запись пользователя, `user_deleted` — Учетная запись пользователя удалена, `user_role_changed` — Роль пользователя была изменена, `user_updated` — Данные пользователя обновлены, `tag_created` — Создан новый тег, `tag_deleted` — Тег удален, `user_added_to_tag` — Пользователь добавлен в тег, `user_removed_from_tag` — Пользователь удален из тега, `chat_created` — Создан новый чат, `chat_renamed` — Чат переименован, `chat_permission_changed` — Изменены права доступа к чату, `user_chat_join` — Пользователь присоединился к чату, `user_chat_leave` — Пользователь покинул чат, `tag_added_to_chat` — Тег добавлен в чат, `tag_removed_from_chat` — Тег удален из чата, `message_updated` — Сообщение отредактировано, `message_deleted` — Сообщение удалено, `message_created` — Сообщение создано, `reaction_created` — Реакция добавлена, `reaction_deleted` — Реакция удалена, `thread_created` — Тред создан, `access_token_created` — Создан новый токен доступа, `access_token_updated` — Токен доступа обновлен, `access_token_destroy` — Токен доступа удален, `kms_encrypt` — Данные зашифрованы, `kms_decrypt` — Данные расшифрованы, `audit_events_accessed` — Доступ к журналам аудита получен, `company_chats_accessed` — Получен список всех чатов пространства, `company_bots_accessed` — Получен список всех ботов пространства, `dlp_violation_detected` — Срабатывание правила DLP-системы, `search_users_api` — Поиск сотрудников через API, `search_chats_api` — Поиск чатов через API, `search_messages_api` — Поиск сообщений через API, `bot_scopes_updated` — Изменены скоупы токена бота, `bot_webhook_settings_updated` — Изменены настройки исходящего вебхука бота, `bot_token_recreated` — Токен бота перевыпущен (ротация), `bot_deleted` — Бот удалён, `bot_oauth_client_updated` — Изменены параметры OAuth-клиента бота, `oauth_authorization_granted` — Пользователь выдал OAuth-клиенту доступ к своим данным, `oauth_authorization_revoked` — Доступ OAuth-клиента к данным пользователя отозван, `oauth_device_authorization_approved` — Сотрудник подтвердил вход приложения с устройства, `oauth_device_authorization_denied` — Сотрудник отклонил вход приложения с устройства, `video_call_started` — Видеозвонок начат, `video_call_finished` — Видеозвонок завершён, `video_call_recording_ready` — Запись видеозвонка готова, `exchange_disabled` — Отключена интеграция с Exchange + Значения: `user_login` — Пользователь успешно вошел в систему, `user_logout` — Пользователь вышел из системы, `user_2fa_fail` — Неудачная попытка двухфакторной аутентификации, `user_2fa_success` — Успешная двухфакторная аутентификация, `user_2fa_disabled` — Двухфакторная аутентификация отключена у сотрудника, `user_created` — Создана новая учетная запись пользователя, `user_deleted` — Учетная запись пользователя удалена, `user_role_changed` — Роль пользователя была изменена, `user_updated` — Данные пользователя обновлены, `tag_created` — Создан новый тег, `tag_deleted` — Тег удален, `user_added_to_tag` — Пользователь добавлен в тег, `user_removed_from_tag` — Пользователь удален из тега, `chat_created` — Создан новый чат, `chat_renamed` — Чат переименован, `chat_permission_changed` — Изменены права доступа к чату, `user_chat_join` — Пользователь присоединился к чату, `user_chat_leave` — Пользователь покинул чат, `tag_added_to_chat` — Тег добавлен в чат, `tag_removed_from_chat` — Тег удален из чата, `message_updated` — Сообщение отредактировано, `message_deleted` — Сообщение удалено, `message_created` — Сообщение создано, `reaction_created` — Реакция добавлена, `reaction_deleted` — Реакция удалена, `thread_created` — Тред создан, `access_token_created` — Создан новый токен доступа, `access_token_updated` — Токен доступа обновлен, `access_token_destroy` — Токен доступа удален, `kms_encrypt` — Данные зашифрованы, `kms_decrypt` — Данные расшифрованы, `audit_events_accessed` — Доступ к журналам аудита получен, `company_chats_accessed` — Получен список всех чатов пространства, `company_bots_accessed` — Получен список всех ботов пространства, `dlp_violation_detected` — Срабатывание правила DLP-системы, `search_users_api` — Поиск сотрудников через API, `search_chats_api` — Поиск чатов через API, `search_messages_api` — Поиск сообщений через API, `bot_scopes_updated` — Изменены скоупы токена бота, `bot_webhook_settings_updated` — Изменены настройки исходящего вебхука бота, `bot_token_recreated` — Токен бота перевыпущен (ротация), `bot_deleted` — Бот удалён, `bot_oauth_client_updated` — Изменены параметры OAuth-клиента бота, `bot_oauth_client_disabled` — У бота выключена авторизация от имени сотрудника, `bot_oauth_client_secret_rotated` — Обновлён секрет OAuth-клиента бота, `bot_token_created` — Выпущен токен бота, `bot_token_updated` — Изменены имя или скоупы токена бота, `bot_token_reissued` — Отдельный токен бота перевыпущен, `oauth_authorization_granted` — Пользователь выдал OAuth-клиенту доступ к своим данным, `oauth_authorization_revoked` — Доступ OAuth-клиента к данным пользователя отозван, `oauth_device_authorization_approved` — Сотрудник подтвердил вход приложения с устройства, `oauth_device_authorization_denied` — Сотрудник отклонил вход приложения с устройства, `video_call_started` — Видеозвонок начат, `video_call_finished` — Видеозвонок завершён, `video_call_recording_ready` — Запись видеозвонка готова, `exchange_disabled` — Отключена интеграция с Exchange - `entity_id: string` (required) — Идентификатор затронутой сущности. Пример: `"98765"` - `entity_type: string` (required) — Тип затронутой сущности. Пример: `"User"` - `actor_id: string` (required) — Идентификатор пользователя, выполнившего действие. Пример: `"98765"` @@ -32598,17 +36524,23 @@ curl "https://api.pachca.com/api/shared/v1/audit_events?start_time=2025-05-01T09 - `filters: Record` (required) — Применённые фильтры. Возможные ключи зависят от типа поиска: order, sort, created_from, created_to, company_roles (users), active, chat_subtype, personal (chats), chat_ids, user_ids (messages). **Структура значений Record:** - Тип значения: `any` - - **AuditDetailsBot**: При: bot_deleted, bot_token_recreated + - **AuditDetailsBot**: При: bot_deleted, bot_token_recreated, bot_token_created, bot_token_updated, bot_token_reissued - `bot_id: integer, int32` (required) — Идентификатор бота - `actor_id: integer, int32` (required, nullable) — Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора. - **AuditDetailsBotScopes**: При: bot_scopes_updated + - `bot_id: integer, int32` (required) — Идентификатор бота + - `actor_id: integer, int32` (required, nullable) — Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора. - `added_scopes: array of string` (required) — Скоупы, добавленные токену бота - `removed_scopes: array of string` (required) — Скоупы, отозванные у токена бота - **AuditDetailsBotWebhookSettings**: При: bot_webhook_settings_updated + - `bot_id: integer, int32` (required) — Идентификатор бота + - `actor_id: integer, int32` (required, nullable) — Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора. - `changes: Record` (required) — Изменённые настройки вебхука. Ключ — имя настройки (outgoing_url, ignore_self_messages, events_history_enabled), значение — объект с полями previous (прежнее значение) и new (новое значение). **Структура значений Record:** - Тип значения: `any` - **AuditDetailsBotOAuthClient**: При: bot_oauth_client_updated + - `bot_id: integer, int32` (required) — Идентификатор бота + - `actor_id: integer, int32` (required, nullable) — Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора. - `client_id: string` (required) — Идентификатор OAuth-клиента бота - `changes: Record` (required) — Изменённые параметры клиента. Ключ — имя параметра (confidential, redirect_uris, scopes), значение — объект с полями previous (прежнее значение) и new (новое значение). **Структура значений Record:** @@ -32640,6 +36572,16 @@ curl "https://api.pachca.com/api/shared/v1/audit_events?start_time=2025-05-01T09 - `file_id: integer, int32` (required) — Идентификатор файла записи - `duration: integer, int32` (required) — Длительность записи в секундах - `size: integer, int64` (required) — Размер файла записи в байтах + - **AuditDetailsBotOAuthClientSecretRotated**: При: bot_oauth_client_secret_rotated + - `bot_id: integer, int32` (required) — Идентификатор бота + - `actor_id: integer, int32` (required, nullable) — Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора. + - `client_id: string` (required) — Идентификатор OAuth-клиента бота + - **AuditDetailsBotOAuthClientDisabled**: При: bot_oauth_client_disabled + - `bot_id: integer, int32` (required) — Идентификатор бота + - `actor_id: integer, int32` (required, nullable) — Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора. + - `client_id: string` (required) — Идентификатор OAuth-клиента бота + - `deleted_access_tokens_count: integer, int32` (required) — Сколько токенов сотрудников отозвано + - `deleted_access_grants_count: integer, int32` (required) — Сколько неиспользованных кодов авторизации отозвано - `ip_address: string` (required, nullable) — IP-адрес, с которого было выполнено действие. `null` у событий, записанных без запроса пользователя. Пример: `"192.168.1.100"` - `user_agent: string` (required, nullable) — User agent клиента, обрезается до 255 символов. `null` у событий, записанных без запроса пользователя. Пример: `"Pachca/3.60.0 (co.staply.pachca; build:15; iOS 18.5.0) Alamofire/5.0.0"` - `meta: object` (required) — Метаданные пагинации @@ -32687,7 +36629,7 @@ curl "https://api.pachca.com/api/shared/v1/audit_events?start_time=2025-05-01T09 - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -32733,7 +36675,7 @@ curl "https://api.pachca.com/api/shared/v1/audit_events?start_time=2025-05-01T09 - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -32779,7 +36721,7 @@ curl "https://api.pachca.com/api/shared/v1/audit_events?start_time=2025-05-01T09 - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -32917,7 +36859,7 @@ curl "https://api.pachca.com/api/shared/v1/custom_properties?entity_type=User" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -32963,7 +36905,7 @@ curl "https://api.pachca.com/api/shared/v1/custom_properties?entity_type=User" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -33009,7 +36951,7 @@ curl "https://api.pachca.com/api/shared/v1/custom_properties?entity_type=User" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -33212,7 +37154,7 @@ curl "https://api.pachca.com/api/shared/v1/files/3560?target=thumb" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -33258,7 +37200,7 @@ curl "https://api.pachca.com/api/shared/v1/files/3560?target=thumb" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -33285,13 +37227,13 @@ curl "https://api.pachca.com/api/shared/v1/files/3560?target=thumb" \ **anyOf** - один из вариантов: -- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422) +- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) - `errors: array of object` (required) — Массив ошибок - `key: string` (required) — Ключ поля с ошибкой. Пример: `"field.name"` - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -33324,7 +37266,7 @@ curl "https://api.pachca.com/api/shared/v1/files/3560?target=thumb" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` @@ -33452,7 +37394,7 @@ curl -X POST "https://api.pachca.com/api/shared/v1/uploads" \ - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `"invalid_value"` - `message: string` (required) — Сообщение об ошибке. Пример: `"Поле не может быть пустым"` - `code: string` (required) — Код ошибки - Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос + Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null` **Структура значений Record:** - Тип значения: `any` diff --git a/apps/docs/public/llms.txt b/apps/docs/public/llms.txt index f58f13015..37f9a061f 100644 --- a/apps/docs/public/llms.txt +++ b/apps/docs/public/llms.txt @@ -6,9 +6,9 @@ > **Как агенту читать эту доку:** любую страницу можно получить в Markdown — добавь `.md` к URL или пошли заголовок `Accept: text/markdown`. Ссылки в разделах «Частые задачи», «Руководства» и «API-методы» уже ведут на `.md` — запрашивай напрямую. Точечные запросы по API без загрузки всего: `npx -y @pachca/cli api ls`, далее `npx -y @pachca/cli api <МЕТОД> <путь> --describe` (схема — `--spec`, полный референс — `--docs`). -> Полная документация одним файлом: [llms-full.txt](https://dev.pachca.com/llms-full.txt) (~557K токенов — обычно не помещается в контекст целиком). +> Полная документация одним файлом: [llms-full.txt](https://dev.pachca.com/llms-full.txt) (~660K токенов — обычно не помещается в контекст целиком). -> English-only: [llms-en.txt](https://dev.pachca.com/llms-en.txt) (~23K токенов). +> English-only: [llms-en.txt](https://dev.pachca.com/llms-en.txt) (~25K токенов). > Индексы разделов (только нужный срез): [/api/llms.txt](https://dev.pachca.com/api/llms.txt) — методы и основы API, [/guides/llms.txt](https://dev.pachca.com/guides/llms.txt) — руководства. @@ -60,10 +60,10 @@ | CLI Quick Start | Установка, команды, точечная справка по API | 68–86 | | SDK | Типизированные клиенты для 6 языков | 87–113 | | Agent Skills | Скиллы для AI-агентов и установка | 114–137 | -| Руководства | Страницы-руководства (Markdown по `.md`) | 138–202 | -| API-методы | Все эндпоинты, сгруппированы по разделам | 203–324 | -| Обновления | Журнал обновлений по датам | 325–388 | -| Дополнительно | Прочие ссылки и контакты | 389–397 | +| Руководства | Страницы-руководства (Markdown по `.md`) | 138–211 | +| API-методы | Все эндпоинты, сгруппированы по разделам | 212–341 | +| Обновления | Журнал обновлений по датам | 342–406 | +| Дополнительно | Прочие ссылки и контакты | 407–415 | ## CLI Quick Start @@ -144,12 +144,21 @@ C#: new PachcaClient("TOKEN") → await client.Messages.CreateMessage - [AI агенты, Оформление ответов](https://dev.pachca.com/guides/ai-agents/markdown.md): Агент присылает отчёты, ревью и сводки в Markdown — Пачка рендерит .md оформленной карточкой: таблицы, чеклисты, подсветка кода, diff, диаграммы Mermaid. Файлы .html открываются просмотром прямо в переписке - [Треды](https://dev.pachca.com/guides/threads.md): Треды в Пачке для разработчиков: сквозные и самостоятельные треды как уникальная особенность, создание у сообщения (POST /messages/{id}/thread) и без привязки к сообщению (POST /threads), отправка комментариев, добавление участников, видимость родительского чата, нюансы API и поля Message.thread/root_chat_id - [Теги](https://dev.pachca.com/guides/tags.md): Теги в Пачке: тег как состав беседы или канала с автоматической синхронизацией участников, упоминание тега в сообщении и в треде, поле list_tags у сотрудника, правила названий, права и события журнала аудита -- [Боты, Обзор](https://dev.pachca.com/guides/bots/overview.md): Боты в Пачке: что это, типы ботов, доступность в чатах и подмена имени и аватара отправителя в сообщениях -- [Боты, Создание и настройка](https://dev.pachca.com/guides/bots/setup.md): Как создать бота в Пачке: выбор типа, копирование токена, настройка имени и аватара, настройка доступов и вкладок вебхуков и API +- [Боты, Обзор](https://dev.pachca.com/guides/bots/overview.md): Боты в Пачке: сервисный участник пространства, на котором строятся интеграции. Что умеет бот, с чего начать под вашу задачу, где бот находится в интерфейсе, вкладка «Управление» и подмена имени отправителя +- [Боты, Создание бота](https://dev.pachca.com/guides/bots/setup.md): Как создать бота в Пачке: в разделе «Интеграции» или методом API, что настроить сразу после создания и жизненный цикл бота через API +- [Боты, Настройки бота](https://dev.pachca.com/guides/bots/settings.md): Вкладка «Основное» в карточке бота: профиль, ограничение одним чатом, публичный бот, кто может добавлять бота в чаты и редактировать его настройки, удаление бота и те же настройки через API +- [Боты, Токены бота](https://dev.pachca.com/guides/bots/tokens.md): Токены бота в Пачке: несколько токенов со своими правами, выпуск, перевыпуск и удаление на вкладке «API», права самоуправления бота, токены через API и что делать, если токен утёк +- [Боты, Первый диалог с ботом](https://dev.pachca.com/guides/bots/first-contact.md): Как сотрудник начинает разговор с ботом в Пачке и почему бот молчит: личный чат создаётся без события, новый бот слушает только команды. Что настроить заранее и как ответить на первое сообщение - [Боты, Доступы к чатам и сообщениям](https://dev.pachca.com/guides/bots/access.md): Как бот получает доступ к закрытым каналам и беседам, тредам и личным сообщениям в Пачке +- [Боты, Витрина](https://dev.pachca.com/guides/bots/showcase.md): Витрина ботов в Пачке: каталог пространства на вкладке «Обзор» — карточки опубликованных ботов с авторизацией и список публичных ботов. Как опубликовать бота, что на его странице и как сотрудник подключает бота сам - [Боты, Готовые примеры реализации](https://dev.pachca.com/guides/bots/examples.md): Открытые примеры ботов для Пачки: Welcome Bot для приветствия новых сотрудников, Review Bot для интеграции с GitHub Pull Requests и Unfurl-бот для предпросмотра ссылок +- [Авторизация от имени сотрудника, Обзор](https://dev.pachca.com/guides/oauth/overview.md): Авторизация от имени сотрудника: сотрудник выдаёт боту свои права, и бот делает автоматизации в Пачке и связывает её с другими сервисами от его имени. Как это выглядит для сотрудника, где настраивается у бота и какие ограничения действуют +- [Авторизация от имени сотрудника, Чек-лист запуска](https://dev.pachca.com/guides/oauth/checklist.md): Что должно быть включено у бота, чтобы авторизация от имени сотрудника заработала: сотрудник может написать боту, бот узнаёт о сообщении и отвечает кнопкой, вкладка «OAuth» настроена. Что видно, когда чего-то не хватает +- [Авторизация от имени сотрудника, Настройка авторизации](https://dev.pachca.com/guides/oauth/setup.md): Как включить у бота авторизацию от имени сотрудника: где хранится секрет, адреса возврата, client_id и client_secret, запрашиваемый доступ, страница на витрине, отключение и те же настройки через API +- [Авторизация от имени сотрудника, Получение токена](https://dev.pachca.com/guides/oauth/flow.md): Как бот получает токен сотрудника по шагам: ссылка авторизации с state и PKCE, кнопка в сообщении бота, возврат с кодом, обмен кода на токен, проверка сотрудника и обработка отказов. Пример на curl и TypeScript +- [Авторизация от имени сотрудника, Согласие и отзыв](https://dev.pachca.com/guides/oauth/consent.md): Экран согласия при авторизации бота: что видит сотрудник, кто не может выдать доступ, повторная авторизация, список «Авторизации» на странице «API», отзыв доступа и что после него происходит с ботом - [Входящие вебхуки](https://dev.pachca.com/guides/incoming-webhooks.md): Входящие вебхуки в Пачке: отправка сообщений от имени бота одним HTTP POST без API, шаблонизатор для форматирования, интеграции с CI/CD и мониторингом -- [Исходящие вебхуки, Обзор](https://dev.pachca.com/guides/webhook/overview.md): Исходящие вебхуки в Пачке: что это, как настроить и какие настройки доступны на вкладке Исходящий Webhook в боте +- [Исходящие вебхуки, Обзор](https://dev.pachca.com/guides/webhook/overview.md): Исходящие вебхуки в Пачке: что это, как включить и какие настройки доступны на вкладке «Исходящий вебхук» в карточке бота - [Исходящие вебхуки, Настройка и типы событий](https://dev.pachca.com/guides/webhook/events.md): Настройки исходящих вебхуков Пачки и список доступных типов событий: сообщения, реакции, нажатия кнопок, заполнение форм, изменение участников чатов и пространства, отправка ссылок - [Исходящие вебхуки, Безопасность и обработчик](https://dev.pachca.com/guides/webhook/handler.md): Безопасность исходящих вебхуков Пачки: подпись HMAC-SHA256, проверка timestamp, IP-адрес отправителя, примеры обработчика на TypeScript и Python, идемпотентная обработка и доставка - [Исходящие вебхуки, Поллинг](https://dev.pachca.com/guides/webhook/polling.md): Поллинг исходящих вебхуков Пачки через SDK: получение новых событий без публичного webhook URL, дедупликация доставок и пример воркера для локальной разработки @@ -196,7 +205,7 @@ C#: new PachcaClient("TOKEN") → await client.Messages.CreateMessage - [Основы API, Запросы и ответы](https://dev.pachca.com/api/requests-responses.md): Формат запросов и ответов API Пачки: базовый URL, заголовки Authorization и Content-Type, структура JSON-тела, коллекции Postman и Bruno для тестирования - [Основы API, Пагинация](https://dev.pachca.com/api/pagination.md): Пагинация в API Пачки по курсору: две группы методов (списочные и поиск) с разной структурой meta, поля next_page, prev_page, has_next, has_prev, обход всех записей и polling новых данных через prev_page - [Основы API, Загрузка файлов](https://dev.pachca.com/api/file-uploads.md): Файлы в API Пачки: трёхшаговая загрузка через presigned URL S3, типы вложений и их поля, ссылка на скачивание и когда она ведёт не в хранилище, а на адрес API -- [Основы API, Ошибки](https://dev.pachca.com/api/errors.md): Коды ошибок HTTP в API Пачки и структуры тела ответа: ApiError (400/402/403/404/409/410/422) и OAuthError (401/403) с описанием полей и кодов +- [Основы API, Ошибки](https://dev.pachca.com/api/errors.md): Коды ошибок HTTP в API Пачки и структуры тела ответа: ApiError (400/402/403/404/409/410/422/429/503/504) и OAuthError (401/403) с описанием полей и кодов - [Основы API, Лимиты](https://dev.pachca.com/api/limits.md): Лимиты запросов (rate limits) в API Пачки: числа по типам операций, поведение ответа 429, заголовок Retry-After, готовые примеры экспоненциального backoff на TypeScript и Python - [Основы API, Модели](https://dev.pachca.com/api/models.md): Справочник моделей данных Pachca API: свойства и методы, возвращающие каждый объект — сотрудники, чаты, сообщения, черновики, задачи, теги, вебхуки и другие сущности @@ -212,6 +221,7 @@ C#: new PachcaClient("TOKEN") → await client.Messages.CreateMessage - [Редактирование чата](https://dev.pachca.com/api/chats/update.md): PUT /chats/{id} - [Архивация чата](https://dev.pachca.com/api/chats/archive.md): PUT /chats/{id}/archive - [Разархивация чата](https://dev.pachca.com/api/chats/unarchive.md): PUT /chats/{id}/unarchive +- [Отметка чата непрочитанным](https://dev.pachca.com/api/chats/mark-unread.md): PUT /chats/{id}/unread - [Список чатов пространства](https://dev.pachca.com/api/chats/list-company.md): GET /company/chats ## Profile @@ -307,6 +317,13 @@ C#: new PachcaClient("TOKEN") → await client.Messages.CreateMessage - [Редактирование бота](https://dev.pachca.com/api/bots/update.md): PUT /bots/{id} - [Удаление бота](https://dev.pachca.com/api/bots/delete.md): DELETE /bots/{id} - [Ротация токена бота](https://dev.pachca.com/api/bots/recreate-token.md): POST /bots/{id}/recreate_token +- [Ротация секрета клиента](https://dev.pachca.com/api/bots/rotate-client-secret.md): POST /bots/{id}/rotate_client_secret +- [Каталог прав бота](https://dev.pachca.com/api/bots/list-scopes.md): GET /bots/{id}/scopes +- [Список токенов бота](https://dev.pachca.com/api/bots/list-tokens.md): GET /bots/{id}/tokens +- [Новый токен бота](https://dev.pachca.com/api/bots/create-token.md): POST /bots/{id}/tokens +- [Изменение токена бота](https://dev.pachca.com/api/bots/update-token.md): PUT /bots/{id}/tokens/{token_id} +- [Удаление токена бота](https://dev.pachca.com/api/bots/delete-token.md): DELETE /bots/{id}/tokens/{token_id} +- [Перевыпуск токена бота](https://dev.pachca.com/api/bots/reissue-token.md): POST /bots/{id}/tokens/{token_id}/reissue - [Список ботов пространства](https://dev.pachca.com/api/bots/list-company.md): GET /company/bots - [История событий](https://dev.pachca.com/api/bots/list-events.md): GET /webhooks/events - [Удаление события](https://dev.pachca.com/api/bots/remove-event.md): DELETE /webhooks/events/{id} @@ -323,6 +340,7 @@ C#: new PachcaClient("TOKEN") → await client.Messages.CreateMessage - [Получение подписи, ключа и других параметров](https://dev.pachca.com/api/files/uploads.md): POST /uploads ## Обновления +- [01 октября 2026 — Раздел «Интеграции», API ботов, авторизация от имени сотрудника и мульти-гость](https://dev.pachca.com/updates/2026-10-01.md) - [20 сентября 2026 — Черновики и отложенные сообщения](https://dev.pachca.com/updates/2026-09-20.md) - [10 сентября 2026 — Руководство по тегам](https://dev.pachca.com/updates/2026-09-10.md) - [09 сентября 2026 — Ответ на форму через журнал событий и рост суточного предела сообщений](https://dev.pachca.com/updates/2026-09-09.md) diff --git a/apps/docs/public/pachca.postman_collection.json b/apps/docs/public/pachca.postman_collection.json index 0542c5102..1ac78ab26 100644 --- a/apps/docs/public/pachca.postman_collection.json +++ b/apps/docs/public/pachca.postman_collection.json @@ -259,6 +259,44 @@ } } }, + { + "name": "Отметка чата непрочитанным", + "request": { + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "url": { + "raw": "{{baseUrl}}/chats/:id/unread", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "chats", + ":id", + "unread" + ], + "variable": [ + { + "key": "id", + "value": "" + } + ] + }, + "body": { + "mode": "raw", + "raw": "{\n \"message_id\": 1194275\n}", + "options": { + "raw": { + "language": "json" + } + } + } + } + }, { "name": "Список чатов пространства", "request": { @@ -1992,7 +2030,7 @@ }, "body": { "mode": "raw", - "raw": "{\n \"webhook\": {\n \"name\": \"Бот задач\",\n \"nickname\": \"tasks_bot\",\n \"outgoing_url\": \"https://www.website.com/tasks/new\",\n \"events\": [\n \"message_new\"\n ],\n \"trigger_on\": \"commands\",\n \"commands\": [\n \"/task\"\n ],\n \"scopes\": [\n \"messages:create\"\n ]\n }\n}", + "raw": "{\n \"webhook\": {\n \"name\": \"Бот задач\",\n \"nickname\": \"tasks_bot\",\n \"outgoing_url\": \"https://www.website.com/tasks/new\",\n \"events\": [\n \"message_new\"\n ],\n \"trigger_on\": \"commands\",\n \"commands\": [\n \"/task\"\n ],\n \"scopes\": [\n \"messages:create\"\n ]\n },\n \"oauth_client\": {\n \"confidential\": true,\n \"redirect_uris\": [\n \"https://example.com/oauth/callback\"\n ],\n \"scopes\": [\n \"messages:read\",\n \"messages:create\"\n ]\n }\n}", "options": { "raw": { "language": "json" @@ -2052,7 +2090,7 @@ }, "body": { "mode": "raw", - "raw": "{\n \"webhook\": {\n \"name\": \"Бот задач\",\n \"nickname\": \"tasks_bot\",\n \"outgoing_url\": \"https://www.website.com/tasks/new\",\n \"events\": [\n \"message_new\"\n ],\n \"commands\": [\n \"/task\",\n \"/help\"\n ],\n \"scopes\": [\n \"messages:create\"\n ],\n \"template\": \"Заказ от {{ client }} на сумму {{ amount }} ₽\",\n \"challenge_key\": \"challenge\",\n \"can_edit\": [\n \"admin\"\n ]\n }\n}", + "raw": "{\n \"webhook\": {\n \"name\": \"Бот задач\",\n \"nickname\": \"tasks_bot\",\n \"outgoing_url\": \"https://www.website.com/tasks/new\",\n \"events\": [\n \"message_new\"\n ],\n \"commands\": [\n \"/task\",\n \"/help\"\n ],\n \"scopes\": [\n \"messages:create\"\n ],\n \"template\": \"Заказ от {{ client }} на сумму {{ amount }} ₽\",\n \"challenge_key\": \"challenge\",\n \"can_edit\": [\n \"admin\"\n ],\n \"single_chat\": false,\n \"kind\": \"simple\",\n \"unfurl_domains\": [\n \"example.com\"\n ]\n },\n \"oauth_client\": {\n \"confidential\": true,\n \"redirect_uris\": [\n \"https://example.com/oauth/callback\"\n ],\n \"scopes\": [\n \"messages:read\",\n \"messages:create\"\n ]\n },\n \"promo\": {\n \"description\": \"Собирает сводку по задачам Jira и присылает её в чат\",\n \"published\": true,\n \"promo_images\": [\n \"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png\"\n ]\n }\n}", "options": { "raw": { "language": "json" @@ -2108,6 +2146,218 @@ } } }, + { + "name": "Ротация секрета клиента", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{baseUrl}}/bots/:id/rotate_client_secret", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "bots", + ":id", + "rotate_client_secret" + ], + "variable": [ + { + "key": "id", + "value": "" + } + ] + } + } + }, + { + "name": "Каталог прав бота", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{baseUrl}}/bots/:id/scopes", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "bots", + ":id", + "scopes" + ], + "variable": [ + { + "key": "id", + "value": "" + } + ] + } + } + }, + { + "name": "Список токенов бота", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{baseUrl}}/bots/:id/tokens", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "bots", + ":id", + "tokens" + ], + "variable": [ + { + "key": "id", + "value": "" + } + ] + } + } + }, + { + "name": "Новый токен бота", + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "url": { + "raw": "{{baseUrl}}/bots/:id/tokens", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "bots", + ":id", + "tokens" + ], + "variable": [ + { + "key": "id", + "value": "" + } + ] + }, + "body": { + "mode": "raw", + "raw": "{\n \"name\": \"Сервер уведомлений\",\n \"scopes\": [\n \"messages:create\",\n \"chats:read\"\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + } + } + }, + { + "name": "Изменение токена бота", + "request": { + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "url": { + "raw": "{{baseUrl}}/bots/:id/tokens/:token_id", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "bots", + ":id", + "tokens", + ":token_id" + ], + "variable": [ + { + "key": "id", + "value": "" + }, + { + "key": "token_id", + "value": "" + } + ] + }, + "body": { + "mode": "raw", + "raw": "{\n \"name\": \"Сервер уведомлений\",\n \"scopes\": [\n \"messages:create\",\n \"chats:read\"\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + } + } + }, + { + "name": "Удаление токена бота", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{baseUrl}}/bots/:id/tokens/:token_id", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "bots", + ":id", + "tokens", + ":token_id" + ], + "variable": [ + { + "key": "id", + "value": "" + }, + { + "key": "token_id", + "value": "" + } + ] + } + } + }, + { + "name": "Перевыпуск токена бота", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{baseUrl}}/bots/:id/tokens/:token_id/reissue", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "bots", + ":id", + "tokens", + ":token_id", + "reissue" + ], + "variable": [ + { + "key": "id", + "value": "" + }, + { + "key": "token_id", + "value": "" + } + ] + } + } + }, { "name": "Список ботов пространства", "request": { diff --git a/apps/docs/public/skill.md b/apps/docs/public/skill.md index 08fb90624..cd92e0b3a 100644 --- a/apps/docs/public/skill.md +++ b/apps/docs/public/skill.md @@ -46,8 +46,8 @@ Authorization: Bearer ``` **Token types:** -- **Personal token** — acts as a person. It sees the chats, threads and messages that person sees in Pachca, and nothing more. Created in Settings → Automations → API, where you pick its scopes; also obtainable with `pachca auth login`, which takes the whole catalogue trimmed by your role. -- **Bot token** — acts as a service account. It sees every open channel of the workspace, plus closed channels, conversations and threads the bot was added to. Created per-bot in Settings → Automations. +- **Personal token** — acts as a person. It sees the chats, threads and messages that person sees in Pachca, and nothing more. Created in Integrations → API, where you pick its scopes; also obtainable with `pachca auth login`, which takes the whole catalogue trimmed by your role. +- **Bot token** — acts as a service account. It sees every open channel of the workspace, plus closed channels, conversations and threads the bot was added to. Created in the API tab of the bot, under Integrations → Bots; a bot can hold several tokens, each with its own scopes. Scopes decide which methods a token may call; they never widen the data beyond the boundary of the token type. What a token may do also follows the current role of its owner, and that is checked on every request — a lowered role starts answering 403 without the token being touched. @@ -67,6 +67,7 @@ A personal token issued in the interface does not expire. One obtained by `pachc - `PUT /chats/{id}` — Update chat - `PUT /chats/{id}/archive` — Archive chat - `PUT /chats/{id}/unarchive` — Unarchive chat +- `PUT /chats/{id}/unread` — Mark chat unread - `GET /company/chats` — List company chats ### Profile @@ -162,6 +163,13 @@ A personal token issued in the interface does not expire. One obtained by `pachc - `PUT /bots/{id}` — Update bot - `DELETE /bots/{id}` — Delete bot - `POST /bots/{id}/recreate_token` — Recreate bot token +- `POST /bots/{id}/rotate_client_secret` — Rotate bot client secret +- `GET /bots/{id}/scopes` — Get bot scopes +- `GET /bots/{id}/tokens` — List bot tokens +- `POST /bots/{id}/tokens` — Create bot token +- `PUT /bots/{id}/tokens/{token_id}` — Update bot token +- `DELETE /bots/{id}/tokens/{token_id}` — Delete bot token +- `POST /bots/{id}/tokens/{token_id}/reissue` — Reissue bot token - `GET /company/bots` — List company bots - `GET /webhooks/events` — Get webhook events - `DELETE /webhooks/events/{id}` — Delete webhook event @@ -199,9 +207,9 @@ npx -y @pachca/cli --token ### Set up a bot with outgoing webhook -1. Create bot in Pachca UI: Automations → Integrations → Webhook -2. Get `access_token` from bot API settings tab -3. Set Webhook URL to receive events +1. Create bot in Pachca UI: Integrations → Bots → Create bot +2. Create a token on the API tab of the bot — its value is shown once +3. On the Outgoing webhook tab, press Enable, give the URL and pick the events ### Show interactive form to user @@ -254,12 +262,21 @@ Detailed documentation on specific topics is available at: - [AI агенты, Оформление ответов](https://dev.pachca.com/guides/ai-agents/markdown) — Агент присылает отчёты, ревью и сводки в Markdown — Пачка рендерит .md оформленной карточкой: таблицы, чеклисты, подсветка кода, diff, диаграммы Mermaid. Файлы .html открываются просмотром прямо в переписке - [Треды](https://dev.pachca.com/guides/threads) — Треды в Пачке для разработчиков: сквозные и самостоятельные треды как уникальная особенность, создание у сообщения (POST /messages/{id}/thread) и без привязки к сообщению (POST /threads), отправка комментариев, добавление участников, видимость родительского чата, нюансы API и поля Message.thread/root_chat_id - [Теги](https://dev.pachca.com/guides/tags) — Теги в Пачке: тег как состав беседы или канала с автоматической синхронизацией участников, упоминание тега в сообщении и в треде, поле list_tags у сотрудника, правила названий, права и события журнала аудита -- [Боты, Обзор](https://dev.pachca.com/guides/bots/overview) — Боты в Пачке: что это, типы ботов, доступность в чатах и подмена имени и аватара отправителя в сообщениях -- [Боты, Создание и настройка](https://dev.pachca.com/guides/bots/setup) — Как создать бота в Пачке: выбор типа, копирование токена, настройка имени и аватара, настройка доступов и вкладок вебхуков и API +- [Боты, Обзор](https://dev.pachca.com/guides/bots/overview) — Боты в Пачке: сервисный участник пространства, на котором строятся интеграции. Что умеет бот, с чего начать под вашу задачу, где бот находится в интерфейсе, вкладка «Управление» и подмена имени отправителя +- [Боты, Создание бота](https://dev.pachca.com/guides/bots/setup) — Как создать бота в Пачке: в разделе «Интеграции» или методом API, что настроить сразу после создания и жизненный цикл бота через API +- [Боты, Настройки бота](https://dev.pachca.com/guides/bots/settings) — Вкладка «Основное» в карточке бота: профиль, ограничение одним чатом, публичный бот, кто может добавлять бота в чаты и редактировать его настройки, удаление бота и те же настройки через API +- [Боты, Токены бота](https://dev.pachca.com/guides/bots/tokens) — Токены бота в Пачке: несколько токенов со своими правами, выпуск, перевыпуск и удаление на вкладке «API», права самоуправления бота, токены через API и что делать, если токен утёк +- [Боты, Первый диалог с ботом](https://dev.pachca.com/guides/bots/first-contact) — Как сотрудник начинает разговор с ботом в Пачке и почему бот молчит: личный чат создаётся без события, новый бот слушает только команды. Что настроить заранее и как ответить на первое сообщение - [Боты, Доступы к чатам и сообщениям](https://dev.pachca.com/guides/bots/access) — Как бот получает доступ к закрытым каналам и беседам, тредам и личным сообщениям в Пачке +- [Боты, Витрина](https://dev.pachca.com/guides/bots/showcase) — Витрина ботов в Пачке: каталог пространства на вкладке «Обзор» — карточки опубликованных ботов с авторизацией и список публичных ботов. Как опубликовать бота, что на его странице и как сотрудник подключает бота сам - [Боты, Готовые примеры реализации](https://dev.pachca.com/guides/bots/examples) — Открытые примеры ботов для Пачки: Welcome Bot для приветствия новых сотрудников, Review Bot для интеграции с GitHub Pull Requests и Unfurl-бот для предпросмотра ссылок +- [Авторизация от имени сотрудника, Обзор](https://dev.pachca.com/guides/oauth/overview) — Авторизация от имени сотрудника: сотрудник выдаёт боту свои права, и бот делает автоматизации в Пачке и связывает её с другими сервисами от его имени. Как это выглядит для сотрудника, где настраивается у бота и какие ограничения действуют +- [Авторизация от имени сотрудника, Чек-лист запуска](https://dev.pachca.com/guides/oauth/checklist) — Что должно быть включено у бота, чтобы авторизация от имени сотрудника заработала: сотрудник может написать боту, бот узнаёт о сообщении и отвечает кнопкой, вкладка «OAuth» настроена. Что видно, когда чего-то не хватает +- [Авторизация от имени сотрудника, Настройка авторизации](https://dev.pachca.com/guides/oauth/setup) — Как включить у бота авторизацию от имени сотрудника: где хранится секрет, адреса возврата, client_id и client_secret, запрашиваемый доступ, страница на витрине, отключение и те же настройки через API +- [Авторизация от имени сотрудника, Получение токена](https://dev.pachca.com/guides/oauth/flow) — Как бот получает токен сотрудника по шагам: ссылка авторизации с state и PKCE, кнопка в сообщении бота, возврат с кодом, обмен кода на токен, проверка сотрудника и обработка отказов. Пример на curl и TypeScript +- [Авторизация от имени сотрудника, Согласие и отзыв](https://dev.pachca.com/guides/oauth/consent) — Экран согласия при авторизации бота: что видит сотрудник, кто не может выдать доступ, повторная авторизация, список «Авторизации» на странице «API», отзыв доступа и что после него происходит с ботом - [Входящие вебхуки](https://dev.pachca.com/guides/incoming-webhooks) — Входящие вебхуки в Пачке: отправка сообщений от имени бота одним HTTP POST без API, шаблонизатор для форматирования, интеграции с CI/CD и мониторингом -- [Исходящие вебхуки, Обзор](https://dev.pachca.com/guides/webhook/overview) — Исходящие вебхуки в Пачке: что это, как настроить и какие настройки доступны на вкладке Исходящий Webhook в боте +- [Исходящие вебхуки, Обзор](https://dev.pachca.com/guides/webhook/overview) — Исходящие вебхуки в Пачке: что это, как включить и какие настройки доступны на вкладке «Исходящий вебхук» в карточке бота - [Исходящие вебхуки, Настройка и типы событий](https://dev.pachca.com/guides/webhook/events) — Настройки исходящих вебхуков Пачки и список доступных типов событий: сообщения, реакции, нажатия кнопок, заполнение форм, изменение участников чатов и пространства, отправка ссылок - [Исходящие вебхуки, Безопасность и обработчик](https://dev.pachca.com/guides/webhook/handler) — Безопасность исходящих вебхуков Пачки: подпись HMAC-SHA256, проверка timestamp, IP-адрес отправителя, примеры обработчика на TypeScript и Python, идемпотентная обработка и доставка - [Исходящие вебхуки, Поллинг](https://dev.pachca.com/guides/webhook/polling) — Поллинг исходящих вебхуков Пачки через SDK: получение новых событий без публичного webhook URL, дедупликация доставок и пример воркера для локальной разработки @@ -306,7 +323,7 @@ Detailed documentation on specific topics is available at: - [Основы API, Запросы и ответы](https://dev.pachca.com/api/requests-responses) — Формат запросов и ответов API Пачки: базовый URL, заголовки Authorization и Content-Type, структура JSON-тела, коллекции Postman и Bruno для тестирования - [Основы API, Пагинация](https://dev.pachca.com/api/pagination) — Пагинация в API Пачки по курсору: две группы методов (списочные и поиск) с разной структурой meta, поля next_page, prev_page, has_next, has_prev, обход всех записей и polling новых данных через prev_page - [Основы API, Загрузка файлов](https://dev.pachca.com/api/file-uploads) — Файлы в API Пачки: трёхшаговая загрузка через presigned URL S3, типы вложений и их поля, ссылка на скачивание и когда она ведёт не в хранилище, а на адрес API -- [Основы API, Ошибки](https://dev.pachca.com/api/errors) — Коды ошибок HTTP в API Пачки и структуры тела ответа: ApiError (400/402/403/404/409/410/422) и OAuthError (401/403) с описанием полей и кодов +- [Основы API, Ошибки](https://dev.pachca.com/api/errors) — Коды ошибок HTTP в API Пачки и структуры тела ответа: ApiError (400/402/403/404/409/410/422/429/503/504) и OAuthError (401/403) с описанием полей и кодов - [Основы API, Лимиты](https://dev.pachca.com/api/limits) — Лимиты запросов (rate limits) в API Пачки: числа по типам операций, поведение ответа 429, заголовок Retry-After, готовые примеры экспоненциального backoff на TypeScript и Python - [Основы API, Модели](https://dev.pachca.com/api/models) — Справочник моделей данных Pachca API: свойства и методы, возвращающие каждый объект — сотрудники, чаты, сообщения, черновики, задачи, теги, вебхуки и другие сущности diff --git a/apps/docs/public/updates.md b/apps/docs/public/updates.md index 521219ee9..1fa05378c 100644 --- a/apps/docs/public/updates.md +++ b/apps/docs/public/updates.md @@ -6,6 +6,126 @@ ## 🍁 Осень 2026 +### Раздел «Интеграции», API ботов, авторизация от имени сотрудника и мульти-гость + +_01 октября 2026_ + +В Пачке обновился раздел **Интеграции**: боты пространства и их карточки с +настройками, токенами и вебхуками, витрина ботов и страница **API** с +персональными токенами, входами в CLI и авторизациями. Документация ботов +собрана заново под этот раздел: [Обзор](/guides/bots/overview), +[Создание бота](/guides/bots/setup), [Настройки бота](/guides/bots/settings), +[Токены бота](/guides/bots/tokens), +[Первый диалог с ботом](/guides/bots/first-contact) и +[Витрина](/guides/bots/showcase). + +В документации появился новый раздел +[Авторизация от имени сотрудника](/guides/oauth/overview). Он про ботов, +которые работают с данными сотрудника его правами: сотрудник один раз +соглашается на экране согласия, и дальше бот действует от его имени в Пачке и +в связке с другими сервисами. Раздел описывает +[настройку авторизации](/guides/oauth/setup), [получение токена](/guides/oauth/flow), +[согласие и отзыв доступа](/guides/oauth/consent), а в +[чек-листе запуска](/guides/oauth/checklist) собрано всё, что должно быть +включено у бота. + +Публичный API ботов теперь умеет всё, что раздел **Интеграции**: бота можно +создать пустым, как в интерфейсе, выпустить ему несколько токенов со своими +правами, включить авторизацию от имени сотрудника и заполнить страницу в +витрине. Действия с токенами и авторизацией попадают в журнал аудита. +Подробнее — в разделах [Токены бота](/guides/bots/tokens#tokeny-cherez-api) и +[Настройка авторизации](/guides/oauth/setup#cherez-api). + +Были добавлены новые методы: + +- [Список токенов бота](/api/bots/list-tokens) +- [Новый токен бота](/api/bots/create-token) +- [Изменение токена бота](/api/bots/update-token) +- [Перевыпуск токена бота](/api/bots/reissue-token) +- [Удаление токена бота](/api/bots/delete-token) +- [Каталог прав бота](/api/bots/list-scopes) +- [Ротация секрета клиента](/api/bots/rotate-client-secret) + +Ещё один новый метод, [Отметка чата непрочитанным](/api/chats/mark-unread), +помечает чат непрочитанным для владельца токена, как одноимённое действие в +интерфейсе. + +Мульти-гость теперь работает с API наравне с сотрудником: создаёт +персональные токены, входит в CLI и авторизует ботов. Через API он видит то +же, что в интерфейсе, — подробнее в разделе +[Мульти-гость в API](/guides/permissions#multi-gost-v-api). + +Поиск по сотрудникам, чатам и сообщениям и поиск в списке сотрудников отвечают +отдельной ошибкой, если запрос не уложился по времени. Голосовое сообщение +длиннее 30 минут отклоняется. В вебхуке о ссылке появились тип чата, его +идентификатор и тред — как в вебхуке о новом сообщении. В формах у +радиокнопок и чекбоксов теперь до 20 вариантов. + +Были обновлены следующие методы: + +- [Новый бот](/api/bots/create) +- [Редактирование бота](/api/bots/update) +- [Информация о боте](/api/bots/get) +- [Список ботов](/api/bots/list) +- [Список ботов пространства](/api/bots/list-company) +- [Журнал аудита событий](/api/security/list) +- [Добавление пользователей](/api/members/add) +- [Новый чат](/api/chats/create) +- [Редактирование сотрудника](/api/users/update) +- [Список сотрудников](/api/users/list) +- [Список тегов](/api/group-tags/list) +- [Поиск сотрудников](/api/search/list-users) +- [Поиск чатов](/api/search/list-chats) +- [Поиск сообщений](/api/search/list-messages) +- [Новое сообщение](/api/messages/create) +- [Редактирование сообщения](/api/messages/update) +- [Открытие представления](/api/views/open) +- [Новый черновик](/api/drafts/create) +- [Редактирование черновика](/api/drafts/update) + +### n8n Node v2.1.4 + +- `Bot`: операции `Get Many Tokens`, `Create Token`, `Update Token`, `Reissue Token` и `Delete Token` — у бота может быть несколько токенов, у каждого своё имя и права. Операция `Get Scopes` отдаёт каталог прав, которые можно выдать боту. +- `Bot`: операция `Rotate Client Secret` — новый `client_secret` для авторизации от имени сотрудника +- `Bot`: у `Create` и `Update` появились поля `OAuth Client` и `Promo` — авторизация от имени сотрудника и страница бота в витрине, а также `Kind` и `Unfurl Domains`. У `Create` — `Empty` для бота без токена, у `Update` — `Single Chat`. +- `Chat`: операция `Mark Unread` — отметка чата непрочитанным для владельца токена +- `Security`: фильтр событий пополнился пятью событиями ботов — выпуск, изменение и перевыпуск токена, обновление секрета клиента и выключение авторизации +- `Trigger`: событие о ссылке приносит `entity_type`, `entity_id` и `thread`, как событие о новом сообщении +- README: где взять токен бота и персональный токен — теперь раздел «Интеграции»: «Боты» для бота, «API» для персонального +- `Bot`: значение `Anyone` поля `Who Can Add` описано как публичный бот, которого гости и мульти-гости не добавляют +- `Message` и `Task`: подсказки к полю `Content` и к фильтру `Chat IDs` описывают, что меняется для мульти-гостя +- `Message`: подсказка к полю `Parent Message ID` описывает ответ с цитатой в любом чате, в том числе в треде: ответ отправляют в тот же чат или тред, где лежит исходное сообщение + +### CLI v2026.10.0 + +- `pachca bots list-tokens`, `create-token`, `update-token`, `reissue-token` и `delete-token` — токены бота, у каждого своё имя и права. `pachca bots list-scopes` — каталог прав, которые можно выдать боту. +- `pachca bots rotate-client-secret` — новый `client_secret` для авторизации от имени сотрудника +- `pachca bots create` и `bots update`: флаги `--oauth-client` и `--promo` для авторизации от имени сотрудника и страницы бота в витрине, `--kind` и `--unfurl-domains`. У `bots create` — `--empty` для бота без токена, у `bots update` — `--single-chat`. +- `pachca chats mark-unread` — отметка чата непрочитанным +- `pachca security list` — флаг `--event-key` принимает пять новых событий ботов: `bot_token_created`, `bot_token_updated`, `bot_token_reissued`, `bot_oauth_client_secret_rotated` и `bot_oauth_client_disabled` +- `pachca search users`, `search chats`, `search messages` и `users list`: в справке описан ответ `504` с кодом `timeout`, если поиск не уложился по времени, а у файлов в `messages create`, `messages update` и `drafts` — предел голосового в 30 минут +- `pachca auth login` — вход через браузер передаёт имя устройства, по которому вход узнаётся в списке токенов CLI +- `pachca guide`: сценарии разворачивания ссылок и поллинга описывают раздел «Интеграции» — событие ссылок с доменами и история событий без Webhook URL +- `pachca messages create`, `messages update` и `tasks list`: подсказки к `--content` и `--chat-ids` описывают, что меняется для мульти-гостя +- `pachca messages create`: подсказка к `--parent-message-id` описывает ответ с цитатой в любом чате, в том числе в треде. В описаниях тредов сказано, какой идентификатор куда передавать: `id` — чтобы написать в тред, `chat_id` — чтобы прочитать его сообщения. +- После ответа `401` CLI подсказывает, что делать дальше: войти заново, если вход через браузер отозван или завершён, или сохранить новый токен. В подсказку подставлен профиль, с которым запускалась команда. +- `pachca views open`: в справке у блоков `radio` и `checkbox` до 20 вариантов + +### SDK v1.5.0 + +- Методы самого бота `Саморегистрация вебхука бота` (`PUT /bot/webhook`) и `Ротация собственного токена бота` (`POST /bot/recreate_token`) отвечают своими моделями `BotSelfResponse` и `BotSelfTokenResponse`: кроме `id` и настроек вебхука, в них есть `oauth_client` +- Поле `access_token` в ответе `Новый бот` (`POST /bots`) стало необязательным: у бота, созданного с `empty: true`, токена нет. Объект `webhook` в запросе `Редактирование бота` (`PUT /bots/{id}`) тоже больше не обязателен. +- Методы `Список токенов бота` (`GET /bots/{id}/tokens`), `Новый токен бота` (`POST /bots/{id}/tokens`), `Изменение токена бота` (`PUT /bots/{id}/tokens/{token_id}`), `Перевыпуск токена бота` (`POST /bots/{id}/tokens/{token_id}/reissue`), `Удаление токена бота` (`DELETE /bots/{id}/tokens/{token_id}`) и `Каталог прав бота` (`GET /bots/{id}/scopes`) +- Метод `Ротация секрета клиента` (`POST /bots/{id}/rotate_client_secret`) +- Авторизация от имени сотрудника в `Новый бот` (`POST /bots`) и `Редактирование бота` (`PUT /bots/{id}`): поля `oauth_client` и `promo` в запросе, `oauth_client`, `oauth_client_enabled`, `promo` и `client_secret` в ответе, а также поле `empty` для пустого бота +- В объекте бота — `name`, `nickname`, `avatar_url`, `creator_id`, `created_at`, `authorized_users_count`, `last_used_at` и `permissions`, у вебхука — `kind`, `unfurl_domains` и `last_request_at`. `kind`, `unfurl_domains` и `single_chat` принимаются и при редактировании. +- Поле `oauth_client` у ботов в `Список ботов пространства` (`GET /company/bots`) +- Метод `Отметка чата непрочитанным` (`PUT /chats/{id}/unread`) и скоуп `chats:mark_unread` +- Типы аудит-событий `bot_token_created`, `bot_token_updated`, `bot_token_reissued`, `bot_oauth_client_secret_rotated` и `bot_oauth_client_disabled` и модели их деталей. У деталей `bot_scopes_updated`, `bot_webhook_settings_updated` и `bot_oauth_client_updated` появились `bot_id` и `actor_id`. +- Значение `bot_add_denied` в `ValidationErrorCode` — так `Добавление пользователей` (`POST /chats/{id}/members`) и `Новый чат` (`POST /chats`) отвечают на бота, которого вам не разрешает добавить его настройка «Кто может добавлять бота в чаты» +- Код ошибки `timeout` и ответ `504` у `Поиск сотрудников` (`GET /search/users`), `Поиск чатов` (`GET /search/chats`), `Поиск сообщений` (`GET /search/messages`) и `Список сотрудников` (`GET /users`) — поиск не уложился по времени +- Поля `entity_type`, `entity_id` и `thread` в вебхуке о ссылке (`LinkSharedWebhookPayload`) + ### Черновики и отложенные сообщения _20 сентября 2026_ diff --git a/apps/docs/public/updates/2026-10-01.md b/apps/docs/public/updates/2026-10-01.md new file mode 100644 index 000000000..ebc053a23 --- /dev/null +++ b/apps/docs/public/updates/2026-10-01.md @@ -0,0 +1,121 @@ +> Это Markdown-версия конкретной страницы. Для контекста за её пределами (правила API, полный перечень методов, авторизация) ОБЯЗАТЕЛЬНО открой [llms.txt](https://dev.pachca.com/llms.txt) перед ответом — это сэкономит токены и предотвратит неполный ответ. + +# Раздел «Интеграции», API ботов, авторизация от имени сотрудника и мульти-гость + +_01 октября 2026_ + +В Пачке обновился раздел **Интеграции**: боты пространства и их карточки с +настройками, токенами и вебхуками, витрина ботов и страница **API** с +персональными токенами, входами в CLI и авторизациями. Документация ботов +собрана заново под этот раздел: [Обзор](/guides/bots/overview), +[Создание бота](/guides/bots/setup), [Настройки бота](/guides/bots/settings), +[Токены бота](/guides/bots/tokens), +[Первый диалог с ботом](/guides/bots/first-contact) и +[Витрина](/guides/bots/showcase). + +В документации появился новый раздел +[Авторизация от имени сотрудника](/guides/oauth/overview). Он про ботов, +которые работают с данными сотрудника его правами: сотрудник один раз +соглашается на экране согласия, и дальше бот действует от его имени в Пачке и +в связке с другими сервисами. Раздел описывает +[настройку авторизации](/guides/oauth/setup), [получение токена](/guides/oauth/flow), +[согласие и отзыв доступа](/guides/oauth/consent), а в +[чек-листе запуска](/guides/oauth/checklist) собрано всё, что должно быть +включено у бота. + +Публичный API ботов теперь умеет всё, что раздел **Интеграции**: бота можно +создать пустым, как в интерфейсе, выпустить ему несколько токенов со своими +правами, включить авторизацию от имени сотрудника и заполнить страницу в +витрине. Действия с токенами и авторизацией попадают в журнал аудита. +Подробнее — в разделах [Токены бота](/guides/bots/tokens#tokeny-cherez-api) и +[Настройка авторизации](/guides/oauth/setup#cherez-api). + +Были добавлены новые методы: + +- [Список токенов бота](/api/bots/list-tokens) +- [Новый токен бота](/api/bots/create-token) +- [Изменение токена бота](/api/bots/update-token) +- [Перевыпуск токена бота](/api/bots/reissue-token) +- [Удаление токена бота](/api/bots/delete-token) +- [Каталог прав бота](/api/bots/list-scopes) +- [Ротация секрета клиента](/api/bots/rotate-client-secret) + +Ещё один новый метод, [Отметка чата непрочитанным](/api/chats/mark-unread), +помечает чат непрочитанным для владельца токена, как одноимённое действие в +интерфейсе. + +Мульти-гость теперь работает с API наравне с сотрудником: создаёт +персональные токены, входит в CLI и авторизует ботов. Через API он видит то +же, что в интерфейсе, — подробнее в разделе +[Мульти-гость в API](/guides/permissions#multi-gost-v-api). + +Поиск по сотрудникам, чатам и сообщениям и поиск в списке сотрудников отвечают +отдельной ошибкой, если запрос не уложился по времени. Голосовое сообщение +длиннее 30 минут отклоняется. В вебхуке о ссылке появились тип чата, его +идентификатор и тред — как в вебхуке о новом сообщении. В формах у +радиокнопок и чекбоксов теперь до 20 вариантов. + +Были обновлены следующие методы: + +- [Новый бот](/api/bots/create) +- [Редактирование бота](/api/bots/update) +- [Информация о боте](/api/bots/get) +- [Список ботов](/api/bots/list) +- [Список ботов пространства](/api/bots/list-company) +- [Журнал аудита событий](/api/security/list) +- [Добавление пользователей](/api/members/add) +- [Новый чат](/api/chats/create) +- [Редактирование сотрудника](/api/users/update) +- [Список сотрудников](/api/users/list) +- [Список тегов](/api/group-tags/list) +- [Поиск сотрудников](/api/search/list-users) +- [Поиск чатов](/api/search/list-chats) +- [Поиск сообщений](/api/search/list-messages) +- [Новое сообщение](/api/messages/create) +- [Редактирование сообщения](/api/messages/update) +- [Открытие представления](/api/views/open) +- [Новый черновик](/api/drafts/create) +- [Редактирование черновика](/api/drafts/update) + +### n8n Node v2.1.4 + +- `Bot`: операции `Get Many Tokens`, `Create Token`, `Update Token`, `Reissue Token` и `Delete Token` — у бота может быть несколько токенов, у каждого своё имя и права. Операция `Get Scopes` отдаёт каталог прав, которые можно выдать боту. +- `Bot`: операция `Rotate Client Secret` — новый `client_secret` для авторизации от имени сотрудника +- `Bot`: у `Create` и `Update` появились поля `OAuth Client` и `Promo` — авторизация от имени сотрудника и страница бота в витрине, а также `Kind` и `Unfurl Domains`. У `Create` — `Empty` для бота без токена, у `Update` — `Single Chat`. +- `Chat`: операция `Mark Unread` — отметка чата непрочитанным для владельца токена +- `Security`: фильтр событий пополнился пятью событиями ботов — выпуск, изменение и перевыпуск токена, обновление секрета клиента и выключение авторизации +- `Trigger`: событие о ссылке приносит `entity_type`, `entity_id` и `thread`, как событие о новом сообщении +- README: где взять токен бота и персональный токен — теперь раздел «Интеграции»: «Боты» для бота, «API» для персонального +- `Bot`: значение `Anyone` поля `Who Can Add` описано как публичный бот, которого гости и мульти-гости не добавляют +- `Message` и `Task`: подсказки к полю `Content` и к фильтру `Chat IDs` описывают, что меняется для мульти-гостя +- `Message`: подсказка к полю `Parent Message ID` описывает ответ с цитатой в любом чате, в том числе в треде: ответ отправляют в тот же чат или тред, где лежит исходное сообщение + +### CLI v2026.10.0 + +- `pachca bots list-tokens`, `create-token`, `update-token`, `reissue-token` и `delete-token` — токены бота, у каждого своё имя и права. `pachca bots list-scopes` — каталог прав, которые можно выдать боту. +- `pachca bots rotate-client-secret` — новый `client_secret` для авторизации от имени сотрудника +- `pachca bots create` и `bots update`: флаги `--oauth-client` и `--promo` для авторизации от имени сотрудника и страницы бота в витрине, `--kind` и `--unfurl-domains`. У `bots create` — `--empty` для бота без токена, у `bots update` — `--single-chat`. +- `pachca chats mark-unread` — отметка чата непрочитанным +- `pachca security list` — флаг `--event-key` принимает пять новых событий ботов: `bot_token_created`, `bot_token_updated`, `bot_token_reissued`, `bot_oauth_client_secret_rotated` и `bot_oauth_client_disabled` +- `pachca search users`, `search chats`, `search messages` и `users list`: в справке описан ответ `504` с кодом `timeout`, если поиск не уложился по времени, а у файлов в `messages create`, `messages update` и `drafts` — предел голосового в 30 минут +- `pachca auth login` — вход через браузер передаёт имя устройства, по которому вход узнаётся в списке токенов CLI +- `pachca guide`: сценарии разворачивания ссылок и поллинга описывают раздел «Интеграции» — событие ссылок с доменами и история событий без Webhook URL +- `pachca messages create`, `messages update` и `tasks list`: подсказки к `--content` и `--chat-ids` описывают, что меняется для мульти-гостя +- `pachca messages create`: подсказка к `--parent-message-id` описывает ответ с цитатой в любом чате, в том числе в треде. В описаниях тредов сказано, какой идентификатор куда передавать: `id` — чтобы написать в тред, `chat_id` — чтобы прочитать его сообщения. +- После ответа `401` CLI подсказывает, что делать дальше: войти заново, если вход через браузер отозван или завершён, или сохранить новый токен. В подсказку подставлен профиль, с которым запускалась команда. +- `pachca views open`: в справке у блоков `radio` и `checkbox` до 20 вариантов + +### SDK v1.5.0 + +- Методы самого бота `Саморегистрация вебхука бота` (`PUT /bot/webhook`) и `Ротация собственного токена бота` (`POST /bot/recreate_token`) отвечают своими моделями `BotSelfResponse` и `BotSelfTokenResponse`: кроме `id` и настроек вебхука, в них есть `oauth_client` +- Поле `access_token` в ответе `Новый бот` (`POST /bots`) стало необязательным: у бота, созданного с `empty: true`, токена нет. Объект `webhook` в запросе `Редактирование бота` (`PUT /bots/{id}`) тоже больше не обязателен. +- Методы `Список токенов бота` (`GET /bots/{id}/tokens`), `Новый токен бота` (`POST /bots/{id}/tokens`), `Изменение токена бота` (`PUT /bots/{id}/tokens/{token_id}`), `Перевыпуск токена бота` (`POST /bots/{id}/tokens/{token_id}/reissue`), `Удаление токена бота` (`DELETE /bots/{id}/tokens/{token_id}`) и `Каталог прав бота` (`GET /bots/{id}/scopes`) +- Метод `Ротация секрета клиента` (`POST /bots/{id}/rotate_client_secret`) +- Авторизация от имени сотрудника в `Новый бот` (`POST /bots`) и `Редактирование бота` (`PUT /bots/{id}`): поля `oauth_client` и `promo` в запросе, `oauth_client`, `oauth_client_enabled`, `promo` и `client_secret` в ответе, а также поле `empty` для пустого бота +- В объекте бота — `name`, `nickname`, `avatar_url`, `creator_id`, `created_at`, `authorized_users_count`, `last_used_at` и `permissions`, у вебхука — `kind`, `unfurl_domains` и `last_request_at`. `kind`, `unfurl_domains` и `single_chat` принимаются и при редактировании. +- Поле `oauth_client` у ботов в `Список ботов пространства` (`GET /company/bots`) +- Метод `Отметка чата непрочитанным` (`PUT /chats/{id}/unread`) и скоуп `chats:mark_unread` +- Типы аудит-событий `bot_token_created`, `bot_token_updated`, `bot_token_reissued`, `bot_oauth_client_secret_rotated` и `bot_oauth_client_disabled` и модели их деталей. У деталей `bot_scopes_updated`, `bot_webhook_settings_updated` и `bot_oauth_client_updated` появились `bot_id` и `actor_id`. +- Значение `bot_add_denied` в `ValidationErrorCode` — так `Добавление пользователей` (`POST /chats/{id}/members`) и `Новый чат` (`POST /chats`) отвечают на бота, которого вам не разрешает добавить его настройка «Кто может добавлять бота в чаты» +- Код ошибки `timeout` и ответ `504` у `Поиск сотрудников` (`GET /search/users`), `Поиск чатов` (`GET /search/chats`), `Поиск сообщений` (`GET /search/messages`) и `Список сотрудников` (`GET /users`) — поиск не уложился по времени +- Поля `entity_type`, `entity_id` и `thread` в вебхуке о ссылке (`LinkSharedWebhookPayload`) diff --git a/apps/docs/public/updates/season/autumn-2026.md b/apps/docs/public/updates/season/autumn-2026.md index 8993f8761..837dc7d50 100644 --- a/apps/docs/public/updates/season/autumn-2026.md +++ b/apps/docs/public/updates/season/autumn-2026.md @@ -2,6 +2,126 @@ # 🍁 Осень 2026 +### Раздел «Интеграции», API ботов, авторизация от имени сотрудника и мульти-гость + +_01 октября 2026_ + +В Пачке обновился раздел **Интеграции**: боты пространства и их карточки с +настройками, токенами и вебхуками, витрина ботов и страница **API** с +персональными токенами, входами в CLI и авторизациями. Документация ботов +собрана заново под этот раздел: [Обзор](/guides/bots/overview), +[Создание бота](/guides/bots/setup), [Настройки бота](/guides/bots/settings), +[Токены бота](/guides/bots/tokens), +[Первый диалог с ботом](/guides/bots/first-contact) и +[Витрина](/guides/bots/showcase). + +В документации появился новый раздел +[Авторизация от имени сотрудника](/guides/oauth/overview). Он про ботов, +которые работают с данными сотрудника его правами: сотрудник один раз +соглашается на экране согласия, и дальше бот действует от его имени в Пачке и +в связке с другими сервисами. Раздел описывает +[настройку авторизации](/guides/oauth/setup), [получение токена](/guides/oauth/flow), +[согласие и отзыв доступа](/guides/oauth/consent), а в +[чек-листе запуска](/guides/oauth/checklist) собрано всё, что должно быть +включено у бота. + +Публичный API ботов теперь умеет всё, что раздел **Интеграции**: бота можно +создать пустым, как в интерфейсе, выпустить ему несколько токенов со своими +правами, включить авторизацию от имени сотрудника и заполнить страницу в +витрине. Действия с токенами и авторизацией попадают в журнал аудита. +Подробнее — в разделах [Токены бота](/guides/bots/tokens#tokeny-cherez-api) и +[Настройка авторизации](/guides/oauth/setup#cherez-api). + +Были добавлены новые методы: + +- [Список токенов бота](/api/bots/list-tokens) +- [Новый токен бота](/api/bots/create-token) +- [Изменение токена бота](/api/bots/update-token) +- [Перевыпуск токена бота](/api/bots/reissue-token) +- [Удаление токена бота](/api/bots/delete-token) +- [Каталог прав бота](/api/bots/list-scopes) +- [Ротация секрета клиента](/api/bots/rotate-client-secret) + +Ещё один новый метод, [Отметка чата непрочитанным](/api/chats/mark-unread), +помечает чат непрочитанным для владельца токена, как одноимённое действие в +интерфейсе. + +Мульти-гость теперь работает с API наравне с сотрудником: создаёт +персональные токены, входит в CLI и авторизует ботов. Через API он видит то +же, что в интерфейсе, — подробнее в разделе +[Мульти-гость в API](/guides/permissions#multi-gost-v-api). + +Поиск по сотрудникам, чатам и сообщениям и поиск в списке сотрудников отвечают +отдельной ошибкой, если запрос не уложился по времени. Голосовое сообщение +длиннее 30 минут отклоняется. В вебхуке о ссылке появились тип чата, его +идентификатор и тред — как в вебхуке о новом сообщении. В формах у +радиокнопок и чекбоксов теперь до 20 вариантов. + +Были обновлены следующие методы: + +- [Новый бот](/api/bots/create) +- [Редактирование бота](/api/bots/update) +- [Информация о боте](/api/bots/get) +- [Список ботов](/api/bots/list) +- [Список ботов пространства](/api/bots/list-company) +- [Журнал аудита событий](/api/security/list) +- [Добавление пользователей](/api/members/add) +- [Новый чат](/api/chats/create) +- [Редактирование сотрудника](/api/users/update) +- [Список сотрудников](/api/users/list) +- [Список тегов](/api/group-tags/list) +- [Поиск сотрудников](/api/search/list-users) +- [Поиск чатов](/api/search/list-chats) +- [Поиск сообщений](/api/search/list-messages) +- [Новое сообщение](/api/messages/create) +- [Редактирование сообщения](/api/messages/update) +- [Открытие представления](/api/views/open) +- [Новый черновик](/api/drafts/create) +- [Редактирование черновика](/api/drafts/update) + +### n8n Node v2.1.4 + +- `Bot`: операции `Get Many Tokens`, `Create Token`, `Update Token`, `Reissue Token` и `Delete Token` — у бота может быть несколько токенов, у каждого своё имя и права. Операция `Get Scopes` отдаёт каталог прав, которые можно выдать боту. +- `Bot`: операция `Rotate Client Secret` — новый `client_secret` для авторизации от имени сотрудника +- `Bot`: у `Create` и `Update` появились поля `OAuth Client` и `Promo` — авторизация от имени сотрудника и страница бота в витрине, а также `Kind` и `Unfurl Domains`. У `Create` — `Empty` для бота без токена, у `Update` — `Single Chat`. +- `Chat`: операция `Mark Unread` — отметка чата непрочитанным для владельца токена +- `Security`: фильтр событий пополнился пятью событиями ботов — выпуск, изменение и перевыпуск токена, обновление секрета клиента и выключение авторизации +- `Trigger`: событие о ссылке приносит `entity_type`, `entity_id` и `thread`, как событие о новом сообщении +- README: где взять токен бота и персональный токен — теперь раздел «Интеграции»: «Боты» для бота, «API» для персонального +- `Bot`: значение `Anyone` поля `Who Can Add` описано как публичный бот, которого гости и мульти-гости не добавляют +- `Message` и `Task`: подсказки к полю `Content` и к фильтру `Chat IDs` описывают, что меняется для мульти-гостя +- `Message`: подсказка к полю `Parent Message ID` описывает ответ с цитатой в любом чате, в том числе в треде: ответ отправляют в тот же чат или тред, где лежит исходное сообщение + +### CLI v2026.10.0 + +- `pachca bots list-tokens`, `create-token`, `update-token`, `reissue-token` и `delete-token` — токены бота, у каждого своё имя и права. `pachca bots list-scopes` — каталог прав, которые можно выдать боту. +- `pachca bots rotate-client-secret` — новый `client_secret` для авторизации от имени сотрудника +- `pachca bots create` и `bots update`: флаги `--oauth-client` и `--promo` для авторизации от имени сотрудника и страницы бота в витрине, `--kind` и `--unfurl-domains`. У `bots create` — `--empty` для бота без токена, у `bots update` — `--single-chat`. +- `pachca chats mark-unread` — отметка чата непрочитанным +- `pachca security list` — флаг `--event-key` принимает пять новых событий ботов: `bot_token_created`, `bot_token_updated`, `bot_token_reissued`, `bot_oauth_client_secret_rotated` и `bot_oauth_client_disabled` +- `pachca search users`, `search chats`, `search messages` и `users list`: в справке описан ответ `504` с кодом `timeout`, если поиск не уложился по времени, а у файлов в `messages create`, `messages update` и `drafts` — предел голосового в 30 минут +- `pachca auth login` — вход через браузер передаёт имя устройства, по которому вход узнаётся в списке токенов CLI +- `pachca guide`: сценарии разворачивания ссылок и поллинга описывают раздел «Интеграции» — событие ссылок с доменами и история событий без Webhook URL +- `pachca messages create`, `messages update` и `tasks list`: подсказки к `--content` и `--chat-ids` описывают, что меняется для мульти-гостя +- `pachca messages create`: подсказка к `--parent-message-id` описывает ответ с цитатой в любом чате, в том числе в треде. В описаниях тредов сказано, какой идентификатор куда передавать: `id` — чтобы написать в тред, `chat_id` — чтобы прочитать его сообщения. +- После ответа `401` CLI подсказывает, что делать дальше: войти заново, если вход через браузер отозван или завершён, или сохранить новый токен. В подсказку подставлен профиль, с которым запускалась команда. +- `pachca views open`: в справке у блоков `radio` и `checkbox` до 20 вариантов + +### SDK v1.5.0 + +- Методы самого бота `Саморегистрация вебхука бота` (`PUT /bot/webhook`) и `Ротация собственного токена бота` (`POST /bot/recreate_token`) отвечают своими моделями `BotSelfResponse` и `BotSelfTokenResponse`: кроме `id` и настроек вебхука, в них есть `oauth_client` +- Поле `access_token` в ответе `Новый бот` (`POST /bots`) стало необязательным: у бота, созданного с `empty: true`, токена нет. Объект `webhook` в запросе `Редактирование бота` (`PUT /bots/{id}`) тоже больше не обязателен. +- Методы `Список токенов бота` (`GET /bots/{id}/tokens`), `Новый токен бота` (`POST /bots/{id}/tokens`), `Изменение токена бота` (`PUT /bots/{id}/tokens/{token_id}`), `Перевыпуск токена бота` (`POST /bots/{id}/tokens/{token_id}/reissue`), `Удаление токена бота` (`DELETE /bots/{id}/tokens/{token_id}`) и `Каталог прав бота` (`GET /bots/{id}/scopes`) +- Метод `Ротация секрета клиента` (`POST /bots/{id}/rotate_client_secret`) +- Авторизация от имени сотрудника в `Новый бот` (`POST /bots`) и `Редактирование бота` (`PUT /bots/{id}`): поля `oauth_client` и `promo` в запросе, `oauth_client`, `oauth_client_enabled`, `promo` и `client_secret` в ответе, а также поле `empty` для пустого бота +- В объекте бота — `name`, `nickname`, `avatar_url`, `creator_id`, `created_at`, `authorized_users_count`, `last_used_at` и `permissions`, у вебхука — `kind`, `unfurl_domains` и `last_request_at`. `kind`, `unfurl_domains` и `single_chat` принимаются и при редактировании. +- Поле `oauth_client` у ботов в `Список ботов пространства` (`GET /company/bots`) +- Метод `Отметка чата непрочитанным` (`PUT /chats/{id}/unread`) и скоуп `chats:mark_unread` +- Типы аудит-событий `bot_token_created`, `bot_token_updated`, `bot_token_reissued`, `bot_oauth_client_secret_rotated` и `bot_oauth_client_disabled` и модели их деталей. У деталей `bot_scopes_updated`, `bot_webhook_settings_updated` и `bot_oauth_client_updated` появились `bot_id` и `actor_id`. +- Значение `bot_add_denied` в `ValidationErrorCode` — так `Добавление пользователей` (`POST /chats/{id}/members`) и `Новый чат` (`POST /chats`) отвечают на бота, которого вам не разрешает добавить его настройка «Кто может добавлять бота в чаты» +- Код ошибки `timeout` и ответ `504` у `Поиск сотрудников` (`GET /search/users`), `Поиск чатов` (`GET /search/chats`), `Поиск сообщений` (`GET /search/messages`) и `Список сотрудников` (`GET /users`) — поиск не уложился по времени +- Поля `entity_type`, `entity_id` и `thread` в вебхуке о ссылке (`LinkSharedWebhookPayload`) + ### Черновики и отложенные сообщения _20 сентября 2026_ diff --git a/apps/docs/public/workflows.arazzo.yaml b/apps/docs/public/workflows.arazzo.yaml index 967e82492..827a2a2f8 100644 --- a/apps/docs/public/workflows.arazzo.yaml +++ b/apps/docs/public/workflows.arazzo.yaml @@ -364,11 +364,12 @@ workflows: summary: Create a bot via API and get its token description: >- Bots can only be created with a user token, not a bot token. The `access_token` is returned - once at creation; afterwards it can be viewed and copied in the interface. Manual - prerequisites: Save `access_token` from the response — it is returned only once. It is never - shown again and can only be reissued with `pachca bots recreate-token `; The response also - includes the bot `id` (its `user_id`) — needed for further calls, e.g. adding the bot to a - chat. + once at creation; it cannot be viewed again, only reissued. With `--empty` the bot is created + without a token and an incoming webhook, as in the interface, and tokens are then issued with + `pachca bots create-token`. Manual prerequisites: Save `access_token` from the response — it + is returned only once. It is never shown again and can only be reissued with `pachca bots + recreate-token `; The response also includes the bot `id` (its `user_id`) — needed for + further calls, e.g. adding the bot to a chat. steps: - stepId: create-a-bot-via-api-and-get-its-token-1 description: >- @@ -407,22 +408,65 @@ workflows: - workflowId: rotate-a-bot-token summary: Rotate a bot token description: >- - The new token is returned once. The self path (`POST /bot/recreate_token`) invalidates the - very token used for the request — capture the new token from the response in the same + The new value is returned once. The self path (`POST /bot/recreate_token`) rotates the bot + main token — if the bot works with it, capture the new token from the response in the same operation. Manual prerequisites: Save the new `access_token` from the response — returned only once. Update the secret in CI or your secret store. steps: - stepId: rotate-a-bot-token-1 description: >- - With a user token (admin, company owner or bot creator) — rotate the token by bot `id`. - The previous token is invalidated immediately + With a user token (the bot creator, or an admin if the bot is open to admins) — rotate the + main token by bot `id`: the one without a name, or the oldest one if there is none. The + previous value is invalidated immediately operationId: BotOperations_recreateBotToken - stepId: rotate-a-bot-token-2 description: >- - Or: the bot rotates its own token with its own token (scope `bot_self:write`). The token - used for the request is invalidated immediately — be sure to save the new `access_token` - from the response, otherwise the bot loses API access + Or: the bot rotates its own main token itself (scope `bot_self:write`). If the request is + made with the main token, it is invalidated immediately — be sure to save the new + `access_token` from the response, otherwise the bot loses API access operationId: BotOperations_selfRecreateBotToken + - stepId: rotate-a-bot-token-3 + description: >- + Reissue an additional bot token by its `id` from `pachca bots list-tokens`: the value + changes, the name and scopes stay + operationId: BotOperations_reissueBotToken + - workflowId: issue-an-additional-bot-token + summary: Issue an additional bot token + description: >- + A separate token is handy for each service that works on behalf of the bot: it is revoked with + `pachca bots delete-token` without touching the others. Scopes are changed with `pachca bots + update-token` — they take effect immediately, no reissue needed. Manual prerequisites: Save + `token` from the response — the full value is returned only once. Afterwards `pachca bots + list-tokens` returns it masked. + steps: + - stepId: issue-an-additional-bot-token-1 + description: >- + With a user token (the bot creator, or an admin if the bot is open to admins) get the + catalog of scopes that can be granted to this bot + operationId: BotOperations_getBotScopes + - stepId: issue-an-additional-bot-token-2 + description: >- + Issue a token with a name and scopes from the catalog. Without `--scopes` the token has no + scopes, and a scope outside the catalog is rejected with `400` + operationId: BotOperations_createBotToken + - workflowId: enable-authorization-on-behalf-of-an-employee-for-a-bot + summary: Enable authorization on behalf of an employee for a bot + description: >- + Whether authorization is enabled is shown by `oauth_client_enabled`: `oauth_client` can come + even for a bot with authorization disabled. `--oauth-client=null` disables it and revokes the + authorizations granted by employees, and `pachca bots rotate-client-secret` issues a new + secret. Manual prerequisites: Save `client_secret` from the server-side client response — it + is returned only once. `client_id` comes in `oauth_client` and is not secret. + steps: + - stepId: enable-authorization-on-behalf-of-an-employee-for-a-bot-1 + description: >- + With a user token (the bot creator, or an admin if the bot is open to admins) enable + authorization: where the secret is stored, redirect URIs and the scopes the bot will + request from an employee. Take the scopes from `pachca bots list-scopes` + operationId: BotOperations_updateBot + - stepId: enable-authorization-on-behalf-of-an-employee-for-a-bot-2 + description: To list the bot in the catalog, add a description and publish the page + operationId: BotOperations_updateBot - workflowId: find-and-delete-a-bot summary: Find and delete a bot description: >- @@ -437,10 +481,10 @@ workflows: operationId: BotOperations_listBots - stepId: find-and-delete-a-bot-2 description: >- - Take the target bot `id` from the list and delete it (scope `bots:write`). Available to an - admin, the company owner or the bot creator — chat owners cannot delete a bot. The - previous token is invalidated immediately, the bot is removed from all chats, and its - outgoing webhook is deleted + Take the target bot `id` from the list and delete it (scope `bots:write`). Available to + the bot creator, and to an admin if the bot is open to admins — chat owners cannot delete + a bot. All bot tokens are invalidated immediately, the bot is removed from all chats, and + its webhooks are deleted operationId: BotOperations_deleteBot - workflowId: handle-incoming-webhook-event summary: Handle incoming webhook event @@ -457,12 +501,14 @@ workflows: - workflowId: link-unfurling summary: Link unfurling description: >- - Endpoint is bound to a specific message. Requires a special Unfurl bot with specified domains. - Manual prerequisites: Create a special Unfurl bot and specify tracked domains; When a link - appears, bot receives webhook `"event": "link_shared"` with `links` array. Each object has - `url`, `domain` and `skip: boolean` — if `skip` is `true`, the author hid the preview and the - bot must skip this link; Extract data from your system by URL from `links` (skipping objects - with `skip: true`). + Endpoint is bound to a specific message. The bot needs the link unfurling event with its + domains: links arrive from every chat of the workspace, no need to add the bot to chats. + Manual prerequisites: On the Outgoing webhook tab of the bot, enable the "Links shared in + messages (unfurl)" event and list up to 5 domains — only a workspace admin or owner can do + this; When a link appears, bot receives webhook `"event": "link_shared"` with `links` array. + Each object has `url`, `domain` and `skip: boolean` — if `skip` is `true`, the author hid the + preview and the bot must skip this link; Extract data from your system by URL from `links` + (skipping objects with `skip: true`). steps: - stepId: link-unfurling-1 description: Send preview data @@ -503,14 +549,19 @@ workflows: - workflowId: process-events-via-history-polling summary: Process events via history (polling) description: >- - Polling — alternative to real-time webhook if bot has no public URL. Manual prerequisites: In - bot settings enable "Save event history". Webhook URL is optional.; Process each event (same - format as real-time webhook). + Polling — alternative to real-time webhook if bot has no public URL. Manual prerequisites: + Process each event (same format as real-time webhook). steps: - stepId: process-events-via-history-polling-1 + description: >- + Enable the event history with `--events-history-enabled` (no Webhook URL needed) or with + "Save event history" on the Outgoing webhook tab — in the UI it appears once the webhook + is enabled + operationId: BotOperations_updateBot + - stepId: process-events-via-history-polling-2 description: Get accumulated events operationId: BotOperations_getWebhookEvents - - stepId: process-events-via-history-polling-2 + - stepId: process-events-via-history-polling-3 description: Delete processed event (Delete to avoid reprocessing) operationId: BotOperations_deleteWebhookEvent - workflowId: inventory-of-all-workspace-bots diff --git a/apps/docs/scripts/generate-llms.ts b/apps/docs/scripts/generate-llms.ts index d6944e963..495c017bf 100644 --- a/apps/docs/scripts/generate-llms.ts +++ b/apps/docs/scripts/generate-llms.ts @@ -362,7 +362,7 @@ function generateLibraryRules(): string { - All requests require Bearer token in Authorization header: \`Authorization: Bearer \` - Two token types: **personal** — acts as a person and sees exactly what that person sees; **bot** — acts as a service account, sees every open channel of the workspace plus the closed chats and threads the bot was added to - Scopes decide which methods a token may call. They never widen the data beyond the boundary of the token type -- Get a personal token: Settings → Automations → API, choosing its scopes. Get a bot token: per-bot in Settings → Automations +- Get a personal token: Integrations → API, choosing its scopes. Get a bot token: Integrations → Bots, then the API tab of the bot, one token per purpose with its own scopes - A personal token issued in the interface does not expire; one obtained by \`pachca auth login\` lives an hour and renews itself - What a token may do also follows the current role of its owner, checked on every request — lowering the role starts returning 403 without touching the token - TypeScript SDK: \`const client = new PachcaClient("YOUR_TOKEN")\` @@ -396,13 +396,13 @@ function generateLibraryRules(): string { - SDK (@pachca/sdk, pachca-sdk) handles retry automatically: 3 retries, respects Retry-After, exponential backoff for 5xx ## Webhooks (Real-time Events) -- Create a bot in Pachca: Automations → Integrations → Bots -- Set webhook URL in bot settings → Outgoing Webhook tab +- Create a bot in Pachca: Integrations → Bots → Create bot +- On the bot's Outgoing webhook tab, press Enable and give your URL - Events: \`new_message\`, \`edit_message\`, \`delete_message\`, \`new_reaction\`, \`delete_reaction\`, \`button_pressed\`, \`view_submit\`, \`chat_member_changed\`, \`company_member_changed\`, \`link_shared\` - Verify: HMAC-SHA256 of raw body with bot's Signing Secret - Header: \`Pachca-Signature\` contains hex digest - Replay protection: check \`webhook_timestamp\` within ±60 seconds of current time -- Alternative to webhooks: polling via GET /webhooks/events (enable "Save event history" in bot settings) +- Alternative to webhooks: polling via GET /webhooks/events (enable "Save event history" on the Outgoing webhook tab, or \`events_history_enabled\` via the API when there is no URL at all) - IP whitelist: Pachca webhook IP is \`37.200.70.177\` ## File Uploads (3-step process) @@ -592,7 +592,7 @@ profile = await client.profile.get_profile() print(profile.id, profile.first_name) \`\`\` -Token types: **admin** (full access, get in Settings → Automations → API), **bot** (messaging + webhooks, per-bot in Integrations), **user** (limited). +Token types: **admin** (full access, get in Integrations → API), **bot** (messaging + webhooks, API tab of the bot in Integrations → Bots), **user** (limited). `; @@ -730,18 +730,18 @@ Chat types: \`channel: true\` creates a channel (one-way announcements), \`chann content += `## How to set up webhooks for real-time updates ### Step-by-step setup -1. Create a bot in Pachca: **Automations** → **Integrations** → **Bots** -2. In bot settings, go to **Outgoing Webhook** tab and set your HTTPS URL +1. Create a bot in Pachca: **Integrations** → **Bots** → **Create bot** +2. On the bot's **Outgoing webhook** tab press **Enable** and set your HTTPS URL 3. Copy the **Signing Secret** for signature verification 4. Select event types: new messages, reactions, button presses, form submissions, etc. -5. Add the bot to chats where you want to receive events (global events like company member changes work without adding to chat) +5. Add the bot to chats where you want to receive events (company member changes and links on the bot's domains arrive without adding it to a chat) ### TypeScript webhook handler (Express.js) \`\`\`typescript import express from "express" import crypto from "crypto" -const SIGNING_SECRET = "your_signing_secret" // From bot settings → Outgoing Webhook +const SIGNING_SECRET = "your_signing_secret" // Bot card → Outgoing webhook → Signing secret const app = express() app.post("/webhook", express.raw({ type: "application/json" }), (req, res) => { @@ -787,7 +787,7 @@ app.listen(3000) import hmac, hashlib, json, time from flask import Flask, request, abort -SIGNING_SECRET = "your_signing_secret" # From bot settings → Outgoing Webhook +SIGNING_SECRET = "your_signing_secret" # Bot card → Outgoing webhook → Signing secret app = Flask(__name__) @app.route("/webhook", methods=["POST"]) @@ -824,10 +824,10 @@ def webhook(): | view_submit | Form submitted | payload (form field values), user_id, trigger_id | | chat_member (new/delete) | Member added/removed from chat | chat_id, user_id, event | | company_member (new/update/delete) | Workspace member changes | user_id, event (no chat needed) | -| link_shared | URL shared (unfurl bots) | url, message_id, chat_id | +| link_shared | URL on one of the bot's domains shared anywhere in the workspace | url, message_id, chat_id | ### Alternative: Polling (when webhook URL is not available) -Enable "Save event history" in bot settings, then poll: +Enable "Save event history" on the bot's Outgoing webhook tab (or \`events_history_enabled\` via the API when there is no URL at all), then poll: \`\`\`typescript // Poll for events periodically const events = await client.bots.getWebhookEvents() @@ -1472,9 +1472,9 @@ function generateWorkflowsSection(): string { { title: 'Set up a bot with outgoing webhook', steps: [ - { desc: 'Create bot in Pachca UI: Automations → Integrations → Webhook' }, - { desc: 'Get `access_token` from bot API settings tab' }, - { desc: 'Set Webhook URL to receive events' }, + { desc: 'Create bot in Pachca UI: Integrations → Bots → Create bot' }, + { desc: 'Create a token on the API tab of the bot — its value is shown once' }, + { desc: 'On the Outgoing webhook tab, press Enable, give the URL and pick the events' }, ], }, { @@ -1573,8 +1573,8 @@ Authorization: Bearer \`\`\` **Token types:** -- **Personal token** — acts as a person. It sees the chats, threads and messages that person sees in Pachca, and nothing more. Created in Settings → Automations → API, where you pick its scopes; also obtainable with \`pachca auth login\`, which takes the whole catalogue trimmed by your role. -- **Bot token** — acts as a service account. It sees every open channel of the workspace, plus closed channels, conversations and threads the bot was added to. Created per-bot in Settings → Automations. +- **Personal token** — acts as a person. It sees the chats, threads and messages that person sees in Pachca, and nothing more. Created in Integrations → API, where you pick its scopes; also obtainable with \`pachca auth login\`, which takes the whole catalogue trimmed by your role. +- **Bot token** — acts as a service account. It sees every open channel of the workspace, plus closed channels, conversations and threads the bot was added to. Created in the API tab of the bot, under Integrations → Bots; a bot can hold several tokens, each with its own scopes. Scopes decide which methods a token may call; they never widen the data beyond the boundary of the token type. What a token may do also follows the current role of its owner, and that is checked on every request — a lowered role starts answering 403 without the token being touched. diff --git a/apps/docs/scripts/skills/generate.ts b/apps/docs/scripts/skills/generate.ts index 1d5732d62..5a63f54d9 100644 --- a/apps/docs/scripts/skills/generate.ts +++ b/apps/docs/scripts/skills/generate.ts @@ -333,7 +333,7 @@ function generateSkillMd(ctx: SkillContext): string { lines.push('## Quick start'); lines.push(''); lines.push( - 'Ask the user for a Pachca token (bot: Automations → Integrations → API, user: Automations → API).' + 'Ask the user for a Pachca token (bot: the API tab of the bot in Integrations → Bots, user: Integrations → API).' ); if (config.botOnly) { lines.push('**Bot token only** — user tokens will not work.'); diff --git a/integrations/n8n/CHANGELOG.md b/integrations/n8n/CHANGELOG.md index 497538238..bef0a50b7 100644 --- a/integrations/n8n/CHANGELOG.md +++ b/integrations/n8n/CHANGELOG.md @@ -2,6 +2,24 @@ # Changelog +## 2.1.4 (2026-10-01) + +### Features + +- Bot: new `Get Many Tokens`, `Create Token`, `Update Token`, `Reissue Token` and `Delete Token` operations — a bot can have several tokens, each with its own name and scopes. The new `Get Scopes` operation returns the catalog of scopes that can be granted to a bot +- Bot: new `Rotate Client Secret` operation — a new `client_secret` for authorization on behalf of an employee +- Bot: `Create` and `Update` gain the `OAuth Client` and `Promo` fields for authorization on behalf of an employee and the bot's catalog page, as well as `Kind` and `Unfurl Domains`. `Create` gains `Empty` for a bot without a token, `Update` gains `Single Chat` +- Chat: new `Mark Unread` operation — marks a chat as unread for the token owner +- Security: the event filter gains five bot events — a token issued, changed and reissued, the client secret rotated, and authorization turned off +- Trigger: the link shared event carries `entity_type`, `entity_id` and `thread`, like the new message event + +### Improvements + +- README: where to get a bot token and a personal token now points to the Integrations section — Bots for the bot, API for the personal token +- Bot: the `Anyone` value of `Who Can Add` is described as a public bot that guests and multi-guests cannot add +- Message and Task: the hints for `Content` and the `Chat IDs` filter describe what changes for a multi-guest +- Message: the `Parent Message ID` hint describes a quoted reply in any chat, including a thread: the reply is sent to the same chat or thread where the original message is + ## 2.1.3 (2026-09-16) ### Features diff --git a/integrations/n8n/README.md b/integrations/n8n/README.md index 278f06c03..d3c89cebe 100644 --- a/integrations/n8n/README.md +++ b/integrations/n8n/README.md @@ -24,7 +24,7 @@ Or install from archive (Docker, custom n8n images): # Download from GitHub Releases # Find the latest n8n-nodes-pachca.tgz at: # https://github.com/pachca/openapi/releases?q=n8n -wget https://github.com/pachca/openapi/releases/download/n8n-v2.1.1/n8n-nodes-pachca.tgz +wget https://github.com/pachca/openapi/releases/download/n8n-v2.1.4/n8n-nodes-pachca.tgz # Via npm (recommended) cd ~/.n8n/nodes && npm install ./n8n-nodes-pachca.tgz @@ -91,8 +91,8 @@ Create a **Pachca API** credential with: **Where to get tokens:** -- **Bot token** — Bot settings > API tab -- **Personal token** — Settings > Automations > API +- **Bot token** — Integrations > Bots, then the API tab of the bot. The value is shown once, when the token is created +- **Personal token** — Integrations > API Credentials are tested by calling `GET /oauth/token/info`. @@ -230,7 +230,7 @@ Set **Resource** = Search, **Operation** = Get Many Messages: ### 401 Unauthorized -Token is invalid or expired. Check **Access Token** in Credentials. For bot tokens: Bot settings > API tab. For personal tokens: Settings > Automations > API. +Token is invalid or expired. Check **Access Token** in Credentials. For bot tokens: reissue the token on the API tab of the bot. For personal tokens: create a new one in Integrations > API. ### 403 Forbidden diff --git a/integrations/n8n/docs/DEVELOPMENT.md b/integrations/n8n/docs/DEVELOPMENT.md index 6fb919d88..7bf285496 100644 --- a/integrations/n8n/docs/DEVELOPMENT.md +++ b/integrations/n8n/docs/DEVELOPMENT.md @@ -128,7 +128,7 @@ pkill -f n8n; npx n8n start ## Versioning -- **npm version**: SemVer (`MAJOR.MINOR.PATCH`), current: `2.1.1` +- **npm version**: SemVer (`MAJOR.MINOR.PATCH`), current: `2.1.4` - **n8n node version**: VersionedNodeType with `defaultVersion: 2` - `typeVersion: 1` — loads PachcaV1 (frozen V1 class) - `typeVersion: 2` — loads PachcaV2 (generated V2 class) diff --git a/integrations/n8n/nodes/Pachca/SharedRouter.ts b/integrations/n8n/nodes/Pachca/SharedRouter.ts index c8683c8ca..2048de7b6 100644 --- a/integrations/n8n/nodes/Pachca/SharedRouter.ts +++ b/integrations/n8n/nodes/Pachca/SharedRouter.ts @@ -127,6 +127,7 @@ const ROUTES: Record> = { method: 'POST' as IHttpRequestMethods, path: '/bots', wrapperKey: 'webhook', + siblingFields: ['empty', 'oauth_client', 'promo'], bodyMap: [ { api: 'name', n8n: 'name' }, ], @@ -146,6 +147,11 @@ const ROUTES: Record> = { { api: 'who_can_add', n8n: 'whoCanAdd' }, { api: 'can_edit', n8n: 'canEdit', isArray: true, arrayType: 'string' }, { api: 'single_chat', n8n: 'singleChat' }, + { api: 'kind', n8n: 'kind' }, + { api: 'unfurl_domains', n8n: 'unfurlDomains', isArray: true, arrayType: 'string' }, + { api: 'empty', n8n: 'empty' }, + { api: 'oauth_client', n8n: 'oauthClient', isJson: true }, + { api: 'promo', n8n: 'promo', isJson: true }, ], }, get: { @@ -158,6 +164,7 @@ const ROUTES: Record> = { path: '/bots/{id}', pathParams: [{ api: 'id', n8n: 'botId' }], wrapperKey: 'webhook', + siblingFields: ['oauth_client', 'promo'], special: 'botWebhook', optionalBodyMap: [ { api: 'name', n8n: 'name' }, @@ -175,6 +182,11 @@ const ROUTES: Record> = { { api: 'events_history_enabled', n8n: 'eventsHistoryEnabled' }, { api: 'who_can_add', n8n: 'whoCanAdd' }, { api: 'can_edit', n8n: 'canEdit', isArray: true, arrayType: 'string' }, + { api: 'single_chat', n8n: 'singleChat' }, + { api: 'kind', n8n: 'kind' }, + { api: 'unfurl_domains', n8n: 'unfurlDomains', isArray: true, arrayType: 'string' }, + { api: 'oauth_client', n8n: 'oauthClient', isJson: true }, + { api: 'promo', n8n: 'promo', isJson: true }, ], }, delete: { @@ -187,6 +199,52 @@ const ROUTES: Record> = { path: '/bots/{id}/recreate_token', pathParams: [{ api: 'id', n8n: 'id' }], }, + rotateClientSecret: { + method: 'POST' as IHttpRequestMethods, + path: '/bots/{id}/rotate_client_secret', + pathParams: [{ api: 'id', n8n: 'id' }], + }, + getScopes: { + method: 'GET' as IHttpRequestMethods, + path: '/bots/{id}/scopes', + pathParams: [{ api: 'id', n8n: 'id' }], + }, + getAllTokens: { + method: 'GET' as IHttpRequestMethods, + path: '/bots/{id}/tokens', + pathParams: [{ api: 'id', n8n: 'id' }], + paginated: true, + }, + createToken: { + method: 'POST' as IHttpRequestMethods, + path: '/bots/{id}/tokens', + pathParams: [{ api: 'id', n8n: 'id' }], + bodyMap: [ + { api: 'name', n8n: 'name' }, + ], + optionalBodyMap: [ + { api: 'scopes', n8n: 'scopes', isArray: true, arrayType: 'string' }, + ], + }, + updateToken: { + method: 'PUT' as IHttpRequestMethods, + path: '/bots/{id}/tokens/{token_id}', + pathParams: [{ api: 'id', n8n: 'id' }, { api: 'token_id', n8n: 'tokenId' }], + optionalBodyMap: [ + { api: 'name', n8n: 'name' }, + { api: 'scopes', n8n: 'scopes', isArray: true, arrayType: 'string' }, + ], + }, + deleteToken: { + method: 'DELETE' as IHttpRequestMethods, + path: '/bots/{id}/tokens/{token_id}', + pathParams: [{ api: 'id', n8n: 'id' }, { api: 'token_id', n8n: 'tokenId' }], + }, + reissueToken: { + method: 'POST' as IHttpRequestMethods, + path: '/bots/{id}/tokens/{token_id}/reissue', + pathParams: [{ api: 'id', n8n: 'id' }, { api: 'token_id', n8n: 'tokenId' }], + }, getAllCompanyBots: { method: 'GET' as IHttpRequestMethods, path: '/company/bots', @@ -272,6 +330,14 @@ const ROUTES: Record> = { path: '/chats/{id}/unarchive', pathParams: [{ api: 'id', n8n: 'id', locator: true, v1Fallback: 'chatId' }], }, + markUnread: { + method: 'PUT' as IHttpRequestMethods, + path: '/chats/{id}/unread', + pathParams: [{ api: 'id', n8n: 'id', locator: true }], + optionalBodyMap: [ + { api: 'message_id', n8n: 'messageId' }, + ], + }, getAllCompanyChats: { method: 'GET' as IHttpRequestMethods, path: '/company/chats', diff --git a/integrations/n8n/nodes/Pachca/V2/BotDescription.ts b/integrations/n8n/nodes/Pachca/V2/BotDescription.ts index 94228fb71..25d1e9129 100644 --- a/integrations/n8n/nodes/Pachca/V2/BotDescription.ts +++ b/integrations/n8n/nodes/Pachca/V2/BotDescription.ts @@ -13,11 +13,21 @@ export const botOperations: INodeProperties[] = [ value: 'create', action: 'Create a bot', }, + { + name: 'Create Token', + value: 'createToken', + action: 'Create a bot token', + }, { name: 'Delete', value: 'delete', action: 'Delete a bot', }, + { + name: 'Delete Token', + value: 'deleteToken', + action: 'Delete a bot token', + }, { name: 'Get', value: 'get', @@ -33,11 +43,21 @@ export const botOperations: INodeProperties[] = [ value: 'getAllEvents', action: 'Get many bot events', }, + { + name: 'Get Many Tokens', + value: 'getAllTokens', + action: 'Get many bot tokens', + }, { name: 'Get Many Workspace Bots', value: 'getAllCompanyBots', action: 'Get many workspace bots', }, + { + name: 'Get Scopes', + value: 'getScopes', + action: 'Get bot scope catalog', + }, { name: 'Recreate Token', value: 'recreateToken', @@ -48,16 +68,31 @@ export const botOperations: INodeProperties[] = [ value: 'recreateTokenSelf', action: 'Recreate own bot token', }, + { + name: 'Reissue Token', + value: 'reissueToken', + action: 'Reissue a bot token', + }, { name: 'Remove Events', value: 'removeEvents', action: 'Remove events from bot', }, + { + name: 'Rotate Client Secret', + value: 'rotateClientSecret', + action: 'Rotate bot client secret', + }, { name: 'Update', value: 'update', action: 'Update a bot', }, + { + name: 'Update Token', + value: 'updateToken', + action: 'Update a bot token', + }, { name: 'Update Webhook', value: 'updateWebhook', @@ -183,6 +218,13 @@ export const botFields: INodeProperties[] = [ description: 'Bot commands (trigger words) it reacts to when trigger_on = commands. The combined length of the comma-joined commands must not exceed 255 characters.', placeholder: '/task,/help', }, + { + displayName: 'Empty', + name: 'empty', + type: 'boolean', + default: false, + description: 'Whether to create an empty bot: without a token and without an incoming webhook. Without this field the bot is created with an incoming webhook in its own format, and its token comes in `access_token`.', + }, { displayName: 'Events', name: 'events', @@ -205,6 +247,16 @@ export const botFields: INodeProperties[] = [ default: false, description: 'Whether to ignore incoming messages sent by the bot itself', }, + { + displayName: 'Kind', + name: 'kind', + type: 'options', + options: [{ name: 'Gitlab', value: 'gitlab', description: 'GitLab: Pachca parses the request and builds the message itself' }, +{ name: 'Grafana', value: 'grafana', description: 'Grafana: Pachca parses the request and builds the message itself' }, +{ name: 'Simple', value: 'simple', description: 'Custom format: the message is built from the request body with the bot\'s template' }], + default: "simple", + description: 'Incoming webhook source. Without `empty` it defaults to `simple`, and an empty bot gets an incoming webhook only through this field.', + }, { displayName: 'Link Preview Enabled', name: 'linkPreviewEnabled', @@ -220,6 +272,13 @@ export const botFields: INodeProperties[] = [ description: 'Bot nickname. Must end with `_bot`.', placeholder: 'tasks_bot', }, + { + displayName: 'OAuth Client', + name: 'oauthClient', + type: 'json', + default: "{}", + description: 'Settings of authorization on behalf of an employee', + }, { displayName: 'Outgoing URL', name: 'outgoingUrl', @@ -228,6 +287,13 @@ export const botFields: INodeProperties[] = [ description: 'Outgoing webhook URL', placeholder: 'https://www.website.com/tasks/new', }, + { + displayName: 'Promo', + name: 'promo', + type: 'json', + default: "{}", + description: 'The bot\'s catalog page', + }, { displayName: 'Scopes', name: 'scopes', @@ -241,7 +307,7 @@ export const botFields: INodeProperties[] = [ name: 'singleChat', type: 'boolean', default: false, - description: 'Whether to restricts the bot to a single group chat. `true` — the bot can be added to one discussion or channel only, `false` — to multiple. Personal chats and threads don\'t count toward this limit. Set only on creation and not changed on update.', + description: 'Whether to restricts the bot to a single group chat. `true` — the bot can be added to one discussion or channel only, `false` — to multiple. Personal chats and threads don\'t count toward this limit.', }, { displayName: 'Template', @@ -270,11 +336,19 @@ export const botFields: INodeProperties[] = [ default: "commands", description: 'Outgoing webhook trigger condition', }, + { + displayName: 'Unfurl Domains', + name: 'unfurlDomains', + type: 'string', + default: "", + description: 'Domains whose links the bot unfurls, up to 5. They work together with the `message_link_shared` event.', + placeholder: 'example.com', + }, { displayName: 'Who Can Add', name: 'whoCanAdd', type: 'options', - options: [{ name: 'Anyone', value: 'anyone', description: 'Anyone, including guests' }, + options: [{ name: 'Anyone', value: 'anyone', description: 'Public bot: any employee except guests and multi-guests can add it' }, { name: 'Creator', value: 'creator', description: 'Only the bot creator' }, { name: 'Creator Admin', value: 'creator_admin', description: 'The creator and company administrators' }, { name: 'Creator Admin User', value: 'creator_admin_user', description: 'The creator, administrators, and company members' }], @@ -387,6 +461,16 @@ export const botFields: INodeProperties[] = [ default: false, description: 'Whether to ignore incoming messages sent by the bot itself', }, + { + displayName: 'Kind', + name: 'kind', + type: 'options', + options: [{ name: 'Gitlab', value: 'gitlab', description: 'GitLab: Pachca parses the request and builds the message itself' }, +{ name: 'Grafana', value: 'grafana', description: 'Grafana: Pachca parses the request and builds the message itself' }, +{ name: 'Simple', value: 'simple', description: 'Custom format: the message is built from the request body with the bot\'s template' }], + default: "simple", + description: 'Incoming webhook source. If the bot had no incoming webhook, it is enabled.', + }, { displayName: 'Link Preview Enabled', name: 'linkPreviewEnabled', @@ -410,6 +494,13 @@ export const botFields: INodeProperties[] = [ description: 'Bot nickname. Must end with `_bot`.', placeholder: 'tasks_bot', }, + { + displayName: 'OAuth Client', + name: 'oauthClient', + type: 'json', + default: "{}", + description: 'Settings of authorization on behalf of an employee', + }, { displayName: 'Outgoing URL', name: 'webhookUrl', @@ -418,6 +509,13 @@ export const botFields: INodeProperties[] = [ description: 'Outgoing webhook URL', placeholder: 'https://www.website.com/tasks/new', }, + { + displayName: 'Promo', + name: 'promo', + type: 'json', + default: "{}", + description: 'The bot\'s catalog page', + }, { displayName: 'Scopes', name: 'scopes', @@ -426,6 +524,13 @@ export const botFields: INodeProperties[] = [ description: 'Bot token scopes (permissions). If omitted, the bot receives the default set. Not every scope is available to a bot: some are allowed only for user roles, and attempting to assign such a scope returns `400`. The service values `bot` and `all` cannot be assigned.', placeholder: 'messages:create', }, + { + displayName: 'Single Chat', + name: 'singleChat', + type: 'boolean', + default: false, + description: 'Whether to restricts the bot to a single group chat. `true` — the bot can be added to one discussion or channel only, `false` — to multiple. Personal chats and threads don\'t count toward this limit.', + }, { displayName: 'Template', name: 'template', @@ -453,11 +558,19 @@ export const botFields: INodeProperties[] = [ default: "commands", description: 'Outgoing webhook trigger condition', }, + { + displayName: 'Unfurl Domains', + name: 'unfurlDomains', + type: 'string', + default: "", + description: 'Domains whose links the bot unfurls, up to 5. They work together with the `message_link_shared` event.', + placeholder: 'example.com', + }, { displayName: 'Who Can Add', name: 'whoCanAdd', type: 'options', - options: [{ name: 'Anyone', value: 'anyone', description: 'Anyone, including guests' }, + options: [{ name: 'Anyone', value: 'anyone', description: 'Public bot: any employee except guests and multi-guests can add it' }, { name: 'Creator', value: 'creator', description: 'Only the bot creator' }, { name: 'Creator Admin', value: 'creator_admin', description: 'The creator and company administrators' }, { name: 'Creator Admin User', value: 'creator_admin_user', description: 'The creator, administrators, and company members' }], @@ -498,6 +611,229 @@ export const botFields: INodeProperties[] = [ default: '', displayOptions: { show: { resource: ['bot'], operation: ['recreateToken'] } }, }, + { + displayName: 'ID', + name: 'id', + type: 'number', + required: true, + default: 0, + displayOptions: { show: { resource: ['bot'], operation: ['rotateClientSecret'] } }, + description: 'Bot ID', + }, + { + displayName: 'Requires owner, admin, user roles', + name: 'botRotateClientSecretNotice', + type: 'notice', + default: '', + displayOptions: { show: { resource: ['bot'], operation: ['rotateClientSecret'] } }, + }, + { + displayName: 'ID', + name: 'id', + type: 'number', + required: true, + default: 0, + displayOptions: { show: { resource: ['bot'], operation: ['getScopes'] } }, + description: 'Bot ID', + }, + { + displayName: 'Requires owner, admin, user roles', + name: 'botGetScopesNotice', + type: 'notice', + default: '', + displayOptions: { show: { resource: ['bot'], operation: ['getScopes'] } }, + }, + { + displayName: 'Simplify', + name: 'simplify', + type: 'boolean', + default: true, + description: 'Whether to return a simplified version of the response instead of all fields', + displayOptions: { show: { resource: ['bot'], operation: ['getScopes'] } }, + }, + { + displayName: 'ID', + name: 'id', + type: 'number', + required: true, + default: 0, + displayOptions: { show: { resource: ['bot'], operation: ['getAllTokens'] } }, + description: 'Bot ID', + }, + { + displayName: 'Requires owner, admin, user roles', + name: 'botGetAllTokensNotice', + type: 'notice', + default: '', + displayOptions: { show: { resource: ['bot'], operation: ['getAllTokens'] } }, + }, + { + displayName: 'Return All', + name: 'returnAll', + type: 'boolean', + default: false, + description: 'Whether to return all results or only up to a given limit', + displayOptions: { show: { resource: ['bot'], operation: ['getAllTokens'] } }, + }, + { + displayName: 'Limit', + name: 'limit', + type: 'number', + default: 50, + description: 'Max number of results to return', + typeOptions: { minValue: 1, maxValue: 50 }, + displayOptions: { show: { resource: ['bot'], operation: ['getAllTokens'], returnAll: [false] } }, + }, + { + displayName: 'Simplify', + name: 'simplify', + type: 'boolean', + default: true, + description: 'Whether to return a simplified version of the response instead of all fields', + displayOptions: { show: { resource: ['bot'], operation: ['getAllTokens'] } }, + }, + { + displayName: 'ID', + name: 'id', + type: 'number', + required: true, + default: 0, + displayOptions: { show: { resource: ['bot'], operation: ['createToken'] } }, + description: 'Bot ID', + }, + { + displayName: 'Requires owner, admin, user roles', + name: 'botCreateTokenNotice', + type: 'notice', + default: '', + displayOptions: { show: { resource: ['bot'], operation: ['createToken'] } }, + }, + { + displayName: 'Name', + name: 'name', + type: 'string', + required: true, + default: "", + description: 'Token name: tokens are told apart by it in the list', + displayOptions: { show: { resource: ['bot'], operation: ['createToken'] } }, + placeholder: 'Notification server', + }, + { + displayName: 'Additional Fields', + name: 'additionalFields', + type: 'collection', + placeholder: 'Add Field', + default: {}, + displayOptions: { show: { resource: ['bot'], operation: ['createToken'] } }, + options: [ + { + displayName: 'Scopes', + name: 'scopes', + type: 'string', + default: "", + description: 'Token scopes. Only scopes that can be granted to a bot are available. If omitted, the token is issued without scopes.', + placeholder: 'messages:create,chats:read', + }, + ], + }, + { + displayName: 'ID', + name: 'id', + type: 'number', + required: true, + default: 0, + displayOptions: { show: { resource: ['bot'], operation: ['updateToken'] } }, + description: 'Bot ID', + }, + { + displayName: 'Token ID', + name: 'tokenId', + type: 'number', + required: true, + default: 0, + displayOptions: { show: { resource: ['bot'], operation: ['updateToken'] } }, + }, + { + displayName: 'Requires owner, admin, user roles', + name: 'botUpdateTokenNotice', + type: 'notice', + default: '', + displayOptions: { show: { resource: ['bot'], operation: ['updateToken'] } }, + }, + { + displayName: 'Additional Fields', + name: 'additionalFields', + type: 'collection', + placeholder: 'Add Field', + default: {}, + displayOptions: { show: { resource: ['bot'], operation: ['updateToken'] } }, + options: [ + { + displayName: 'Name', + name: 'name', + type: 'string', + default: "", + description: 'New token name', + placeholder: 'Notification server', + }, + { + displayName: 'Scopes', + name: 'scopes', + type: 'string', + default: "", + description: 'New token scopes. The list is replaced as a whole and takes effect immediately, there is no need to reissue the token.', + placeholder: 'messages:create,chats:read', + }, + ], + }, + { + displayName: 'ID', + name: 'id', + type: 'number', + required: true, + default: 0, + displayOptions: { show: { resource: ['bot'], operation: ['deleteToken'] } }, + description: 'Bot ID', + }, + { + displayName: 'Token ID', + name: 'tokenId', + type: 'number', + required: true, + default: 0, + displayOptions: { show: { resource: ['bot'], operation: ['deleteToken'] } }, + }, + { + displayName: 'Requires owner, admin, user roles', + name: 'botDeleteTokenNotice', + type: 'notice', + default: '', + displayOptions: { show: { resource: ['bot'], operation: ['deleteToken'] } }, + }, + { + displayName: 'ID', + name: 'id', + type: 'number', + required: true, + default: 0, + displayOptions: { show: { resource: ['bot'], operation: ['reissueToken'] } }, + description: 'Bot ID', + }, + { + displayName: 'Token ID', + name: 'tokenId', + type: 'number', + required: true, + default: 0, + displayOptions: { show: { resource: ['bot'], operation: ['reissueToken'] } }, + }, + { + displayName: 'Requires owner, admin, user roles', + name: 'botReissueTokenNotice', + type: 'notice', + default: '', + displayOptions: { show: { resource: ['bot'], operation: ['reissueToken'] } }, + }, { displayName: 'Requires owner role and the "Corporation" plan', name: 'botGetAllCompanyBotsNotice', diff --git a/integrations/n8n/nodes/Pachca/V2/ChatDescription.ts b/integrations/n8n/nodes/Pachca/V2/ChatDescription.ts index d365680db..8af1f436d 100644 --- a/integrations/n8n/nodes/Pachca/V2/ChatDescription.ts +++ b/integrations/n8n/nodes/Pachca/V2/ChatDescription.ts @@ -38,6 +38,11 @@ export const chatOperations: INodeProperties[] = [ value: 'getAllCompanyChats', action: 'Get many workspace chats', }, + { + name: 'Mark Unread', + value: 'markUnread', + action: 'Mark a chat as unread', + }, { name: 'Request Export', value: 'requestExport', @@ -459,6 +464,55 @@ export const chatFields: INodeProperties[] = [ ], displayOptions: { show: { resource: ['chat'], operation: ['unarchive'] } }, }, + { + displayName: 'ID', + name: 'id', + type: 'resourceLocator', + default: { mode: 'list', value: '' }, + required: true, + description: 'Chat or thread ID', + modes: [ + { + displayName: 'From List', + name: 'list', + type: 'list', + typeOptions: { searchListMethod: 'searchChats', searchable: true }, + }, + { + displayName: 'By ID', + name: 'id', + type: 'string', + placeholder: 'e.g. 334', + }, + { + displayName: 'By URL', + name: 'url', + type: 'string', + placeholder: 'https://app.pachca.com/chats/12345', + extractValue: { type: 'regex', regex: 'https?://[^/]+/chats/(\\d+)' }, + validation: [{ type: 'regex', properties: { regex: 'https?://[^/]+/chats/(\\d+)', errorMessage: 'Not a valid Pachca chat URL' } }], + }, + ], + displayOptions: { show: { resource: ['chat'], operation: ['markUnread'] } }, + }, + { + displayName: 'Additional Fields', + name: 'additionalFields', + type: 'collection', + placeholder: 'Add Field', + default: {}, + displayOptions: { show: { resource: ['chat'], operation: ['markUnread'] } }, + options: [ + { + displayName: 'Message ID', + name: 'messageId', + type: 'number', + default: 0, + description: 'ID of the message from which the chat becomes unread: this message and all messages after it. If omitted, the last message becomes unread.', + placeholder: '1194275', + }, + ], + }, { displayName: 'Requires owner role and the "Corporation" plan', name: 'chatGetAllCompanyChatsNotice', diff --git a/integrations/n8n/nodes/Pachca/V2/DraftDescription.ts b/integrations/n8n/nodes/Pachca/V2/DraftDescription.ts index 6a9392a7a..bc08d252c 100644 --- a/integrations/n8n/nodes/Pachca/V2/DraftDescription.ts +++ b/integrations/n8n/nodes/Pachca/V2/DraftDescription.ts @@ -39,13 +39,6 @@ export const draftOperations: INodeProperties[] = [ ]; export const draftFields: INodeProperties[] = [ - { - displayName: 'Requires owner, admin, user roles', - name: 'draftCreateNotice', - type: 'notice', - default: '', - displayOptions: { show: { resource: ['draft'], operation: ['create'] } }, - }, { displayName: 'Entity Type', name: 'entityType', @@ -99,7 +92,7 @@ export const draftFields: INodeProperties[] = [ name: 'duration_ms', type: 'number', default: 0, - description: 'Duration in milliseconds. Required for a voice message (`file_type` is `voice`).', + description: 'Duration in milliseconds. Required for a voice message (`file_type` is `voice`). A voice message longer than 30 minutes (1,800,000 ms) is rejected with `422`.', }, { displayName: 'File Type', @@ -183,13 +176,6 @@ export const draftFields: INodeProperties[] = [ }, ], }, - { - displayName: 'Requires owner, admin, user roles', - name: 'draftGetAllNotice', - type: 'notice', - default: '', - displayOptions: { show: { resource: ['draft'], operation: ['getAll'] } }, - }, { displayName: 'Return All', name: 'returnAll', @@ -255,13 +241,6 @@ export const draftFields: INodeProperties[] = [ displayOptions: { show: { resource: ['draft'], operation: ['get'] } }, description: 'Draft ID', }, - { - displayName: 'Requires owner, admin, user roles', - name: 'draftGetNotice', - type: 'notice', - default: '', - displayOptions: { show: { resource: ['draft'], operation: ['get'] } }, - }, { displayName: 'Simplify', name: 'simplify', @@ -279,13 +258,6 @@ export const draftFields: INodeProperties[] = [ displayOptions: { show: { resource: ['draft'], operation: ['update'] } }, description: 'Draft ID', }, - { - displayName: 'Requires owner, admin, user roles', - name: 'draftUpdateNotice', - type: 'notice', - default: '', - displayOptions: { show: { resource: ['draft'], operation: ['update'] } }, - }, { displayName: 'Additional Fields', name: 'additionalFields', @@ -317,7 +289,7 @@ export const draftFields: INodeProperties[] = [ name: 'duration_ms', type: 'number', default: 0, - description: 'Duration in milliseconds. Required for a voice message (`file_type` is `voice`).', + description: 'Duration in milliseconds. Required for a voice message (`file_type` is `voice`). A voice message longer than 30 minutes (1,800,000 ms) is rejected with `422`.', }, { displayName: 'File Type', @@ -410,11 +382,4 @@ export const draftFields: INodeProperties[] = [ displayOptions: { show: { resource: ['draft'], operation: ['delete'] } }, description: 'Draft ID', }, - { - displayName: 'Requires owner, admin, user roles', - name: 'draftDeleteNotice', - type: 'notice', - default: '', - displayOptions: { show: { resource: ['draft'], operation: ['delete'] } }, - }, ]; \ No newline at end of file diff --git a/integrations/n8n/nodes/Pachca/V2/MessageDescription.ts b/integrations/n8n/nodes/Pachca/V2/MessageDescription.ts index 8bfd4baf0..dcc3c67eb 100644 --- a/integrations/n8n/nodes/Pachca/V2/MessageDescription.ts +++ b/integrations/n8n/nodes/Pachca/V2/MessageDescription.ts @@ -96,7 +96,7 @@ export const messageFields: INodeProperties[] = [ required: true, typeOptions: { rows: 4 }, default: "", - description: 'Message text. Supports mentions: `@nickname` or `<@user_id>` (automatically converted to `@nickname`).', + description: 'Message text. Supports mentions: `@nickname` or `<@user_id>` (automatically converted to `@nickname`). For a multi-guest, `<@user_id>` of an employee not accessible to them stays in the text as is.', displayOptions: { show: { resource: ['message'], operation: ['create'] } }, placeholder: 'Yesterday we sold 756 t-shirts (10% more than last Sunday)', }, @@ -138,7 +138,7 @@ export const messageFields: INodeProperties[] = [ name: 'duration_ms', type: 'number', default: 0, - description: 'Duration in milliseconds. Required for voice messages (`file_type` is `voice`), not used for other types.', + description: 'Duration in milliseconds. Required for voice messages (`file_type` is `voice`), not used for other types. A voice message longer than 30 minutes (1,800,000 ms) is rejected with `422`.', }, { displayName: 'File Type', @@ -211,7 +211,7 @@ export const messageFields: INodeProperties[] = [ name: 'parentMessageId', type: 'number', default: 0, - description: 'ID of the message you are replying to. The reply appears right in the chat feed rather than in a thread: to write into a thread, send the message with `entity_type: "thread"`.', + description: 'ID of the message you are replying to with a quote. You can reply to a message in any chat, including a thread: send the reply to the same chat or thread where that message is, otherwise the request returns a `422` error. To write into the thread under a message, set `entity_type: "thread"` and the thread ID in `entity_id`.', placeholder: '194270', }, { @@ -413,7 +413,7 @@ export const messageFields: INodeProperties[] = [ type: 'string', typeOptions: { rows: 4 }, default: "", - description: 'Message text. Supports mentions: `@nickname` or `<@user_id>` (automatically converted to `@nickname`).', + description: 'Message text. Supports mentions: `@nickname` or `<@user_id>` (automatically converted to `@nickname`). For a multi-guest, `<@user_id>` of an employee not accessible to them stays in the text as is.', placeholder: 'Try to spell these correctly on the first attempt: bureaucracy, accommodate, definitely, entrepreneur, liaison, necessary, surveillance, questionnaire.', }, { @@ -446,7 +446,7 @@ export const messageFields: INodeProperties[] = [ name: 'duration_ms', type: 'number', default: 0, - description: 'Duration in milliseconds. Required for voice messages (`file_type` is `voice`), not used for other types.', + description: 'Duration in milliseconds. Required for voice messages (`file_type` is `voice`), not used for other types. A voice message longer than 30 minutes (1,800,000 ms) is rejected with `422`.', }, { displayName: 'File Type', diff --git a/integrations/n8n/nodes/Pachca/V2/SecurityDescription.ts b/integrations/n8n/nodes/Pachca/V2/SecurityDescription.ts index 7290314cd..7e72f7e55 100644 --- a/integrations/n8n/nodes/Pachca/V2/SecurityDescription.ts +++ b/integrations/n8n/nodes/Pachca/V2/SecurityDescription.ts @@ -106,9 +106,14 @@ export const securityFields: INodeProperties[] = [ { name: 'Access Token Updated', value: 'access_token_updated' }, { name: 'Audit Events Accessed', value: 'audit_events_accessed', description: 'Audit logs accessed' }, { name: 'Bot Deleted', value: 'bot_deleted' }, +{ name: 'Bot OAuth Client Disabled', value: 'bot_oauth_client_disabled', description: 'Authorization on behalf of an employee disabled for the bot' }, +{ name: 'Bot OAuth Client Secret Rotated', value: 'bot_oauth_client_secret_rotated' }, { name: 'Bot OAuth Client Updated', value: 'bot_oauth_client_updated', description: 'Bot OAuth client settings changed' }, { name: 'Bot Scopes Updated', value: 'bot_scopes_updated', description: 'Bot token scopes changed' }, +{ name: 'Bot Token Created', value: 'bot_token_created', description: 'Bot token issued' }, { name: 'Bot Token Recreated', value: 'bot_token_recreated', description: 'Bot token recreated (rotation)' }, +{ name: 'Bot Token Reissued', value: 'bot_token_reissued', description: 'Additional bot token reissued' }, +{ name: 'Bot Token Updated', value: 'bot_token_updated', description: 'Bot token name or scopes changed' }, { name: 'Bot Webhook Settings Updated', value: 'bot_webhook_settings_updated', description: 'Bot outgoing webhook settings changed' }, { name: 'Chat Created', value: 'chat_created', description: 'New chat created' }, { name: 'Chat Permission Changed', value: 'chat_permission_changed', description: 'Chat access permissions changed' }, diff --git a/integrations/n8n/nodes/Pachca/V2/TaskDescription.ts b/integrations/n8n/nodes/Pachca/V2/TaskDescription.ts index 02e62a3ef..b7d5517ef 100644 --- a/integrations/n8n/nodes/Pachca/V2/TaskDescription.ts +++ b/integrations/n8n/nodes/Pachca/V2/TaskDescription.ts @@ -183,7 +183,7 @@ export const taskFields: INodeProperties[] = [ name: 'chatIds', type: 'string', default: "", - description: 'Filter by the chats the tasks are attached to. Accessible chats are the ones you are a member of, public conversations and channels of the workspace, and threads available to you through their parent chat. The remaining IDs are ignored without an error. Up to 100 IDs.', + description: 'Filter by the chats the tasks are attached to. Accessible chats are the ones you are a member of, public conversations and channels of the workspace, and threads available to you through their parent chat. For a multi-guest, public conversations and channels are accessible only if they are a member. The remaining IDs are ignored without an error. Up to 100 IDs.', placeholder: '198,334', displayOptions: { show: { resource: ['task'], operation: ['getAll'] } }, }, diff --git a/integrations/n8n/nodes/Pachca/V2/UserDescription.ts b/integrations/n8n/nodes/Pachca/V2/UserDescription.ts index a827dadf6..426444bf9 100644 --- a/integrations/n8n/nodes/Pachca/V2/UserDescription.ts +++ b/integrations/n8n/nodes/Pachca/V2/UserDescription.ts @@ -151,7 +151,7 @@ export const userFields: INodeProperties[] = [ name: 'listTags', type: 'string', default: "", - description: 'Array of tags to assign to the employee', + description: 'Array of tag names to assign to the employee. A value that is not an array of non-empty strings is ignored.', placeholder: 'Product,Design', }, { @@ -385,7 +385,7 @@ export const userFields: INodeProperties[] = [ name: 'listTags', type: 'string', default: "", - description: 'Array of tags to assign to the employee', + description: 'Array of tag names to assign to the employee. The list replaces the previous one as a whole, an empty one removes all tags. A value that is not an array of non-empty strings is ignored: the employee\'s tags do not change.', placeholder: 'Product,Design', }, { diff --git a/integrations/n8n/scripts/generate-n8n.ts b/integrations/n8n/scripts/generate-n8n.ts index 1e4cb4cd8..dab388da1 100644 --- a/integrations/n8n/scripts/generate-n8n.ts +++ b/integrations/n8n/scripts/generate-n8n.ts @@ -539,6 +539,14 @@ function endpointToOperation(ep: Endpoint, resource: string): string { if (ep.path === '/company/bots' && method === 'GET') return 'getAllCompanyBots'; // Ответ на отправку формы: без пина POST даёт "addSubmitResponse" и читается как создание. if (ep.path === '/views/{view_id}/submit_response' && method === 'POST') return 'submitResponse'; + // Токены и секрет бота: без пина вышли бы "addTokens", "removeTokens", "addReissue" + // и "addRotateClientSecret", а отметка чата непрочитанным — "updateUnread". + if (ep.path === '/bots/{id}/tokens' && method === 'POST') return 'createToken'; + if (ep.path === '/bots/{id}/tokens/{token_id}' && method === 'PUT') return 'updateToken'; + if (ep.path === '/bots/{id}/tokens/{token_id}' && method === 'DELETE') return 'deleteToken'; + if (ep.path === '/bots/{id}/tokens/{token_id}/reissue' && method === 'POST') return 'reissueToken'; + if (ep.path === '/bots/{id}/rotate_client_secret' && method === 'POST') return 'rotateClientSecret'; + if (ep.path === '/chats/{id}/unread' && method === 'PUT') return 'markUnread'; // Sub-resource action paths (e.g., /users/{id}/status → getStatus, updateStatus) // When last static segment differs from the resource root and is NOT a CRUD collection @@ -609,6 +617,8 @@ function operationDisplayName(op: string): string { requestExport: 'Request Export', downloadExport: 'Download Export', unfurl: 'Unfurl', createStandalone: 'Create Standalone', getAllCompanyChats: 'Get Many Workspace Chats', getAllCompanyBots: 'Get Many Workspace Bots', + createToken: 'Create Token', updateToken: 'Update Token', deleteToken: 'Delete Token', + reissueToken: 'Reissue Token', rotateClientSecret: 'Rotate Client Secret', markUnread: 'Mark Unread', }; if (MAP[op]) return MAP[op]; // Sub-resource operations: "getAllStatus" → "Get Many Status", "updateMembers" → "Update Members" @@ -676,6 +686,14 @@ function actionLabel(op: string, resourceName: string, resource?: string): strin getAllCompanyChats: 'Get many workspace chats', getAllCompanyBots: 'Get many workspace bots', submitResponse: 'Respond to a form submission', + getAllTokens: 'Get many bot tokens', + createToken: 'Create a bot token', + updateToken: 'Update a bot token', + deleteToken: 'Delete a bot token', + reissueToken: 'Reissue a bot token', + getScopes: 'Get bot scope catalog', + rotateClientSecret: 'Rotate bot client secret', + markUnread: 'Mark a chat as unread', }; if (ALIAS_LABELS[op]) return ALIAS_LABELS[op]; diff --git a/integrations/n8n/tests/contract.test.ts b/integrations/n8n/tests/contract.test.ts index 59730792b..b4429b8d1 100644 --- a/integrations/n8n/tests/contract.test.ts +++ b/integrations/n8n/tests/contract.test.ts @@ -70,6 +70,12 @@ function endpointToOperation(ep: Endpoint, resource: string): string { if (ep.path === '/company/chats' && method === 'GET') return 'getAllCompanyChats'; if (ep.path === '/company/bots' && method === 'GET') return 'getAllCompanyBots'; if (ep.path === '/views/{view_id}/submit_response' && method === 'POST') return 'submitResponse'; + if (ep.path === '/bots/{id}/tokens' && method === 'POST') return 'createToken'; + if (ep.path === '/bots/{id}/tokens/{token_id}' && method === 'PUT') return 'updateToken'; + if (ep.path === '/bots/{id}/tokens/{token_id}' && method === 'DELETE') return 'deleteToken'; + if (ep.path === '/bots/{id}/tokens/{token_id}/reissue' && method === 'POST') return 'reissueToken'; + if (ep.path === '/bots/{id}/rotate_client_secret' && method === 'POST') return 'rotateClientSecret'; + if (ep.path === '/chats/{id}/unread' && method === 'PUT') return 'markUnread'; if (staticSegments.length > 1) { const resourceRoot = staticSegments[0]; diff --git a/integrations/n8n/tests/routes-spec.test.ts b/integrations/n8n/tests/routes-spec.test.ts index cefd5033e..aa1150514 100644 --- a/integrations/n8n/tests/routes-spec.test.ts +++ b/integrations/n8n/tests/routes-spec.test.ts @@ -72,6 +72,12 @@ function endpointToOperation(ep: Endpoint, resource: string): string { if (ep.path === '/company/chats' && method === 'GET') return 'getAllCompanyChats'; if (ep.path === '/company/bots' && method === 'GET') return 'getAllCompanyBots'; if (ep.path === '/views/{view_id}/submit_response' && method === 'POST') return 'submitResponse'; + if (ep.path === '/bots/{id}/tokens' && method === 'POST') return 'createToken'; + if (ep.path === '/bots/{id}/tokens/{token_id}' && method === 'PUT') return 'updateToken'; + if (ep.path === '/bots/{id}/tokens/{token_id}' && method === 'DELETE') return 'deleteToken'; + if (ep.path === '/bots/{id}/tokens/{token_id}/reissue' && method === 'POST') return 'reissueToken'; + if (ep.path === '/bots/{id}/rotate_client_secret' && method === 'POST') return 'rotateClientSecret'; + if (ep.path === '/chats/{id}/unread' && method === 'PUT') return 'markUnread'; if (staticSegments.length > 1) { const resourceRoot = staticSegments[0]; diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index 048e74e4f..38714184a 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,22 @@ # Changelog +## 2026.10.0 (1 октября 2026) + +- **Добавлено** (bots list-tokens, bots create-token, bots update-token, bots reissue-token, bots delete-token): Новые команды — токены бота: у бота может быть несколько токенов, у каждого своё имя и права. Значение токена показывается один раз, при выпуске и перевыпуске. +- **Добавлено** (bots list-scopes): Новая команда — каталог прав, которые можно выдать боту: его токенам и авторизации от имени сотрудника +- **Добавлено** (bots rotate-client-secret): Новая команда — новый `client_secret` для авторизации от имени сотрудника. Прежний секрет перестаёт работать сразу. +- **Добавлено** (bots create, bots update): Флаги `--oauth-client` и `--promo` включают авторизацию от имени сотрудника и заполняют страницу бота в витрине, `--kind` выбирает источник входящего вебхука, а `--unfurl-domains` задаёт домены для разворачивания ссылок. У `bots create` появился `--empty` для бота без токена, у `bots update` — `--single-chat`. +- **Добавлено** (chats mark-unread): Новая команда — отметка чата непрочитанным для владельца токена +- **Добавлено** (security list): Флаг `--event-key` принимает значения `bot_token_created`, `bot_token_updated`, `bot_token_reissued`, `bot_oauth_client_secret_rotated` и `bot_oauth_client_disabled` +- **Исправлено** (search users, search chats, search messages, users list): В справке описан ответ `504` с кодом `timeout`, если поиск не уложился по времени +- **Исправлено** (messages create, messages update, drafts create, drafts update): У файлов в справке указан предел голосового сообщения в 30 минут +- **Добавлено** (auth login): Вход через браузер передаёт серверу имя устройства, по которому вход узнаётся в списке токенов CLI: имя машины, а у профиля не по умолчанию ещё и имя профиля в скобках, например `macbook (ci)` +- **Изменено**: После ответа `401` CLI подсказывает, что делать дальше: войти заново, если вход через браузер отозван или завершён, или сохранить новый токен. В подсказку подставлен профиль, с которым запускалась команда, например `pachca auth login --profile ci` +- **Исправлено** (views open): В справке у блоков `radio` и `checkbox` до 20 вариантов +- **Исправлено** (guide): Сценарии разворачивания ссылок и поллинга описывают раздел «Интеграции»: событие ссылок с доменами вместо отдельного типа бота и история событий без Webhook URL флагом `--events-history-enabled`, который попал и в примеры `bots update` +- **Исправлено** (messages create, messages update, tasks list): Подсказки к `--content` и `--chat-ids` описывают, что меняется для мульти-гостя +- **Исправлено** (messages create, threads add, threads create, threads get, threads list): Подсказка к `--parent-message-id` описывает ответ с цитатой в любом чате, в том числе в треде. В описаниях тредов сказано, какой идентификатор куда передавать: `id` — чтобы написать в тред, `chat_id` — чтобы прочитать его сообщения. + ## 2026.9.1 (16 сентября 2026) - **Изменено**: Повтор после `429` ждёт не меньше срока из `Retry-After`: прежний потолок в 60 секунд убран. Пауза дольше минуты не повторяется — команда сразу возвращает ошибку с заголовком, потому что повтор внутри паузы её удваивает diff --git a/packages/cli/README.md b/packages/cli/README.md index fe4a4007a..6fe51616c 100644 --- a/packages/cli/README.md +++ b/packages/cli/README.md @@ -86,6 +86,13 @@ pachca guide # список всех сценариев | `pachca bots update` | Редактирование бота | | `pachca bots delete` | Удаление бота | | `pachca bots recreate-token` | Ротация токена бота | +| `pachca bots rotate-client-secret` | Ротация секрета клиента | +| `pachca bots list-scopes` | Каталог прав бота | +| `pachca bots list-tokens` | Список токенов бота | +| `pachca bots create-token` | Новый токен бота | +| `pachca bots update-token` | Изменение токена бота | +| `pachca bots delete-token` | Удаление токена бота | +| `pachca bots reissue-token` | Перевыпуск токена бота | | `pachca bots list-company` | Список ботов пространства | | `pachca bots list-events` | История событий | | `pachca bots remove-event` | Удаление события | @@ -102,6 +109,7 @@ pachca guide # список всех сценариев | `pachca chats update` | Редактирование чата | | `pachca chats archive` | Архивация чата | | `pachca chats unarchive` | Разархивация чата | +| `pachca chats mark-unread` | Отметка чата непрочитанным | | `pachca chats list-company` | Список чатов пространства | ### members diff --git a/packages/cli/oclif.manifest.json b/packages/cli/oclif.manifest.json index 196f5bbe5..e85b1c287 100644 --- a/packages/cli/oclif.manifest.json +++ b/packages/cli/oclif.manifest.json @@ -1 +1 @@ -{"commands":{"api":{"aliases":[],"args":{"method":{"description":"HTTP-метод (GET, POST, PUT, DELETE, PATCH)","name":"method","options":["GET","POST","PUT","DELETE","PATCH"],"required":true},"path":{"description":"Путь API (например, /messages)","name":"path","required":true}},"description":"Произвольный запрос к API. Список и справка: `api ls` (список эндпоинтов), `api <МЕТОД> <путь> --describe` / `--spec` / `--docs`","examples":["<%= config.bin %> api GET /messages --query chat_id=123","<%= config.bin %> api POST /messages -F message[chat_id]=12345 -f message[content]=\"Привет\"","<%= config.bin %> api POST /messages --input payload.json","<%= config.bin %> api POST /messages --data '{\"message\":{\"entity_id\":123,\"content\":\"Привет\"}}'","<%= config.bin %> api GET /profile -o yaml","<%= config.bin %> api ls","<%= config.bin %> api ls --json","<%= config.bin %> api POST /messages --describe","<%= config.bin %> api GET /messages --spec","<%= config.bin %> api POST /messages --docs"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"raw-field":{"char":"f","description":"Строковое поле (key=value)","name":"raw-field","hasDynamicHelp":false,"multiple":true,"type":"option"},"field":{"char":"F","description":"Типизированное поле (числа/boolean автоматически, @file читает файл)","name":"field","hasDynamicHelp":false,"multiple":true,"type":"option"},"input":{"description":"JSON-файл с телом запроса (- для stdin)","name":"input","hasDynamicHelp":false,"multiple":false,"type":"option"},"data":{"description":"Тело запроса инлайн JSON-строкой","name":"data","hasDynamicHelp":false,"multiple":false,"type":"option"},"query":{"description":"Query-параметр (key=value)","name":"query","hasDynamicHelp":false,"multiple":true,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"api","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":false,"enableJsonFlag":false,"isESM":true,"relativePath":["dist","commands","api.js"]},"auth:list":{"aliases":[],"args":{},"description":"Список сохранённых профилей","examples":["<%= config.bin %> auth list","<%= config.bin %> auth list -o json"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"auth:list","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"isESM":true,"relativePath":["dist","commands","auth","list.js"]},"auth:login":{"aliases":[],"args":{},"description":"Вход в аккаунт и сохранение профиля","examples":["<%= config.bin %> auth login","<%= config.bin %> auth login --profile personal","<%= config.bin %> auth login --profile ci --token $PACHCA_TOKEN"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Имя профиля (по умолчанию \"default\")","name":"profile","default":"default","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Войти готовым токеном вместо входа через браузер. Значение `-` читает токен из потока ввода, не оставляя его в истории оболочки","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"no-browser":{"description":"Не открывать браузер — только напечатать адрес и код","name":"no-browser","allowNo":false,"type":"boolean"},"insecure-storage":{"description":"Хранить токен в файле конфигурации, а не в хранилище ключей ОС","name":"insecure-storage","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"auth:login","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"isESM":true,"relativePath":["dist","commands","auth","login.js"]},"auth:logout":{"aliases":[],"args":{"profile":{"description":"Имя профиля для удаления","name":"profile","required":false}},"description":"Удаление сохранённого профиля","examples":["<%= config.bin %> auth logout bot-notify","<%= config.bin %> auth logout"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"auth:logout","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"isESM":true,"relativePath":["dist","commands","auth","logout.js"]},"auth:status":{"aliases":[],"args":{},"description":"Статус текущего профиля","examples":["<%= config.bin %> auth status","<%= config.bin %> auth status -o json"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"remote":{"description":"Спросить права у сервера, а не показывать сохранённые при входе","name":"remote","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"auth:status","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"isESM":true,"relativePath":["dist","commands","auth","status.js"]},"auth:switch":{"aliases":[],"args":{"profile":{"description":"Имя профиля для переключения","name":"profile","required":true}},"description":"Переключение активного профиля","examples":["<%= config.bin %> auth switch bot-support"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"auth:switch","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"isESM":true,"relativePath":["dist","commands","auth","switch.js"]},"bots:create":{"aliases":[],"args":{},"description":"Новый бот","examples":["Создать бота через API и получить токен — Создай бота. Только пользовательским токеном (не токеном бота); `nickname` обязан заканчиваться на `_bot`. Параметры вебхука (Webhook URL, события, команды) можно задать сразу или позже. Скоупы токена бота можно ограничить флагом `--scopes` (если не указать — бот получит набор по умолчанию):\n $ pachca bots create","Настроить бота с исходящим вебхуком — Создай бота, сразу указав Webhook URL и события в одном вызове (детали создания и работы с токеном — в сценарии «Создать бота через API и получить токен»):\n $ pachca bots create"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"name":{"description":"Имя бота (макс. 255 символов)","name":"name","hasDynamicHelp":false,"multiple":false,"type":"option"},"nickname":{"description":"Никнейм бота. Должен заканчиваться на `_bot`. (макс. 255 символов)","name":"nickname","hasDynamicHelp":false,"multiple":false,"type":"option"},"outgoing-url":{"description":"URL исходящего вебхука","name":"outgoing-url","hasDynamicHelp":false,"multiple":false,"type":"option"},"events":{"description":"События, на которые подписан бот","name":"events","hasDynamicHelp":false,"multiple":false,"type":"option"},"trigger-on":{"description":"Условие срабатывания исходящего вебхука","name":"trigger-on","hasDynamicHelp":false,"multiple":false,"type":"option"},"commands":{"description":"Команды бота (триггер-слова), на которые он реагирует при trigger_on = commands. Суммарная длина команд, объединённых через запятую, не должна превышать 255 символов.","name":"commands","hasDynamicHelp":false,"multiple":false,"type":"option"},"scopes":{"description":"Скоупы (права доступа) токена бота. Если не указано, бот получает набор по умолчанию. Боту доступны не все скоупы: часть из них разрешена только пользовательским ролям, и попытка назначить такой скоуп возвращает `400`. Служебные значения `bot` и `all` назначать нельзя.","name":"scopes","hasDynamicHelp":false,"multiple":false,"type":"option"},"template":{"description":"Шаблон форматирования входящего вебхука","name":"template","hasDynamicHelp":false,"multiple":false,"type":"option"},"template-engine":{"description":"Шаблонизатор для обработки шаблона входящего вебхука","name":"template-engine","hasDynamicHelp":false,"multiple":false,"type":"option"},"challenge-key":{"description":"Название поля проверки для верификации входящего вебхука","name":"challenge-key","hasDynamicHelp":false,"multiple":false,"type":"option"},"link-preview-enabled":{"description":"Показывать превью ссылок в сообщениях входящего вебхука","name":"link-preview-enabled","allowNo":true,"type":"boolean"},"ignore-self-messages":{"description":"Игнорировать входящие сообщения, отправленные самим ботом","name":"ignore-self-messages","allowNo":true,"type":"boolean"},"events-history-enabled":{"description":"Сохранять историю событий бота для последующего получения через метод истории событий","name":"events-history-enabled","allowNo":true,"type":"boolean"},"who-can-add":{"description":"Кто может добавлять бота в чаты","name":"who-can-add","hasDynamicHelp":false,"multiple":false,"type":"option"},"can-edit":{"description":"Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель.","name":"can-edit","hasDynamicHelp":false,"multiple":false,"type":"option"},"single-chat":{"description":"Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Задаётся только при создании, при редактировании не меняется.","name":"single-chat","allowNo":true,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"bots:create","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"bots:write","apiMethod":"POST","apiPath":"/bots","defaultColumns":["id","webhook","access_token"],"requiredFlags":["name"],"isESM":true,"relativePath":["dist","commands","bots","create.js"]},"bots:delete":{"aliases":[],"args":{"id":{"description":"Идентификатор бота (pachca bots list)","name":"id","required":true}},"description":"Удаление бота","examples":["Найти и удалить бота — Возьми `id` нужного бота из списка и удали его (скоуп `bots:write`). Доступно администратору, владельцу компании или создателю бота — владельцы чатов удалять бота не могут. Прежний токен инвалидируется сразу, бот исключается из всех чатов, его исходящий вебхук удаляется:\n $ pachca bots delete"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"force":{"description":"Пропустить подтверждение","name":"force","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"bots:delete","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"bots:write","apiMethod":"DELETE","apiPath":"/bots/{id}","isESM":true,"relativePath":["dist","commands","bots","delete.js"]},"bots:get":{"aliases":[],"args":{"id":{"description":"Идентификатор бота (pachca bots list)","name":"id","required":true}},"description":"Информация о боте","flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"bots:get","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"bots:read","apiMethod":"GET","apiPath":"/bots/{id}","defaultColumns":["id","webhook"],"isESM":true,"relativePath":["dist","commands","bots","get.js"]},"bots:list":{"aliases":[],"args":{},"description":"Список ботов","examples":["Найти и удалить бота — Пользовательским токеном (скоуп `bots:read`) получи список ботов, доступных тебе для редактирования: созданных тобой и тех, чьи настройки открывают тебе доступ. Фильтруй по имени параметром `query`, следующую страницу бери из `meta.paginate.next_page`:\n $ pachca bots list"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"query":{"description":"Поисковая фраза для фильтрации ботов по имени","name":"query","hasDynamicHelp":false,"multiple":false,"type":"option"},"limit":{"description":"Количество результатов на страницу","name":"limit","hasDynamicHelp":false,"multiple":false,"type":"option"},"cursor":{"description":"Курсор для следующей страницы","name":"cursor","hasDynamicHelp":false,"multiple":false,"type":"option"},"all":{"description":"Загрузить все страницы автоматически","name":"all","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"bots:list","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"bots:read","apiMethod":"GET","apiPath":"/bots","defaultColumns":["id","webhook"],"isESM":true,"relativePath":["dist","commands","bots","list.js"]},"bots:list-company":{"aliases":[],"args":{},"description":"Список ботов пространства","examples":["Инвентаризация всех ботов пространства — Получи всех ботов пространства, а не только доступных для редактирования:\n $ pachca bots list-company"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"query":{"description":"Поисковая фраза для фильтрации ботов по имени","name":"query","hasDynamicHelp":false,"multiple":false,"type":"option"},"limit":{"description":"Количество результатов на страницу","name":"limit","hasDynamicHelp":false,"multiple":false,"type":"option"},"cursor":{"description":"Курсор для следующей страницы","name":"cursor","hasDynamicHelp":false,"multiple":false,"type":"option"},"all":{"description":"Загрузить все страницы автоматически","name":"all","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"bots:list-company","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"company_bots:read","plan":"corporation","apiMethod":"GET","apiPath":"/company/bots","defaultColumns":["id","webhook"],"isESM":true,"relativePath":["dist","commands","bots","list-company.js"]},"bots:list-events":{"aliases":[],"args":{},"description":"История событий","examples":["Обработка событий через историю (polling) — Получи накопленные события:\n $ pachca bots list-events"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"limit":{"description":"Количество результатов на страницу","name":"limit","hasDynamicHelp":false,"multiple":false,"type":"option"},"cursor":{"description":"Курсор для следующей страницы","name":"cursor","hasDynamicHelp":false,"multiple":false,"type":"option"},"all":{"description":"Загрузить все страницы автоматически","name":"all","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"bots:list-events","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"webhooks:events:read","apiMethod":"GET","apiPath":"/webhooks/events","defaultColumns":["id","created_at","event_type","payload"],"isESM":true,"relativePath":["dist","commands","bots","list-events.js"]},"bots:recreate-token":{"aliases":[],"args":{"id":{"description":"Идентификатор бота (pachca bots list)","name":"id","required":true}},"description":"Ротация токена бота","examples":["Ротация токена бота — Пользовательским токеном (администратор, владелец компании или создатель бота) — перевыпусти токен по `id` бота. Прежний токен инвалидируется сразу:\n $ pachca bots recreate-token"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"bots:recreate-token","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"bots:write","apiMethod":"POST","apiPath":"/bots/{id}/recreate_token","defaultColumns":["id","webhook","access_token"],"isESM":true,"relativePath":["dist","commands","bots","recreate-token.js"]},"bots:recreate-token-self":{"aliases":[],"args":{},"description":"Ротация собственного токена бота","examples":["Ротация токена бота — Или: бот перевыпускает собственный токен своим же токеном (скоуп `bot_self:write`). Токен, которым выполнен запрос, инвалидируется сразу — обязательно сохрани новый `access_token` из ответа, иначе бот потеряет доступ к API:\n $ pachca bots recreate-token-self"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"bots:recreate-token-self","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"bot_self:write","apiMethod":"POST","apiPath":"/bot/recreate_token","defaultColumns":["id","webhook","access_token"],"isESM":true,"relativePath":["dist","commands","bots","recreate-token-self.js"]},"bots:remove-event":{"aliases":[],"args":{"id":{"description":"Идентификатор события (pachca bots list)","name":"id","required":true}},"description":"Удаление события","examples":["Обработка событий через историю (polling) — Удали обработанное событие:\n $ pachca bots remove-event"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"force":{"description":"Пропустить подтверждение","name":"force","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"bots:remove-event","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"webhooks:events:delete","apiMethod":"DELETE","apiPath":"/webhooks/events/{id}","isESM":true,"relativePath":["dist","commands","bots","remove-event.js"]},"bots:update":{"aliases":[],"args":{"id":{"description":"Идентификатор бота (pachca bots list)","name":"id","required":true}},"description":"Редактирование бота","examples":["Обновить Webhook URL бота — Пользовательским токеном (с правом редактировать бота) — обнови URL по `id` бота. Пустая строка отключает вебхук:\n $ pachca bots update"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"name":{"description":"Имя бота (макс. 255 символов)","name":"name","hasDynamicHelp":false,"multiple":false,"type":"option"},"nickname":{"description":"Никнейм бота. Должен заканчиваться на `_bot`. (макс. 255 символов)","name":"nickname","hasDynamicHelp":false,"multiple":false,"type":"option"},"outgoing-url":{"description":"URL исходящего вебхука","name":"outgoing-url","hasDynamicHelp":false,"multiple":false,"type":"option"},"events":{"description":"События, на которые подписан бот","name":"events","hasDynamicHelp":false,"multiple":false,"type":"option"},"trigger-on":{"description":"Условие срабатывания исходящего вебхука","name":"trigger-on","hasDynamicHelp":false,"multiple":false,"type":"option"},"commands":{"description":"Команды бота (триггер-слова), на которые он реагирует при trigger_on = commands. Суммарная длина команд, объединённых через запятую, не должна превышать 255 символов.","name":"commands","hasDynamicHelp":false,"multiple":false,"type":"option"},"scopes":{"description":"Скоупы (права доступа) токена бота. Если не указано, бот получает набор по умолчанию. Боту доступны не все скоупы: часть из них разрешена только пользовательским ролям, и попытка назначить такой скоуп возвращает `400`. Служебные значения `bot` и `all` назначать нельзя.","name":"scopes","hasDynamicHelp":false,"multiple":false,"type":"option"},"template":{"description":"Шаблон форматирования входящего вебхука","name":"template","hasDynamicHelp":false,"multiple":false,"type":"option"},"template-engine":{"description":"Шаблонизатор для обработки шаблона входящего вебхука","name":"template-engine","hasDynamicHelp":false,"multiple":false,"type":"option"},"challenge-key":{"description":"Название поля проверки для верификации входящего вебхука","name":"challenge-key","hasDynamicHelp":false,"multiple":false,"type":"option"},"link-preview-enabled":{"description":"Показывать превью ссылок в сообщениях входящего вебхука","name":"link-preview-enabled","allowNo":true,"type":"boolean"},"ignore-self-messages":{"description":"Игнорировать входящие сообщения, отправленные самим ботом","name":"ignore-self-messages","allowNo":true,"type":"boolean"},"events-history-enabled":{"description":"Сохранять историю событий бота для последующего получения через метод истории событий","name":"events-history-enabled","allowNo":true,"type":"boolean"},"who-can-add":{"description":"Кто может добавлять бота в чаты","name":"who-can-add","hasDynamicHelp":false,"multiple":false,"type":"option"},"can-edit":{"description":"Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель.","name":"can-edit","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"bots:update","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"bots:write","apiMethod":"PUT","apiPath":"/bots/{id}","defaultColumns":["id","webhook"],"isESM":true,"relativePath":["dist","commands","bots","update.js"]},"bots:update-webhook":{"aliases":[],"args":{},"description":"Саморегистрация вебхука бота","examples":["Обновить Webhook URL бота — Или: бот сам обновляет свой webhook своим же токеном — без `id` и без участия администратора (нужен скоуп `bot_self:webhook:write`):\n $ pachca bots update-webhook"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"outgoing-url":{"description":"URL исходящего вебхука. Пустая строка отключает вебхук.","name":"outgoing-url","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"bots:update-webhook","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"bot_self:webhook:write","apiMethod":"PUT","apiPath":"/bot/webhook","defaultColumns":["id","webhook"],"requiredFlags":["outgoing-url"],"isESM":true,"relativePath":["dist","commands","bots","update-webhook.js"]},"changelog":{"aliases":[],"args":{},"description":"История изменений CLI","examples":["<%= config.bin %> changelog","<%= config.bin %> changelog -o json"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"changelog","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"isESM":true,"relativePath":["dist","commands","changelog.js"]},"chats:archive":{"aliases":[],"args":{"id":{"description":"Идентификатор чата (pachca chats list)","name":"id","required":true}},"description":"Архивация чата","examples":["Архивация и управление чатом — Архивировать чат:\n $ pachca chats archive","Найти и заархивировать неактивные чаты — Для каждого чата: архивируй:\n $ pachca chats archive"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"chats:archive","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"chats:archive","apiMethod":"PUT","apiPath":"/chats/{id}/archive","isESM":true,"relativePath":["dist","commands","chats","archive.js"]},"chats:create":{"aliases":[],"args":{},"description":"Новый чат","examples":["Создать канал и пригласить участников — Создай канал с участниками:\n $ pachca chats create","Создать проектную беседу из шаблона — Создай беседу с участниками из тега:\n $ pachca chats create"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"name":{"description":"Название (макс. 255 символов)","name":"name","hasDynamicHelp":false,"multiple":false,"type":"option"},"member-ids":{"description":"Массив идентификаторов пользователей, которые станут участниками","name":"member-ids","hasDynamicHelp":false,"multiple":false,"type":"option"},"group-tag-ids":{"description":"Массив идентификаторов тегов, которые станут участниками","name":"group-tag-ids","hasDynamicHelp":false,"multiple":false,"type":"option"},"channel":{"description":"Является каналом","name":"channel","allowNo":true,"type":"boolean"},"public":{"description":"Открытый доступ","name":"public","allowNo":true,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"chats:create","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"chats:create","apiMethod":"POST","apiPath":"/chats","defaultColumns":["id","name","created_at","owner_id","channel"],"requiredFlags":["name"],"isESM":true,"relativePath":["dist","commands","chats","create.js"]},"chats:download-export":{"aliases":[],"args":{"id":{"description":"Идентификатор экспорта (pachca chats list)","name":"id","required":true}},"description":"Скачать архив экспорта","examples":["Экспорт истории чата — Скачай файл экспорта:\n $ pachca chats download-export"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"save":{"description":"Путь для сохранения файла","name":"save","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":["common:get-exports"],"id":"chats:download-export","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"chat_exports:read","plan":"corporation","apiMethod":"GET","apiPath":"/chats/exports/{id}","isESM":true,"relativePath":["dist","commands","chats","download-export.js"]},"chats:get":{"aliases":[],"args":{"id":{"description":"Идентификатор чата (pachca chats list)","name":"id","required":true}},"description":"Информация о чате","flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"chats:get","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"chats:read","apiMethod":"GET","apiPath":"/chats/{id}","defaultColumns":["id","name","created_at","owner_id","channel"],"isESM":true,"relativePath":["dist","commands","chats","get.js"]},"chats:list":{"aliases":[],"args":{},"description":"Список чатов","examples":["Найти активные чаты за период — Получи чаты с активностью после указанной даты:\n $ pachca chats list","Найти и заархивировать неактивные чаты — Получи чаты без активности с нужной даты:\n $ pachca chats list","Выгрузить все чаты пространства, включая закрытые — Если метод ответил `403` — у токена нет скоупа `company_chats:read`, либо владелец токена не владелец пространства, либо у пространства нет тарифа «Корпорация». Тогда возьми открытые чаты обычным списком:\n $ pachca chats list"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"sort":{"description":"Поле сортировки","name":"sort","default":"id","hasDynamicHelp":false,"multiple":false,"options":["id","last_message_at"],"type":"option"},"order":{"description":"Направление сортировки","name":"order","default":"desc","hasDynamicHelp":false,"multiple":false,"options":["asc","desc"],"type":"option"},"availability":{"description":"Параметр, который отвечает за доступность и выборку чатов для пользователя","name":"availability","default":"is_member","hasDynamicHelp":false,"multiple":false,"options":["is_member","public"],"type":"option"},"archived":{"description":"Добавляет к выдаче архивные чаты. По умолчанию возвращаются только активные. Работает при любом значении `availability`.","name":"archived","allowNo":true,"type":"boolean"},"last-message-at-after":{"description":"Фильтрация по времени создания последнего сообщения: вернутся чаты, где оно позже указанного. Значение в ISO-8601, смещение вида `+03:00` учитывается, время без смещения считается UTC.","name":"last-message-at-after","hasDynamicHelp":false,"multiple":false,"type":"option"},"last-message-at-before":{"description":"Фильтрация по времени создания последнего сообщения: вернутся чаты, где оно раньше указанного. Значение в ISO-8601, смещение вида `+03:00` учитывается, время без смещения считается UTC.","name":"last-message-at-before","hasDynamicHelp":false,"multiple":false,"type":"option"},"personal":{"description":"Фильтрация по личным и групповым чатам. Если параметр не указан, возвращаются любые чаты.","name":"personal","allowNo":true,"type":"boolean"},"limit":{"description":"Количество результатов на страницу","name":"limit","hasDynamicHelp":false,"multiple":false,"type":"option"},"cursor":{"description":"Курсор для следующей страницы","name":"cursor","hasDynamicHelp":false,"multiple":false,"type":"option"},"all":{"description":"Загрузить все страницы автоматически","name":"all","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"chats:list","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"chats:read","apiMethod":"GET","apiPath":"/chats","defaultColumns":["id","name","created_at","owner_id","channel"],"isESM":true,"relativePath":["dist","commands","chats","list.js"]},"chats:list-company":{"aliases":[],"args":{},"description":"Список чатов пространства","examples":["Выгрузить все чаты пространства, включая закрытые — Получи беседы и каналы всего пространства, включая закрытые, где владелец токена не состоит:\n $ pachca chats list-company"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"activity":{"description":"Состояние чатов. Если параметр не указан, возвращаются и активные, и архивные чаты.","name":"activity","hasDynamicHelp":false,"multiple":false,"options":["active","archived"],"type":"option"},"limit":{"description":"Количество результатов на страницу","name":"limit","hasDynamicHelp":false,"multiple":false,"type":"option"},"cursor":{"description":"Курсор для следующей страницы","name":"cursor","hasDynamicHelp":false,"multiple":false,"type":"option"},"all":{"description":"Загрузить все страницы автоматически","name":"all","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"chats:list-company","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"company_chats:read","plan":"corporation","apiMethod":"GET","apiPath":"/company/chats","defaultColumns":["id","name","created_at","owner_id","channel"],"isESM":true,"relativePath":["dist","commands","chats","list-company.js"]},"chats:request-export":{"aliases":[],"args":{},"description":"Экспорт сообщений","examples":["Экспорт истории чата — Запроси экспорт:\n $ pachca chats request-export"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"start-at":{"description":"Дата начала для экспорта в формате YYYY-MM-DD. Если прислать дату со временем, время молча отбрасывается — экспорт всегда идёт по календарным дням.","name":"start-at","hasDynamicHelp":false,"multiple":false,"type":"option"},"end-at":{"description":"Дата окончания для экспорта в формате YYYY-MM-DD, включительно. Если прислать дату со временем, время молча отбрасывается.","name":"end-at","hasDynamicHelp":false,"multiple":false,"type":"option"},"webhook-url":{"description":"Адрес, на который придёт вебхук с номером готовой выгрузки. Без него узнать номер неоткуда: заказавший получит письмо и уведомление, а вызывающая программа — ничего.","name":"webhook-url","hasDynamicHelp":false,"multiple":false,"type":"option"},"chat-ids":{"description":"Массив идентификаторов чатов. Указывается, если нужно получить сообщения только некоторых чатов.","name":"chat-ids","hasDynamicHelp":false,"multiple":false,"type":"option"},"skip-chats-file":{"description":"Пропуск формирования файла со списком чатов (chats.json)","name":"skip-chats-file","allowNo":true,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":["common:request-export"],"id":"chats:request-export","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"chat_exports:write","plan":"corporation","apiMethod":"POST","apiPath":"/chats/exports","requiredFlags":["start-at","end-at"],"isESM":true,"relativePath":["dist","commands","chats","request-export.js"]},"chats:unarchive":{"aliases":[],"args":{"id":{"description":"Идентификатор чата (pachca chats list)","name":"id","required":true}},"description":"Разархивация чата","examples":["Архивация и управление чатом — Разархивировать чат:\n $ pachca chats unarchive"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"chats:unarchive","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"chats:archive","apiMethod":"PUT","apiPath":"/chats/{id}/unarchive","isESM":true,"relativePath":["dist","commands","chats","unarchive.js"]},"chats:update":{"aliases":[],"args":{"id":{"description":"Идентификатор чата (pachca chats list)","name":"id","required":true}},"description":"Редактирование чата","examples":["Переименовать или обновить чат — Обнови чат:\n $ pachca chats update"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"name":{"description":"Название (макс. 255 символов)","name":"name","hasDynamicHelp":false,"multiple":false,"type":"option"},"public":{"description":"Открытый доступ","name":"public","allowNo":true,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"chats:update","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"chats:update","apiMethod":"PUT","apiPath":"/chats/{id}","defaultColumns":["id","name","created_at","owner_id","channel"],"isESM":true,"relativePath":["dist","commands","chats","update.js"]},"commands":{"aliases":[],"args":{},"description":"Список всех команд","examples":["<%= config.bin %> commands","<%= config.bin %> commands --available","<%= config.bin %> commands --available -o json"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"available":{"description":"Показать только команды, доступные текущему токену","name":"available","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"commands","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"isESM":true,"relativePath":["dist","commands","commands.js"]},"config:get":{"aliases":[],"args":{"key":{"description":"Ключ настройки","name":"key","required":true}},"description":"Получение значения конфигурации","examples":["<%= config.bin %> config get defaults.output"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"config:get","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"isESM":true,"relativePath":["dist","commands","config","get.js"]},"config:list":{"aliases":[],"args":{},"description":"Список всех настроек","examples":["<%= config.bin %> config list","<%= config.bin %> config list -o json"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"config:list","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"isESM":true,"relativePath":["dist","commands","config","list.js"]},"config:set":{"aliases":[],"args":{"key":{"description":"Ключ настройки","name":"key","required":true},"value":{"description":"Значение настройки","name":"value","required":true}},"description":"Установка значения конфигурации","examples":["<%= config.bin %> config set defaults.output json","<%= config.bin %> config set defaults.timeout 60"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"config:set","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"isESM":true,"relativePath":["dist","commands","config","set.js"]},"custom-properties:list":{"aliases":[],"args":{},"description":"Список дополнительных полей","examples":["Получить кастомные поля профиля — Получи список дополнительных полей для сотрудников:\n $ pachca custom-properties list"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"entity-type":{"description":"Тип сущности","name":"entity-type","hasDynamicHelp":false,"multiple":false,"options":["User","Task"],"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":["common:custom-properties"],"id":"custom-properties:list","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"custom_properties:read","apiMethod":"GET","apiPath":"/custom_properties","defaultColumns":["id","name","data_type"],"requiredFlags":["entity-type"],"isESM":true,"relativePath":["dist","commands","custom-properties","list.js"]},"doctor":{"aliases":[],"args":{},"description":"Диагностика окружения: Node.js, сеть, токен, конфигурация","examples":["<%= config.bin %> doctor","<%= config.bin %> doctor -o json"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"doctor","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"isESM":true,"relativePath":["dist","commands","doctor.js"]},"drafts:create":{"aliases":[],"args":{},"description":"Новый черновик","examples":["Отправить сообщение позже или по расписанию — Создай отложенное сообщение: `schedule.start_date` — когда отправить, `schedule.repetition.interval` — как повторять (`once`, если один раз):\n $ pachca drafts create"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"entity-type":{"description":"Куда пишется черновик: в беседу или канал, в тред либо в личную переписку с сотрудником","name":"entity-type","hasDynamicHelp":false,"multiple":false,"type":"option"},"entity-id":{"description":"Идентификатор того, что названо в `entity_type`: беседы или канала, треда либо сотрудника (pachca chats list | pachca users list)","name":"entity-id","hasDynamicHelp":false,"multiple":false,"type":"option"},"content":{"description":"Текст черновика. Можно не передавать, если есть вложения, но пустым черновик быть не может.","name":"content","hasDynamicHelp":false,"multiple":false,"type":"option"},"parent-message-id":{"description":"Идентификатор сообщения, ответом на которое уйдёт черновик. Сообщение должно быть в том же чате.","name":"parent-message-id","hasDynamicHelp":false,"multiple":false,"type":"option"},"files":{"description":"Прикрепляемые файлы, не больше десяти","name":"files","hasDynamicHelp":false,"multiple":false,"type":"option"},"schedule":{"description":"Расписание отправки. С ним создаётся отложенное сообщение, без него — обычный черновик.","name":"schedule","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"drafts:create","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"drafts:write","apiMethod":"POST","apiPath":"/drafts","defaultColumns":["id","content","created_at","entity_type","entity_id"],"requiredFlags":["entity-type","entity-id"],"isESM":true,"relativePath":["dist","commands","drafts","create.js"]},"drafts:delete":{"aliases":[],"args":{"id":{"description":"Идентификатор черновика","name":"id","required":true}},"description":"Удаление черновика","examples":["Отправить сообщение позже или по расписанию — Чтобы отменить отправку — удали отложенное сообщение:\n $ pachca drafts delete"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"force":{"description":"Пропустить подтверждение","name":"force","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"drafts:delete","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"drafts:write","apiMethod":"DELETE","apiPath":"/drafts/{id}","isESM":true,"relativePath":["dist","commands","drafts","delete.js"]},"drafts:get":{"aliases":[],"args":{"id":{"description":"Идентификатор черновика","name":"id","required":true}},"description":"Информация о черновике","flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"drafts:get","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"drafts:read","apiMethod":"GET","apiPath":"/drafts/{id}","defaultColumns":["id","content","created_at","entity_type","entity_id"],"isESM":true,"relativePath":["dist","commands","drafts","get.js"]},"drafts:list":{"aliases":[],"args":{},"description":"Список черновиков","flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"type":{"description":"Что возвращать: `regular` — обычные черновики, `scheduled` — отложенные сообщения, `all` — и те и другие","name":"type","default":"regular","hasDynamicHelp":false,"multiple":false,"options":["regular","scheduled","all"],"type":"option"},"entity-type":{"description":"Тип чата для фильтра по одному чату. Указывается вместе с `entity_id`: если прислать только один из двух, ответ будет `422`.","name":"entity-type","hasDynamicHelp":false,"multiple":false,"options":["discussion","thread","user"],"type":"option"},"entity-id":{"description":"Идентификатор того, что названо в `entity_type`. Указывается вместе с ним.","name":"entity-id","hasDynamicHelp":false,"multiple":false,"type":"option"},"limit":{"description":"Количество результатов на страницу","name":"limit","hasDynamicHelp":false,"multiple":false,"type":"option"},"cursor":{"description":"Курсор для следующей страницы","name":"cursor","hasDynamicHelp":false,"multiple":false,"type":"option"},"all":{"description":"Загрузить все страницы автоматически","name":"all","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"drafts:list","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"drafts:read","apiMethod":"GET","apiPath":"/drafts","defaultColumns":["id","content","created_at","entity_type","entity_id"],"isESM":true,"relativePath":["dist","commands","drafts","list.js"]},"drafts:update":{"aliases":[],"args":{"id":{"description":"Идентификатор черновика","name":"id","required":true}},"description":"Редактирование черновика","flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"content":{"description":"Текст черновика","name":"content","hasDynamicHelp":false,"multiple":false,"type":"option"},"parent-message-id":{"description":"Идентификатор сообщения, ответом на которое уйдёт черновик. `null` снимает ответ.","name":"parent-message-id","hasDynamicHelp":false,"multiple":false,"type":"option"},"files":{"description":"Прикрепляемые файлы, не больше десяти. Переданный массив заменяет прежний состав: пустой снимает все вложения, а чтобы сохранить уже прикреплённый файл, передайте его с `id`. Без этого поля вложения остаются как были.","name":"files","hasDynamicHelp":false,"multiple":false,"type":"option"},"schedule":{"description":"Расписание отправки. У обычного черновика оно превращает его в отложенное сообщение. У отложенного расписание можно изменить, но не снять: `null` в ответ даст `422` с кодом `draft_type_change_forbidden`.","name":"schedule","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"drafts:update","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"drafts:write","apiMethod":"PUT","apiPath":"/drafts/{id}","defaultColumns":["id","content","created_at","entity_type","entity_id"],"isESM":true,"relativePath":["dist","commands","drafts","update.js"]},"files:direct-url":{"aliases":[],"args":{},"description":"Загрузка файла","flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"direct-url":{"description":"URL для отправки запроса (получается из ответа POST /uploads)","name":"direct-url","required":true,"hasDynamicHelp":false,"multiple":false,"type":"option"},"content-disposition":{"description":"Параметр Content-Disposition, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)","name":"content-disposition","hasDynamicHelp":false,"multiple":false,"type":"option"},"acl":{"description":"Параметр acl, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)","name":"acl","hasDynamicHelp":false,"multiple":false,"type":"option"},"policy":{"description":"Параметр policy, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)","name":"policy","hasDynamicHelp":false,"multiple":false,"type":"option"},"x-amz-credential":{"description":"Параметр x-amz-credential, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)","name":"x-amz-credential","hasDynamicHelp":false,"multiple":false,"type":"option"},"x-amz-algorithm":{"description":"Параметр x-amz-algorithm, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)","name":"x-amz-algorithm","hasDynamicHelp":false,"multiple":false,"type":"option"},"x-amz-date":{"description":"Параметр x-amz-date, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)","name":"x-amz-date","hasDynamicHelp":false,"multiple":false,"type":"option"},"x-amz-signature":{"description":"Параметр x-amz-signature, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)","name":"x-amz-signature","hasDynamicHelp":false,"multiple":false,"type":"option"},"key":{"description":"Параметр key, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)","name":"key","hasDynamicHelp":false,"multiple":false,"type":"option"},"file":{"description":"Файл для загрузки","name":"file","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":["common:direct-url"],"id":"files:direct-url","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"apiMethod":"POST","apiPath":"/direct_url","requiredFlags":["content-disposition","acl","policy","x-amz-credential","x-amz-algorithm","x-amz-date","x-amz-signature","key"],"isESM":true,"relativePath":["dist","commands","files","direct-url.js"]},"files:get":{"aliases":[],"args":{"id":{"description":"Идентификатор файла из поля `id` вложения","name":"id","required":true}},"description":"Скачивание файла","flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"target":{"description":"Что отдать вместо исходного файла: `pdf_preview` — документ, переведённый в PDF, `pdf_first_page` — первая страница картинкой, `thumb` — уменьшенная копия изображения, `image` — изображение как есть. Без параметра приходит исходный файл. Вариант, которого у этого файла нет, приводит к `400`.","name":"target","hasDynamicHelp":false,"multiple":false,"options":["pdf_preview","pdf_first_page","thumb","image"],"type":"option"},"save":{"description":"Путь для сохранения файла","name":"save","required":true,"hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"files:get","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"files:read","apiMethod":"GET","apiPath":"/files/{id}","isESM":true,"relativePath":["dist","commands","files","get.js"]},"files:uploads":{"aliases":[],"args":{},"description":"Получение подписи, ключа и других параметров","examples":["Изменить вложения сообщения — Если нужно добавить новый файл — загрузи его:\n $ pachca files uploads"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":["common:uploads"],"id":"files:uploads","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"uploads:write","apiMethod":"POST","apiPath":"/uploads","defaultColumns":["Content-Disposition","acl","policy","x-amz-credential","x-amz-algorithm"],"isESM":true,"relativePath":["dist","commands","files","uploads.js"]},"group-tags:create":{"aliases":[],"args":{},"description":"Новый тег","examples":["Массовое создание сотрудников с тегами — Создай тег (если нужен):\n $ pachca group-tags create"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"name":{"description":"Название тега (макс. 255 символов)","name":"name","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"group-tags:create","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"group_tags:write","apiMethod":"POST","apiPath":"/group_tags","defaultColumns":["id","name","users_count"],"requiredFlags":["name"],"isESM":true,"relativePath":["dist","commands","group-tags","create.js"]},"group-tags:delete":{"aliases":[],"args":{"id":{"description":"Идентификатор тега","name":"id","required":true}},"description":"Удаление тега","flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"force":{"description":"Пропустить подтверждение","name":"force","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"group-tags:delete","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"group_tags:write","apiMethod":"DELETE","apiPath":"/group_tags/{id}","isESM":true,"relativePath":["dist","commands","group-tags","delete.js"]},"group-tags:get":{"aliases":[],"args":{"id":{"description":"Идентификатор тега","name":"id","required":true}},"description":"Информация о теге","flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"group-tags:get","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"group_tags:read","apiMethod":"GET","apiPath":"/group_tags/{id}","defaultColumns":["id","name","users_count"],"isESM":true,"relativePath":["dist","commands","group-tags","get.js"]},"group-tags:list":{"aliases":[],"args":{},"description":"Список тегов","examples":["Получить всех сотрудников тега/департамента — Найди тег по названию, возьми `id`:\n $ pachca group-tags list"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"names":{"description":"Массив названий тегов, по которым вы хотите отфильтровать список (через запятую)","name":"names","hasDynamicHelp":false,"multiple":false,"type":"option"},"limit":{"description":"Количество результатов на страницу","name":"limit","hasDynamicHelp":false,"multiple":false,"type":"option"},"cursor":{"description":"Курсор для следующей страницы","name":"cursor","hasDynamicHelp":false,"multiple":false,"type":"option"},"all":{"description":"Загрузить все страницы автоматически","name":"all","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"group-tags:list","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"group_tags:read","apiMethod":"GET","apiPath":"/group_tags","defaultColumns":["id","name","users_count"],"isESM":true,"relativePath":["dist","commands","group-tags","list.js"]},"group-tags:list-users":{"aliases":[],"args":{"id":{"description":"Идентификатор тега","name":"id","required":true}},"description":"Список сотрудников тега","examples":["Получить всех сотрудников тега/департамента — Получи всех участников тега:\n $ pachca group-tags list-users"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"limit":{"description":"Количество результатов на страницу","name":"limit","hasDynamicHelp":false,"multiple":false,"type":"option"},"cursor":{"description":"Курсор для следующей страницы","name":"cursor","hasDynamicHelp":false,"multiple":false,"type":"option"},"all":{"description":"Загрузить все страницы автоматически","name":"all","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"group-tags:list-users","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"group_tags:read","apiMethod":"GET","apiPath":"/group_tags/{id}/users","defaultColumns":["id","title","first_name","last_name","email"],"isESM":true,"relativePath":["dist","commands","group-tags","list-users.js"]},"group-tags:update":{"aliases":[],"args":{"id":{"description":"Идентификатор тега","name":"id","required":true}},"description":"Редактирование тега","flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"name":{"description":"Название тега (макс. 255 символов)","name":"name","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"group-tags:update","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"group_tags:write","apiMethod":"PUT","apiPath":"/group_tags/{id}","defaultColumns":["id","name","users_count"],"requiredFlags":["name"],"isESM":true,"relativePath":["dist","commands","group-tags","update.js"]},"guide":{"aliases":[],"args":{"query":{"description":"Поисковый запрос","name":"query","required":false}},"description":"Поиск сценариев использования","examples":["<%= config.bin %> guide \"отправить файл\"","<%= config.bin %> guide \"создать бота\"","<%= config.bin %> guide"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"guide","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"isESM":true,"relativePath":["dist","commands","guide.js"]},"introspect":{"aliases":[],"args":{"command":{"description":"Имя команды (например, \"messages create\")","name":"command","required":false}},"description":"Метаданные команды в машиночитаемом формате","examples":["<%= config.bin %> introspect messages create","<%= config.bin %> introspect"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"introspect","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":false,"enableJsonFlag":false,"isESM":true,"relativePath":["dist","commands","introspect.js"]},"members:add":{"aliases":[],"args":{"id":{"description":"Идентификатор чата (беседа, канал или чат треда)","name":"id","required":true}},"description":"Добавление пользователей","examples":["Подписаться на тред сообщения — Добавь бота в участники чата треда:\n $ pachca members add","Создать канал и пригласить участников — Или добавь участников позже:\n $ pachca members add","Онбординг нового сотрудника — Добавь в нужные каналы:\n $ pachca members add"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"member-ids":{"description":"Массив идентификаторов пользователей, которые станут участниками","name":"member-ids","hasDynamicHelp":false,"multiple":false,"type":"option"},"silent":{"description":"Не создавать в чате системное сообщение о добавлении участника","name":"silent","allowNo":true,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"members:add","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"chat_members:write","apiMethod":"POST","apiPath":"/chats/{id}/members","requiredFlags":["member-ids"],"isESM":true,"relativePath":["dist","commands","members","add.js"]},"members:add-group-tags":{"aliases":[],"args":{"id":{"description":"Идентификатор чата","name":"id","required":true}},"description":"Добавление тегов","flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"group-tag-ids":{"description":"Массив идентификаторов тегов, которые станут участниками","name":"group-tag-ids","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"members:add-group-tags","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"chat_members:write","apiMethod":"POST","apiPath":"/chats/{id}/group_tags","requiredFlags":["group-tag-ids"],"isESM":true,"relativePath":["dist","commands","members","add-group-tags.js"]},"members:leave":{"aliases":[],"args":{"id":{"description":"Идентификатор чата","name":"id","required":true}},"description":"Выход из чата","examples":["Архивация и управление чатом — Покинуть чат:\n $ pachca members leave"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"force":{"description":"Пропустить подтверждение","name":"force","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"members:leave","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"chats:leave","apiMethod":"DELETE","apiPath":"/chats/{id}/leave","isESM":true,"relativePath":["dist","commands","members","leave.js"]},"members:list":{"aliases":[],"args":{"id":{"description":"Идентификатор чата","name":"id","required":true}},"description":"Список участников чата","examples":["Упомянуть пользователя — Ищи среди участников целевого чата:\n $ pachca members list","Упомянуть пользователя — Если пишешь в тред: также проверь участников родительского чата:\n $ pachca members list"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"role":{"description":"Роль в чате","name":"role","default":"all","hasDynamicHelp":false,"multiple":false,"options":["all","owner","admin","editor","member"],"type":"option"},"limit":{"description":"Количество результатов на страницу","name":"limit","hasDynamicHelp":false,"multiple":false,"type":"option"},"cursor":{"description":"Курсор для следующей страницы","name":"cursor","hasDynamicHelp":false,"multiple":false,"type":"option"},"all":{"description":"Загрузить все страницы автоматически","name":"all","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"members:list","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"chat_members:read","apiMethod":"GET","apiPath":"/chats/{id}/members","defaultColumns":["id","title","first_name","last_name","email"],"isESM":true,"relativePath":["dist","commands","members","list.js"]},"members:remove":{"aliases":[],"args":{"id":{"description":"Идентификатор чата","name":"id","required":true},"user_id":{"description":"Идентификатор пользователя (pachca users list)","name":"user_id","required":true}},"description":"Исключение пользователя","examples":["Архивация и управление чатом — Удалить участника:\n $ pachca members remove"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"force":{"description":"Пропустить подтверждение","name":"force","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"members:remove","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"chat_members:write","apiMethod":"DELETE","apiPath":"/chats/{id}/members/{user_id}","isESM":true,"relativePath":["dist","commands","members","remove.js"]},"members:remove-group-tag":{"aliases":[],"args":{"id":{"description":"Идентификатор чата","name":"id","required":true},"tag_id":{"description":"Идентификатор тега (pachca tags list)","name":"tag_id","required":true}},"description":"Исключение тега","flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"force":{"description":"Пропустить подтверждение","name":"force","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"members:remove-group-tag","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"chat_members:write","apiMethod":"DELETE","apiPath":"/chats/{id}/group_tags/{tag_id}","isESM":true,"relativePath":["dist","commands","members","remove-group-tag.js"]},"members:update":{"aliases":[],"args":{"id":{"description":"Идентификатор чата","name":"id","required":true},"user_id":{"description":"Идентификатор пользователя (pachca users list)","name":"user_id","required":true}},"description":"Редактирование роли","examples":["Архивация и управление чатом — Изменить роль участника:\n $ pachca members update"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"role":{"description":"Роль","name":"role","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"members:update","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"chat_members:write","apiMethod":"PUT","apiPath":"/chats/{id}/members/{user_id}","requiredFlags":["role"],"isESM":true,"relativePath":["dist","commands","members","update.js"]},"messages:create":{"aliases":[],"args":{},"description":"Новое сообщение","examples":["Найти чат по имени и отправить сообщение — Отправь сообщение в найденный чат:\n $ pachca messages create","Отправить сообщение в канал или беседу (если chat_id известен) — Отправь сообщение в чат:\n $ pachca messages create","Отправить личное сообщение пользователю — Отправь личное сообщение:\n $ pachca messages create"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"entity-type":{"description":"Тип сущности. Регистр значения не учитывается. Значение вне списка возвращает `400` с кодом `invalid`.","name":"entity-type","hasDynamicHelp":false,"multiple":false,"type":"option"},"entity-id":{"description":"Идентификатор того, что названо в `entity_type`: беседы или канала, треда либо сотрудника. (pachca chats list | pachca users list)","name":"entity-id","hasDynamicHelp":false,"multiple":false,"type":"option"},"content":{"description":"Текст сообщения. Поддерживает упоминания: `@nickname` или `<@user_id>` (будет автоматически преобразовано в `@nickname`).","name":"content","hasDynamicHelp":false,"multiple":false,"type":"option"},"files":{"description":"Прикрепляемые файлы","name":"files","hasDynamicHelp":false,"multiple":false,"type":"option"},"buttons":{"description":"Массив строк, каждая из которых представлена массивом кнопок. Максимум 100 кнопок у сообщения, до 8 кнопок в строке.","name":"buttons","hasDynamicHelp":false,"multiple":false,"type":"option"},"parent-message-id":{"description":"Идентификатор сообщения, на которое отвечаете. Ответ появится прямо в ленте чата, а не в треде: для треда отправляйте сообщение с `entity_type: \"thread\"`.","name":"parent-message-id","hasDynamicHelp":false,"multiple":false,"type":"option"},"display-avatar-url":{"description":"Ссылка на специальную аватарку отправителя для этого сообщения. Использование этого поля возможно только с access_token бота. (макс. 255 символов)","name":"display-avatar-url","hasDynamicHelp":false,"multiple":false,"type":"option"},"display-name":{"description":"Полное специальное имя отправителя для этого сообщения. Использование этого поля возможно только с access_token бота. (макс. 255 символов)","name":"display-name","hasDynamicHelp":false,"multiple":false,"type":"option"},"skip-invite-mentions":{"description":"Пропуск добавления упоминаемых пользователей в тред. Работает только при отправке сообщения в тред.","name":"skip-invite-mentions","allowNo":true,"type":"boolean"},"link-preview":{"description":"Отображение предпросмотра первой найденной ссылки в тексте сообщения","name":"link-preview","allowNo":true,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"messages:create","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"messages:create","apiMethod":"POST","apiPath":"/messages","defaultColumns":["id","content","created_at","entity_type","entity_id"],"requiredFlags":["entity-id","content"],"isESM":true,"relativePath":["dist","commands","messages","create.js"]},"messages:delete":{"aliases":[],"args":{"id":{"description":"Идентификатор сообщения (pachca messages list)","name":"id","required":true}},"description":"Удаление сообщения","examples":["Удалить сообщение — Удали сообщение:\n $ pachca messages delete"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"force":{"description":"Пропустить подтверждение","name":"force","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"messages:delete","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"messages:delete","apiMethod":"DELETE","apiPath":"/messages/{id}","isESM":true,"relativePath":["dist","commands","messages","delete.js"]},"messages:get":{"aliases":[],"args":{"id":{"description":"Идентификатор сообщения (pachca messages list)","name":"id","required":true}},"description":"Информация о сообщении","examples":["Получить вложения из сообщения — Получи сообщение — в `files[]` каждый объект содержит `url`, `name`, `file_type`, `size`:\n $ pachca messages get","Изменить вложения сообщения — Получи текущие вложения из `files[]`:\n $ pachca messages get","Обработать входящий вебхук-событие — Для полной информации запроси сообщение — особенно для вложений (`files[]`):\n $ pachca messages get"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"messages:get","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"messages:read","apiMethod":"GET","apiPath":"/messages/{id}","defaultColumns":["id","content","created_at","entity_type","entity_id"],"isESM":true,"relativePath":["dist","commands","messages","get.js"]},"messages:list":{"aliases":[],"args":{"chat_id":{"description":"Идентификатор чата (беседа, канал, диалог или чат треда)","name":"chat_id","required":false}},"description":"Список сообщений чата","examples":["Получить историю сообщений чата — Получи сообщения чата с пагинацией:\n $ pachca messages list","Получить список активных тредов за период — Для каждого треда возьми `chat_id` и подтяни сообщения:\n $ pachca messages list"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"chat-id":{"description":"Идентификатор чата (беседа, канал, диалог или чат треда)","name":"chat-id","hasDynamicHelp":false,"multiple":false,"type":"option"},"sort":{"description":"Поле сортировки","name":"sort","default":"id","hasDynamicHelp":false,"multiple":false,"options":["id"],"type":"option"},"order":{"description":"Направление сортировки","name":"order","default":"desc","hasDynamicHelp":false,"multiple":false,"options":["asc","desc"],"type":"option"},"limit":{"description":"Количество результатов на страницу","name":"limit","hasDynamicHelp":false,"multiple":false,"type":"option"},"cursor":{"description":"Курсор для следующей страницы","name":"cursor","hasDynamicHelp":false,"multiple":false,"type":"option"},"all":{"description":"Загрузить все страницы автоматически","name":"all","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"messages:list","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"messages:read","apiMethod":"GET","apiPath":"/messages","defaultColumns":["id","content","created_at","entity_type","entity_id"],"requiredFlags":["chat-id"],"isESM":true,"relativePath":["dist","commands","messages","list.js"]},"messages:pin":{"aliases":[],"args":{"id":{"description":"Идентификатор сообщения (pachca messages list)","name":"id","required":true}},"description":"Закрепление сообщения","examples":["Закрепить/открепить сообщение — Закрепить сообщение:\n $ pachca messages pin"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"messages:pin","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"pins:write","apiMethod":"POST","apiPath":"/messages/{id}/pin","isESM":true,"relativePath":["dist","commands","messages","pin.js"]},"messages:unfurl":{"aliases":[],"args":{"id":{"description":"Идентификатор сообщения (pachca messages list)","name":"id","required":true}},"description":"Unfurl (разворачивание ссылок)","examples":["Разворачивание ссылок (unfurling) — Отправь превью-данные:\n $ pachca messages unfurl"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"link-previews":{"description":"`JSON` карта предпросмотров ссылок, где каждый ключ — `URL`, который был получен в исходящем вебхуке о новом сообщении","name":"link-previews","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":["link-previews:add"],"id":"messages:unfurl","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"link_previews:write","apiMethod":"POST","apiPath":"/messages/{id}/link_previews","requiredFlags":["link-previews"],"isESM":true,"relativePath":["dist","commands","messages","unfurl.js"]},"messages:unpin":{"aliases":[],"args":{"id":{"description":"Идентификатор сообщения (pachca messages list)","name":"id","required":true}},"description":"Открепление сообщения","examples":["Закрепить/открепить сообщение — Открепить сообщение:\n $ pachca messages unpin"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"force":{"description":"Пропустить подтверждение","name":"force","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"messages:unpin","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"pins:write","apiMethod":"DELETE","apiPath":"/messages/{id}/pin","isESM":true,"relativePath":["dist","commands","messages","unpin.js"]},"messages:update":{"aliases":[],"args":{"id":{"description":"Идентификатор сообщения (pachca messages list)","name":"id","required":true}},"description":"Редактирование сообщения","examples":["Отредактировать сообщение — Обнови сообщение:\n $ pachca messages update","Изменить вложения сообщения — Обнови сообщение с новым массивом `files`:\n $ pachca messages update","Обработать нажатие кнопки (callback) — Опционально: обнови исходное сообщение:\n $ pachca messages update"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"content":{"description":"Текст сообщения. Поддерживает упоминания: `@nickname` или `<@user_id>` (будет автоматически преобразовано в `@nickname`).","name":"content","hasDynamicHelp":false,"multiple":false,"type":"option"},"files":{"description":"Прикрепляемые файлы","name":"files","hasDynamicHelp":false,"multiple":false,"type":"option"},"buttons":{"description":"Массив строк, каждая из которых представлена массивом кнопок. Максимум 100 кнопок у сообщения, до 8 кнопок в строке. Для удаления кнопок пришлите пустой массив.","name":"buttons","hasDynamicHelp":false,"multiple":false,"type":"option"},"display-avatar-url":{"description":"Ссылка на специальную аватарку отправителя для этого сообщения. Использование этого поля возможно только с access_token бота.","name":"display-avatar-url","hasDynamicHelp":false,"multiple":false,"type":"option"},"display-name":{"description":"Полное специальное имя отправителя для этого сообщения. Использование этого поля возможно только с access_token бота.","name":"display-name","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"messages:update","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"messages:update","apiMethod":"PUT","apiPath":"/messages/{id}","defaultColumns":["id","content","created_at","entity_type","entity_id"],"isESM":true,"relativePath":["dist","commands","messages","update.js"]},"oauth:token-info":{"aliases":[],"args":{},"description":"Информация о токене","examples":["Проверить свой токен — Получи информацию о токене: скоупы, дату создания, срок жизни:\n $ pachca oauth token-info"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":["profile:get-info"],"id":"oauth:token-info","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"apiMethod":"GET","apiPath":"/oauth/token/info","defaultColumns":["id","name","created_at","token","user_id"],"isESM":true,"relativePath":["dist","commands","oauth","token-info.js"]},"profile:delete-avatar":{"aliases":[],"args":{},"description":"Удаление своего аватара","examples":["Удалить аватар профиля — Удали аватар:\n $ pachca profile delete-avatar"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"force":{"description":"Пропустить подтверждение","name":"force","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"profile:delete-avatar","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"profile_avatar:write","apiMethod":"DELETE","apiPath":"/profile/avatar","isESM":true,"relativePath":["dist","commands","profile","delete-avatar.js"]},"profile:delete-status":{"aliases":[],"args":{},"description":"Удаление своего статуса","examples":["Сбросить статус — Удали статус:\n $ pachca profile delete-status"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"force":{"description":"Пропустить подтверждение","name":"force","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"profile:delete-status","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"profile_status:write","apiMethod":"DELETE","apiPath":"/profile/status","isESM":true,"relativePath":["dist","commands","profile","delete-status.js"]},"profile:get":{"aliases":[],"args":{},"description":"Свой профиль","examples":["Получить свой профиль — Получи информацию о текущем пользователе:\n $ pachca profile get","Получить кастомные поля профиля — Получи профиль — в `custom_properties` содержатся значения полей:\n $ pachca profile get"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"profile:get","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"profile:read","apiMethod":"GET","apiPath":"/profile","defaultColumns":["id","title","first_name","last_name","email"],"isESM":true,"relativePath":["dist","commands","profile","get.js"]},"profile:get-status":{"aliases":[],"args":{},"description":"Свой статус","flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"profile:get-status","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"profile_status:read","apiMethod":"GET","apiPath":"/profile/status","defaultColumns":["title","emoji","expires_at","is_away"],"isESM":true,"relativePath":["dist","commands","profile","get-status.js"]},"profile:update-avatar":{"aliases":[],"args":{},"description":"Загрузка своего аватара","examples":["Загрузить аватар профиля — Загрузи аватар из файла:\n $ pachca profile update-avatar"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"file":{"description":"Файл изображения для аватара","name":"file","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"profile:update-avatar","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"profile_avatar:write","apiMethod":"PUT","apiPath":"/profile/avatar","defaultColumns":["image_url"],"isESM":true,"relativePath":["dist","commands","profile","update-avatar.js"]},"profile:update-status":{"aliases":[],"args":{},"description":"Новый свой статус","examples":["Установить статус — Установи статус:\n $ pachca profile update-status"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"emoji":{"description":"Emoji символ статуса","name":"emoji","hasDynamicHelp":false,"multiple":false,"type":"option"},"title":{"description":"Текст статуса (макс. 50 символов)","name":"title","hasDynamicHelp":false,"multiple":false,"type":"option"},"expires-at":{"description":"Срок жизни статуса (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Сюда идёт срок, названный словами: «до трёх» это значение поля, а не часть подписи.","name":"expires-at","hasDynamicHelp":false,"multiple":false,"type":"option"},"is-away":{"description":"Режим «Нет на месте»","name":"is-away","allowNo":true,"type":"boolean"},"away-message":{"description":"Текст сообщения при режиме «Нет на месте». Отображается в профиле и при личных сообщениях/упоминаниях. (макс. 1024 символов)","name":"away-message","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"profile:update-status","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"profile_status:write","apiMethod":"PUT","apiPath":"/profile/status","defaultColumns":["title","emoji","expires_at","is_away"],"requiredFlags":["emoji","title"],"isESM":true,"relativePath":["dist","commands","profile","update-status.js"]},"reactions:add":{"aliases":[],"args":{"id":{"description":"Идентификатор сообщения","name":"id","required":true}},"description":"Добавление реакции","examples":["Добавить реакцию на сообщение — Добавь реакцию:\n $ pachca reactions add"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"code":{"description":"Emoji символ реакции. Именно символ: текстовые записи вроде `+1` или `:+1:` отклоняются как неизвестный эмодзи.","name":"code","hasDynamicHelp":false,"multiple":false,"type":"option"},"name":{"description":"Текстовое имя эмодзи (используется для кастомных эмодзи)","name":"name","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"reactions:add","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"reactions:write","apiMethod":"POST","apiPath":"/messages/{id}/reactions","defaultColumns":["name","created_at","user_id","code"],"requiredFlags":["code"],"isESM":true,"relativePath":["dist","commands","reactions","add.js"]},"reactions:list":{"aliases":[],"args":{"id":{"description":"Идентификатор сообщения","name":"id","required":true}},"description":"Список реакций","flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"limit":{"description":"Количество результатов на страницу","name":"limit","hasDynamicHelp":false,"multiple":false,"type":"option"},"cursor":{"description":"Курсор для следующей страницы","name":"cursor","hasDynamicHelp":false,"multiple":false,"type":"option"},"all":{"description":"Загрузить все страницы автоматически","name":"all","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"reactions:list","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"reactions:read","apiMethod":"GET","apiPath":"/messages/{id}/reactions","defaultColumns":["name","created_at","user_id","code"],"isESM":true,"relativePath":["dist","commands","reactions","list.js"]},"reactions:remove":{"aliases":[],"args":{"id":{"description":"Идентификатор сообщения","name":"id","required":true}},"description":"Удаление реакции","examples":["Добавить реакцию на сообщение — Убрать реакцию:\n $ pachca reactions remove"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"code":{"description":"Emoji символ реакции. Именно символ: текстовые записи вроде `+1` или `:+1:` отклоняются как неизвестный эмодзи.","name":"code","hasDynamicHelp":false,"multiple":false,"type":"option"},"name":{"description":"Текстовое имя эмодзи (используется для кастомных эмодзи)","name":"name","hasDynamicHelp":false,"multiple":false,"type":"option"},"force":{"description":"Пропустить подтверждение","name":"force","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"reactions:remove","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"reactions:write","apiMethod":"DELETE","apiPath":"/messages/{id}/reactions","requiredFlags":["code"],"isESM":true,"relativePath":["dist","commands","reactions","remove.js"]},"read-member:list-readers":{"aliases":[],"args":{"id":{"description":"Идентификатор сообщения","name":"id","required":true}},"description":"Список прочитавших сообщение","examples":["Проверить, кто прочитал сообщение — Получи массив `user_id` прочитавших:\n $ pachca read-member list-readers"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"limit":{"description":"Количество результатов на страницу","name":"limit","hasDynamicHelp":false,"multiple":false,"type":"option"},"cursor":{"description":"Курсор для следующей страницы","name":"cursor","hasDynamicHelp":false,"multiple":false,"type":"option"},"all":{"description":"Загрузить все страницы автоматически","name":"all","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"read-member:list-readers","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"messages:read","apiMethod":"GET","apiPath":"/messages/{id}/read_member_ids","isESM":true,"relativePath":["dist","commands","read-member","list-readers.js"]},"search:list-chats":{"aliases":[],"args":{},"description":"Поиск чатов","examples":["Найти чат по имени и отправить сообщение — Найди чат по названию через поиск:\n $ pachca search list-chats","Отправить сообщение позже или по расписанию — Найди чат, в который нужно написать:\n $ pachca search list-chats","Найти чат по названию — Полнотекстовый поиск по чатам:\n $ pachca search list-chats"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"query":{"description":"Текст поискового запроса","name":"query","hasDynamicHelp":false,"multiple":false,"type":"option"},"order":{"description":"Направление сортировки","name":"order","hasDynamicHelp":false,"multiple":false,"options":["asc","desc"],"type":"option"},"created-from":{"description":"Фильтр по дате создания (от)","name":"created-from","hasDynamicHelp":false,"multiple":false,"type":"option"},"created-to":{"description":"Фильтр по дате создания (до)","name":"created-to","hasDynamicHelp":false,"multiple":false,"type":"option"},"active":{"description":"Фильтр по активности чата","name":"active","allowNo":true,"type":"boolean"},"chat-subtype":{"description":"Фильтр по типу чата","name":"chat-subtype","hasDynamicHelp":false,"multiple":false,"options":["discussion","thread"],"type":"option"},"personal":{"description":"Фильтр по личным чатам","name":"personal","allowNo":true,"type":"boolean"},"limit":{"description":"Количество результатов на страницу","name":"limit","hasDynamicHelp":false,"multiple":false,"type":"option"},"cursor":{"description":"Курсор для следующей страницы","name":"cursor","hasDynamicHelp":false,"multiple":false,"type":"option"},"all":{"description":"Загрузить все страницы автоматически","name":"all","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"search:list-chats","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"search:chats","apiMethod":"GET","apiPath":"/search/chats","defaultColumns":["id","name","created_at","owner_id","channel"],"isESM":true,"relativePath":["dist","commands","search","list-chats.js"]},"search:list-messages":{"aliases":[],"args":{},"description":"Поиск сообщений","examples":["Найти сообщение по тексту — Полнотекстовый поиск по сообщениям:\n $ pachca search list-messages"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"query":{"description":"Текст поискового запроса","name":"query","hasDynamicHelp":false,"multiple":false,"type":"option"},"order":{"description":"Направление сортировки","name":"order","hasDynamicHelp":false,"multiple":false,"options":["asc","desc"],"type":"option"},"sort":{"description":"Сортировка результатов","name":"sort","default":"created_at","hasDynamicHelp":false,"multiple":false,"options":["created_at","relevance"],"type":"option"},"created-from":{"description":"Фильтр по дате создания (от)","name":"created-from","hasDynamicHelp":false,"multiple":false,"type":"option"},"created-to":{"description":"Фильтр по дате создания (до)","name":"created-to","hasDynamicHelp":false,"multiple":false,"type":"option"},"chat-ids":{"description":"Фильтр по ID чатов (через запятую)","name":"chat-ids","hasDynamicHelp":false,"multiple":false,"type":"option"},"user-ids":{"description":"Фильтр по ID авторов сообщений (через запятую)","name":"user-ids","hasDynamicHelp":false,"multiple":false,"type":"option"},"active":{"description":"Фильтр по активности чата","name":"active","allowNo":true,"type":"boolean"},"limit":{"description":"Количество результатов на страницу","name":"limit","hasDynamicHelp":false,"multiple":false,"type":"option"},"cursor":{"description":"Курсор для следующей страницы","name":"cursor","hasDynamicHelp":false,"multiple":false,"type":"option"},"all":{"description":"Загрузить все страницы автоматически","name":"all","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"search:list-messages","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"search:messages","apiMethod":"GET","apiPath":"/search/messages","defaultColumns":["id","content","created_at","entity_type","entity_id"],"isESM":true,"relativePath":["dist","commands","search","list-messages.js"]},"search:list-users":{"aliases":[],"args":{},"description":"Поиск сотрудников","examples":["Отправить личное сообщение пользователю — Определи `user_id` получателя:\n $ pachca search list-users","Упомянуть пользователя — Не нашёл — ищи по всей компании:\n $ pachca search list-users","Найти сотрудника по имени — Полнотекстовый поиск по сотрудникам:\n $ pachca search list-users"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"query":{"description":"Текст поискового запроса","name":"query","hasDynamicHelp":false,"multiple":false,"type":"option"},"sort":{"description":"Сортировка результатов","name":"sort","hasDynamicHelp":false,"multiple":false,"options":["by_score","alphabetical","creation"],"type":"option"},"order":{"description":"Направление сортировки","name":"order","hasDynamicHelp":false,"multiple":false,"options":["asc","desc"],"type":"option"},"created-from":{"description":"Фильтр по дате создания (от)","name":"created-from","hasDynamicHelp":false,"multiple":false,"type":"option"},"created-to":{"description":"Фильтр по дате создания (до)","name":"created-to","hasDynamicHelp":false,"multiple":false,"type":"option"},"company-roles":{"description":"Фильтр по ролям сотрудников (через запятую)","name":"company-roles","hasDynamicHelp":false,"multiple":false,"type":"option"},"limit":{"description":"Количество результатов на страницу","name":"limit","hasDynamicHelp":false,"multiple":false,"type":"option"},"cursor":{"description":"Курсор для следующей страницы","name":"cursor","hasDynamicHelp":false,"multiple":false,"type":"option"},"all":{"description":"Загрузить все страницы автоматически","name":"all","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"search:list-users","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"search:users","apiMethod":"GET","apiPath":"/search/users","defaultColumns":["id","title","first_name","last_name","email"],"isESM":true,"relativePath":["dist","commands","search","list-users.js"]},"security:list":{"aliases":[],"args":{},"description":"Журнал аудита событий","examples":["Получить журнал аудита событий — Получи журнал аудита:\n $ pachca security list","Мониторинг подозрительных входов — Получи события неудачных 2FA за период:\n $ pachca security list","Мониторинг подозрительных входов — Повтори запрос с `--event-key=user_2fa_disabled` — отключение второго фактора у сотрудника:\n $ pachca security list"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"start-time":{"description":"Начальная метка времени, включительно (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Значение, которое не удалось разобрать, фильтр снимает — ответ придёт полным, без ошибки.","name":"start-time","hasDynamicHelp":false,"multiple":false,"type":"option"},"end-time":{"description":"Конечная метка времени, включительно (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Значение, которое не удалось разобрать, фильтр снимает — ответ придёт полным, без ошибки.","name":"end-time","hasDynamicHelp":false,"multiple":false,"type":"option"},"event-key":{"description":"Фильтр по конкретному типу события","name":"event-key","hasDynamicHelp":false,"multiple":false,"options":["user_login","user_logout","user_2fa_fail","user_2fa_success","user_2fa_disabled","user_created","user_deleted","user_role_changed","user_updated","tag_created","tag_deleted","user_added_to_tag","user_removed_from_tag","chat_created","chat_renamed","chat_permission_changed","user_chat_join","user_chat_leave","tag_added_to_chat","tag_removed_from_chat","message_updated","message_deleted","message_created","reaction_created","reaction_deleted","thread_created","access_token_created","access_token_updated","access_token_destroy","kms_encrypt","kms_decrypt","audit_events_accessed","company_chats_accessed","company_bots_accessed","dlp_violation_detected","search_users_api","search_chats_api","search_messages_api","bot_scopes_updated","bot_webhook_settings_updated","bot_token_recreated","bot_deleted","bot_oauth_client_updated","oauth_authorization_granted","oauth_authorization_revoked","oauth_device_authorization_approved","oauth_device_authorization_denied","video_call_started","video_call_finished","video_call_recording_ready","exchange_disabled"],"type":"option"},"actor-id":{"description":"Идентификатор пользователя, выполнившего действие","name":"actor-id","hasDynamicHelp":false,"multiple":false,"type":"option"},"actor-type":{"description":"Тип актора","name":"actor-type","hasDynamicHelp":false,"multiple":false,"type":"option"},"entity-id":{"description":"Идентификатор затронутой сущности","name":"entity-id","hasDynamicHelp":false,"multiple":false,"type":"option"},"entity-type":{"description":"Тип сущности","name":"entity-type","hasDynamicHelp":false,"multiple":false,"type":"option"},"limit":{"description":"Количество результатов на страницу","name":"limit","hasDynamicHelp":false,"multiple":false,"type":"option"},"cursor":{"description":"Курсор для следующей страницы","name":"cursor","hasDynamicHelp":false,"multiple":false,"type":"option"},"all":{"description":"Загрузить все страницы автоматически","name":"all","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"security:list","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"audit_events:read","plan":"corporation","apiMethod":"GET","apiPath":"/audit_events","defaultColumns":["id","created_at","event_key","entity_id","entity_type"],"isESM":true,"relativePath":["dist","commands","security","list.js"]},"tasks:create":{"aliases":[],"args":{},"description":"Новое напоминание","examples":["Форма заявки/запроса — При submit: создай задачу или отправь уведомление ответственному:\n $ pachca tasks create","Создать напоминание — Создай задачу:\n $ pachca tasks create","Создать серию напоминаний — Для каждой даты: создай задачу:\n $ pachca tasks create"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"kind":{"description":"Тип","name":"kind","hasDynamicHelp":false,"multiple":false,"type":"option"},"content":{"description":"Описание (по умолчанию — название типа)","name":"content","hasDynamicHelp":false,"multiple":false,"type":"option"},"due-at":{"description":"Срок выполнения напоминания (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Секунды отбрасываются: срок встаёт на начало минуты. Исключение — ровно 23:59:59: такое напоминание создаётся на весь день, без указания времени.","name":"due-at","hasDynamicHelp":false,"multiple":false,"type":"option"},"priority":{"description":"Приоритет: 1, 2 (важно) или 3 (очень важно)","name":"priority","hasDynamicHelp":false,"multiple":false,"type":"option"},"performer-ids":{"description":"Массив идентификаторов пользователей, привязываемых к напоминанию как «ответственные» (по умолчанию ответственным назначается вы)","name":"performer-ids","hasDynamicHelp":false,"multiple":false,"type":"option"},"chat-id":{"description":"Идентификатор чата, к которому привязывается напоминание (pachca chats list)","name":"chat-id","hasDynamicHelp":false,"multiple":false,"type":"option"},"all-day":{"description":"Напоминание на весь день (без указания времени)","name":"all-day","allowNo":true,"type":"boolean"},"custom-properties":{"description":"Задаваемые дополнительные поля","name":"custom-properties","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"tasks:create","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"tasks:create","apiMethod":"POST","apiPath":"/tasks","defaultColumns":["id","content","created_at","kind","due_at"],"requiredFlags":["kind"],"isESM":true,"relativePath":["dist","commands","tasks","create.js"]},"tasks:delete":{"aliases":[],"args":{"id":{"description":"Идентификатор напоминания (pachca tasks list)","name":"id","required":true}},"description":"Удаление напоминания","examples":["Удалить задачу — Удали задачу:\n $ pachca tasks delete"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"force":{"description":"Пропустить подтверждение","name":"force","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"tasks:delete","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"tasks:delete","apiMethod":"DELETE","apiPath":"/tasks/{id}","isESM":true,"relativePath":["dist","commands","tasks","delete.js"]},"tasks:get":{"aliases":[],"args":{"id":{"description":"Идентификатор напоминания (pachca tasks list)","name":"id","required":true}},"description":"Информация о напоминании","examples":["Получить задачу по ID — Получи информацию о задаче:\n $ pachca tasks get"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"tasks:get","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"tasks:read","apiMethod":"GET","apiPath":"/tasks/{id}","defaultColumns":["id","content","created_at","kind","due_at"],"isESM":true,"relativePath":["dist","commands","tasks","get.js"]},"tasks:list":{"aliases":[],"args":{},"description":"Список напоминаний","examples":["Получить список предстоящих задач — Получи невыполненные задачи:\n $ pachca tasks list","Собрать задачи по чатам проекта — Запроси задачи нужных чатов:\n $ pachca tasks list","Собрать задачи по чатам проекта — Сузь выборку по автору, ответственным и состоянию:\n $ pachca tasks list"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"status":{"description":"Фильтр по состоянию. Если параметр не указан, возвращаются напоминания в любом состоянии.","name":"status","hasDynamicHelp":false,"multiple":false,"options":["done","undone"],"type":"option"},"chat-ids":{"description":"Фильтр по чатам, к которым привязаны напоминания. Доступными считаются чаты, где вы состоите участником, открытые беседы и каналы пространства, а также треды, доступные вам по родительскому чату. Остальные переданные идентификаторы игнорируются без ошибки. Не более 100 идентификаторов. (через запятую)","name":"chat-ids","hasDynamicHelp":false,"multiple":false,"type":"option"},"performer-ids":{"description":"Фильтр по ответственным за напоминание. Не более 100 идентификаторов. (через запятую)","name":"performer-ids","hasDynamicHelp":false,"multiple":false,"type":"option"},"author-id":{"description":"Фильтр по автору напоминания","name":"author-id","hasDynamicHelp":false,"multiple":false,"type":"option"},"limit":{"description":"Количество результатов на страницу","name":"limit","hasDynamicHelp":false,"multiple":false,"type":"option"},"cursor":{"description":"Курсор для следующей страницы","name":"cursor","hasDynamicHelp":false,"multiple":false,"type":"option"},"all":{"description":"Загрузить все страницы автоматически","name":"all","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"tasks:list","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"tasks:read","apiMethod":"GET","apiPath":"/tasks","defaultColumns":["id","content","created_at","kind","due_at"],"isESM":true,"relativePath":["dist","commands","tasks","list.js"]},"tasks:update":{"aliases":[],"args":{"id":{"description":"Идентификатор напоминания (pachca tasks list)","name":"id","required":true}},"description":"Редактирование напоминания","examples":["Отметить задачу выполненной — Обнови статус задачи:\n $ pachca tasks update","Обновить задачу (перенести срок, сменить ответственных) — Обнови нужные поля задачи:\n $ pachca tasks update"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"kind":{"description":"Тип","name":"kind","hasDynamicHelp":false,"multiple":false,"type":"option"},"content":{"description":"Описание","name":"content","hasDynamicHelp":false,"multiple":false,"type":"option"},"due-at":{"description":"Срок выполнения напоминания (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Секунды отбрасываются: срок встаёт на начало минуты. Исключение — ровно 23:59:59: такое напоминание создаётся на весь день, без указания времени.","name":"due-at","hasDynamicHelp":false,"multiple":false,"type":"option"},"priority":{"description":"Приоритет: 1, 2 (важно) или 3 (очень важно)","name":"priority","hasDynamicHelp":false,"multiple":false,"type":"option"},"performer-ids":{"description":"Массив идентификаторов пользователей, привязываемых к напоминанию как «ответственные»","name":"performer-ids","hasDynamicHelp":false,"multiple":false,"type":"option"},"status":{"description":"Статус","name":"status","hasDynamicHelp":false,"multiple":false,"type":"option"},"all-day":{"description":"Напоминание на весь день (без указания времени)","name":"all-day","allowNo":true,"type":"boolean"},"done-at":{"description":"Дата и время выполнения напоминания (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Значение, которое не удалось разобрать, отметку о выполнении снимает: ответ придёт успешный, а в нём `done_at` будет `null`.","name":"done-at","hasDynamicHelp":false,"multiple":false,"type":"option"},"custom-properties":{"description":"Задаваемые дополнительные поля","name":"custom-properties","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"tasks:update","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"tasks:update","apiMethod":"PUT","apiPath":"/tasks/{id}","defaultColumns":["id","content","created_at","kind","due_at"],"isESM":true,"relativePath":["dist","commands","tasks","update.js"]},"threads:add":{"aliases":[],"args":{"id":{"description":"Идентификатор сообщения","name":"id","required":true}},"description":"Новый тред","examples":["Ответить в тред (комментарий к сообщению) — Получи или создай тред, возьми `thread.id` из ответа:\n $ pachca threads add","Подписаться на тред сообщения — Получи или создай тред, возьми `chat_id` из ответа:\n $ pachca threads add"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"threads:add","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"threads:create","apiMethod":"POST","apiPath":"/messages/{id}/thread","defaultColumns":["id","chat_id","message_id","message_chat_id","updated_at"],"isESM":true,"relativePath":["dist","commands","threads","add.js"]},"threads:create":{"aliases":[],"args":{},"description":"Новый самостоятельный тред","flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"threads:create","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"threads:create","apiMethod":"POST","apiPath":"/threads","defaultColumns":["id","chat_id","message_id","message_chat_id","updated_at"],"isESM":true,"relativePath":["dist","commands","threads","create.js"]},"threads:get":{"aliases":[],"args":{"id":{"description":"Идентификатор треда","name":"id","required":true}},"description":"Информация о треде","flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"threads:get","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"threads:read","apiMethod":"GET","apiPath":"/threads/{id}","defaultColumns":["id","chat_id","message_id","message_chat_id","updated_at"],"isESM":true,"relativePath":["dist","commands","threads","get.js"]},"threads:list":{"aliases":[],"args":{},"description":"Список тредов","examples":["Получить список активных тредов за период — Запроси список тредов с фильтром по времени последнего сообщения и нужным `--limit`:\n $ pachca threads list","Получить список активных тредов за период — Если в ответе `meta.paginate.next_page` — пройди по страницам через `--cursor`:\n $ pachca threads list"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"last-message-at-after":{"description":"Фильтрация по времени последнего сообщения в треде: вернутся треды, где оно позже указанного. Значение в ISO-8601, смещение вида `+03:00` учитывается, время без смещения считается UTC.","name":"last-message-at-after","hasDynamicHelp":false,"multiple":false,"type":"option"},"last-message-at-before":{"description":"Фильтрация по времени последнего сообщения в треде: вернутся треды, где оно раньше указанного. Значение в ISO-8601, смещение вида `+03:00` учитывается, время без смещения считается UTC.","name":"last-message-at-before","hasDynamicHelp":false,"multiple":false,"type":"option"},"limit":{"description":"Количество результатов на страницу","name":"limit","hasDynamicHelp":false,"multiple":false,"type":"option"},"cursor":{"description":"Курсор для следующей страницы","name":"cursor","hasDynamicHelp":false,"multiple":false,"type":"option"},"all":{"description":"Загрузить все страницы автоматически","name":"all","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"threads:list","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"threads:read","apiMethod":"GET","apiPath":"/threads","defaultColumns":["id","chat_id","message_id","message_chat_id","updated_at"],"isESM":true,"relativePath":["dist","commands","threads","list.js"]},"upgrade":{"aliases":[],"args":{},"description":"Обновить CLI до последней версии","examples":["<%= config.bin %> upgrade"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"upgrade","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"isESM":true,"relativePath":["dist","commands","upgrade.js"]},"upload":{"aliases":[],"args":{"file":{"description":"Путь к файлу или - для stdin","name":"file","required":true}},"description":"Загрузить файл (получает подпись и загружает автоматически)","examples":["<%= config.bin %> upload photo.jpg","cat data.csv | <%= config.bin %> upload -"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"upload","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"uploads:write","isESM":true,"relativePath":["dist","commands","upload.js"]},"users:create":{"aliases":[],"args":{},"description":"Новый сотрудник","examples":["Массовое создание сотрудников с тегами — Для каждого сотрудника: создай аккаунт с тегами:\n $ pachca users create","Создать гостя в чат — Создай гостя: роль `guest` и ровно один чат в `--chat-ids`:\n $ pachca users create","Онбординг нового сотрудника — Создай аккаунт:\n $ pachca users create"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"first-name":{"description":"Имя (макс. 255 символов)","name":"first-name","hasDynamicHelp":false,"multiple":false,"type":"option"},"last-name":{"description":"Фамилия (макс. 255 символов)","name":"last-name","hasDynamicHelp":false,"multiple":false,"type":"option"},"email":{"description":"Электронная почта (макс. 255 символов)","name":"email","hasDynamicHelp":false,"multiple":false,"type":"option"},"phone-number":{"description":"Телефон (макс. 255 символов)","name":"phone-number","hasDynamicHelp":false,"multiple":false,"type":"option"},"nickname":{"description":"Имя пользователя (макс. 255 символов)","name":"nickname","hasDynamicHelp":false,"multiple":false,"type":"option"},"department":{"description":"Департамент (макс. 255 символов)","name":"department","hasDynamicHelp":false,"multiple":false,"type":"option"},"title":{"description":"Должность","name":"title","hasDynamicHelp":false,"multiple":false,"type":"option"},"role":{"description":"Уровень доступа","name":"role","hasDynamicHelp":false,"multiple":false,"type":"option"},"suspended":{"description":"Деактивация пользователя","name":"suspended","allowNo":true,"type":"boolean"},"list-tags":{"description":"Массив тегов, привязываемых к сотруднику","name":"list-tags","hasDynamicHelp":false,"multiple":false,"type":"option"},"chat-ids":{"description":"Идентификаторы чатов, в которые сотрудник будет добавлен сразу при создании. Для роли `guest` параметр обязателен и должен содержать ровно один активный чат.","name":"chat-ids","hasDynamicHelp":false,"multiple":false,"type":"option"},"custom-properties":{"description":"Задаваемые дополнительные поля","name":"custom-properties","hasDynamicHelp":false,"multiple":false,"type":"option"},"skip-email-notify":{"description":"Пропуск этапа отправки приглашения сотруднику. Сотруднику не будет отправлено письмо на электронную почту с приглашением создать аккаунт. Полезно при предварительном создании аккаунтов перед входом через SSO.","name":"skip-email-notify","allowNo":true,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"users:create","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"users:create","apiMethod":"POST","apiPath":"/users","defaultColumns":["id","title","first_name","last_name","email"],"requiredFlags":["email"],"isESM":true,"relativePath":["dist","commands","users","create.js"]},"users:delete":{"aliases":[],"args":{"id":{"description":"Идентификатор пользователя (pachca users list)","name":"id","required":true}},"description":"Удаление сотрудника","examples":["Offboarding сотрудника — Опционально: удалить аккаунт полностью:\n $ pachca users delete"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"force":{"description":"Пропустить подтверждение","name":"force","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"users:delete","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"users:delete","apiMethod":"DELETE","apiPath":"/users/{id}","isESM":true,"relativePath":["dist","commands","users","delete.js"]},"users:get":{"aliases":[],"args":{"id":{"description":"Идентификатор пользователя (pachca users list)","name":"id","required":true}},"description":"Информация о сотруднике","examples":["Получить сотрудника по ID — Получи информацию о сотруднике:\n $ pachca users get"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"users:get","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"users:read","apiMethod":"GET","apiPath":"/users/{id}","defaultColumns":["id","title","first_name","last_name","email"],"isESM":true,"relativePath":["dist","commands","users","get.js"]},"users:get-status":{"aliases":[],"args":{"user_id":{"description":"Идентификатор пользователя (pachca users list)","name":"user_id","required":true}},"description":"Статус сотрудника","examples":["Управление статусом сотрудника — Получить текущий статус:\n $ pachca users get-status"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"users:get-status","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"user_status:read","apiMethod":"GET","apiPath":"/users/{user_id}/status","defaultColumns":["title","emoji","expires_at","is_away"],"isESM":true,"relativePath":["dist","commands","users","get-status.js"]},"users:list":{"aliases":[],"args":{},"description":"Список сотрудников","examples":["Проверить, кто прочитал сообщение — При необходимости сопоставь с именами сотрудников:\n $ pachca users list","Разослать уведомление нескольким пользователям — Определи список `user_id` получателей:\n $ pachca users list","Найти сотрудника по имени или email — Поиск по имени/email (частичное совпадение):\n $ pachca users list"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"query":{"description":"Поисковая фраза для фильтрации результатов. Поиск работает по полям: `first_name` (имя), `last_name` (фамилия), `email` (электронная почта), `phone_number` (телефон) и `nickname` (никнейм).","name":"query","hasDynamicHelp":false,"multiple":false,"type":"option"},"limit":{"description":"Количество результатов на страницу","name":"limit","hasDynamicHelp":false,"multiple":false,"type":"option"},"cursor":{"description":"Курсор для следующей страницы","name":"cursor","hasDynamicHelp":false,"multiple":false,"type":"option"},"all":{"description":"Загрузить все страницы автоматически","name":"all","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"users:list","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"users:read","apiMethod":"GET","apiPath":"/users","defaultColumns":["id","title","first_name","last_name","email"],"isESM":true,"relativePath":["dist","commands","users","list.js"]},"users:remove-avatar":{"aliases":[],"args":{"user_id":{"description":"Идентификатор пользователя (pachca users list)","name":"user_id","required":true}},"description":"Удаление аватара сотрудника","examples":["Удалить аватар сотрудника — Удали аватар сотрудника:\n $ pachca users remove-avatar"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"force":{"description":"Пропустить подтверждение","name":"force","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"users:remove-avatar","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"user_avatar:write","apiMethod":"DELETE","apiPath":"/users/{user_id}/avatar","isESM":true,"relativePath":["dist","commands","users","remove-avatar.js"]},"users:remove-status":{"aliases":[],"args":{"user_id":{"description":"Идентификатор пользователя (pachca users list)","name":"user_id","required":true}},"description":"Удаление статуса сотрудника","examples":["Управление статусом сотрудника — Удалить статус:\n $ pachca users remove-status"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"force":{"description":"Пропустить подтверждение","name":"force","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"users:remove-status","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"user_status:write","apiMethod":"DELETE","apiPath":"/users/{user_id}/status","isESM":true,"relativePath":["dist","commands","users","remove-status.js"]},"users:update":{"aliases":[],"args":{"id":{"description":"Идентификатор пользователя (pachca users list)","name":"id","required":true}},"description":"Редактирование сотрудника","examples":["Массовое создание сотрудников с тегами — Или обнови существующего:\n $ pachca users update","Offboarding сотрудника — Заблокировать доступ:\n $ pachca users update"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"first-name":{"description":"Имя (макс. 255 символов)","name":"first-name","hasDynamicHelp":false,"multiple":false,"type":"option"},"last-name":{"description":"Фамилия (макс. 255 символов)","name":"last-name","hasDynamicHelp":false,"multiple":false,"type":"option"},"email":{"description":"Электронная почта (макс. 255 символов)","name":"email","hasDynamicHelp":false,"multiple":false,"type":"option"},"phone-number":{"description":"Телефон (макс. 255 символов)","name":"phone-number","hasDynamicHelp":false,"multiple":false,"type":"option"},"nickname":{"description":"Имя пользователя (макс. 255 символов)","name":"nickname","hasDynamicHelp":false,"multiple":false,"type":"option"},"department":{"description":"Департамент (макс. 255 символов)","name":"department","hasDynamicHelp":false,"multiple":false,"type":"option"},"title":{"description":"Должность","name":"title","hasDynamicHelp":false,"multiple":false,"type":"option"},"role":{"description":"Уровень доступа","name":"role","hasDynamicHelp":false,"multiple":false,"type":"option"},"suspended":{"description":"Деактивация пользователя","name":"suspended","allowNo":true,"type":"boolean"},"list-tags":{"description":"Массив тегов, привязываемых к сотруднику","name":"list-tags","hasDynamicHelp":false,"multiple":false,"type":"option"},"custom-properties":{"description":"Задаваемые дополнительные поля","name":"custom-properties","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"users:update","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"users:update","apiMethod":"PUT","apiPath":"/users/{id}","defaultColumns":["id","title","first_name","last_name","email"],"isESM":true,"relativePath":["dist","commands","users","update.js"]},"users:update-avatar":{"aliases":[],"args":{"user_id":{"description":"Идентификатор пользователя (pachca users list)","name":"user_id","required":true}},"description":"Загрузка аватара сотрудника","examples":["Загрузить аватар сотрудника — Загрузи аватар сотруднику:\n $ pachca users update-avatar"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"file":{"description":"Файл изображения для аватара","name":"file","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"users:update-avatar","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"user_avatar:write","apiMethod":"PUT","apiPath":"/users/{user_id}/avatar","defaultColumns":["image_url"],"isESM":true,"relativePath":["dist","commands","users","update-avatar.js"]},"users:update-status":{"aliases":[],"args":{"user_id":{"description":"Идентификатор пользователя (pachca users list)","name":"user_id","required":true}},"description":"Новый статус сотрудника","examples":["Управление статусом сотрудника — Установить статус:\n $ pachca users update-status"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"emoji":{"description":"Emoji символ статуса","name":"emoji","hasDynamicHelp":false,"multiple":false,"type":"option"},"title":{"description":"Текст статуса (макс. 50 символов)","name":"title","hasDynamicHelp":false,"multiple":false,"type":"option"},"expires-at":{"description":"Срок жизни статуса (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Сюда идёт срок, названный словами: «до трёх» это значение поля, а не часть подписи.","name":"expires-at","hasDynamicHelp":false,"multiple":false,"type":"option"},"is-away":{"description":"Режим «Нет на месте»","name":"is-away","allowNo":true,"type":"boolean"},"away-message":{"description":"Текст сообщения при режиме «Нет на месте». Отображается в профиле и при личных сообщениях/упоминаниях. (макс. 1024 символов)","name":"away-message","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"users:update-status","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"user_status:write","apiMethod":"PUT","apiPath":"/users/{user_id}/status","defaultColumns":["title","emoji","expires_at","is_away"],"requiredFlags":["emoji","title"],"isESM":true,"relativePath":["dist","commands","users","update-status.js"]},"version":{"aliases":[],"args":{},"description":"Версия CLI","examples":["<%= config.bin %> version"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"version","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"isESM":true,"relativePath":["dist","commands","version.js"]},"views:open":{"aliases":[],"args":{},"description":"Открытие представления","examples":["Показать интерактивную форму пользователю — Немедленно открой форму:\n $ pachca views open","Опрос сотрудников через форму — Открой форму с полями опроса:\n $ pachca views open","Форма заявки/запроса — При нажатии открой форму с полями: тема, описание, приоритет:\n $ pachca views open"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"title":{"description":"Заголовок представления (макс. 24 символов)","name":"title","hasDynamicHelp":false,"multiple":false,"type":"option"},"close-text":{"description":"Текст кнопки закрытия представления. Отображается только в десктоп-вебе. В мобильных приложениях (iOS/Android) кнопка закрытия — это крестик в шапке, и заданный текст там не показывается. (макс. 24 символов)","name":"close-text","hasDynamicHelp":false,"multiple":false,"type":"option"},"submit-text":{"description":"Текст кнопки отправки формы (макс. 24 символов)","name":"submit-text","hasDynamicHelp":false,"multiple":false,"type":"option"},"blocks":{"description":"Массив блоков представления","name":"blocks","hasDynamicHelp":false,"multiple":false,"type":"option"},"type":{"description":"Способ открытия представления","name":"type","hasDynamicHelp":false,"multiple":false,"options":["modal"],"type":"option"},"trigger-id":{"description":"Уникальный идентификатор события (полученный, например, в исходящем вебхуке о нажатии кнопки)","name":"trigger-id","hasDynamicHelp":false,"multiple":false,"type":"option"},"private-metadata":{"description":"Необязательная строка, которая будет отправлена в ваше приложение при отправке пользователем заполненной формы. Используйте это поле, например, для передачи в формате `JSON` какой то дополнительной информации вместе с заполненной пользователем формой. (макс. 3000 символов)","name":"private-metadata","hasDynamicHelp":false,"multiple":false,"type":"option"},"callback-id":{"description":"Необязательный идентификатор для распознавания этого представления, который будет отправлен в ваше приложение при отправке пользователем заполненной формы. Используйте это поле, например, для понимания, какую форму должен был заполнить пользователь. (макс. 255 символов)","name":"callback-id","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"views:open","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"views:write","apiMethod":"POST","apiPath":"/views/open","requiredFlags":["title","blocks","type","trigger-id"],"isESM":true,"relativePath":["dist","commands","views","open.js"]},"views:submit-response":{"aliases":[],"args":{"view_id":{"description":"Идентификатор представления","name":"view_id","required":true}},"description":"Ответ на отправку формы","examples":["Обработать отправку формы (view_submission) — Если адрес исходящего вебхука не задан → ответь методом по `view_id` и `submit_id` из события: пустой `errors` закрывает форму, заполненный показывает ошибки полей:\n $ pachca views submit-response"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"submit-id":{"description":"Идентификатор отправки формы из вебхука `view_submit`","name":"submit-id","hasDynamicHelp":false,"multiple":false,"type":"option"},"errors":{"description":"Ошибки заполнения полей. Ключ — `name` блока, значение — текст ошибки под полем. Без этого поля представление закрывается как успешно отправленное.","name":"errors","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"views:submit-response","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"views:write","apiMethod":"POST","apiPath":"/views/{view_id}/submit_response","defaultColumns":["success"],"requiredFlags":["submit-id"],"isESM":true,"relativePath":["dist","commands","views","submit-response.js"]}},"version":"0.0.0"} \ No newline at end of file +{"commands":{"api":{"aliases":[],"args":{"method":{"description":"HTTP-метод (GET, POST, PUT, DELETE, PATCH)","name":"method","options":["GET","POST","PUT","DELETE","PATCH"],"required":true},"path":{"description":"Путь API (например, /messages)","name":"path","required":true}},"description":"Произвольный запрос к API. Список и справка: `api ls` (список эндпоинтов), `api <МЕТОД> <путь> --describe` / `--spec` / `--docs`","examples":["<%= config.bin %> api GET /messages --query chat_id=123","<%= config.bin %> api POST /messages -F message[chat_id]=12345 -f message[content]=\"Привет\"","<%= config.bin %> api POST /messages --input payload.json","<%= config.bin %> api POST /messages --data '{\"message\":{\"entity_id\":123,\"content\":\"Привет\"}}'","<%= config.bin %> api GET /profile -o yaml","<%= config.bin %> api ls","<%= config.bin %> api ls --json","<%= config.bin %> api POST /messages --describe","<%= config.bin %> api GET /messages --spec","<%= config.bin %> api POST /messages --docs"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"raw-field":{"char":"f","description":"Строковое поле (key=value)","name":"raw-field","hasDynamicHelp":false,"multiple":true,"type":"option"},"field":{"char":"F","description":"Типизированное поле (числа/boolean автоматически, @file читает файл)","name":"field","hasDynamicHelp":false,"multiple":true,"type":"option"},"input":{"description":"JSON-файл с телом запроса (- для stdin)","name":"input","hasDynamicHelp":false,"multiple":false,"type":"option"},"data":{"description":"Тело запроса инлайн JSON-строкой","name":"data","hasDynamicHelp":false,"multiple":false,"type":"option"},"query":{"description":"Query-параметр (key=value)","name":"query","hasDynamicHelp":false,"multiple":true,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"api","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":false,"enableJsonFlag":false,"isESM":true,"relativePath":["dist","commands","api.js"]},"auth:list":{"aliases":[],"args":{},"description":"Список сохранённых профилей","examples":["<%= config.bin %> auth list","<%= config.bin %> auth list -o json"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"auth:list","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"isESM":true,"relativePath":["dist","commands","auth","list.js"]},"auth:login":{"aliases":[],"args":{},"description":"Вход в аккаунт и сохранение профиля","examples":["<%= config.bin %> auth login","<%= config.bin %> auth login --profile personal","<%= config.bin %> auth login --profile ci --token $PACHCA_TOKEN"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Имя профиля (по умолчанию \"default\")","name":"profile","default":"default","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Войти готовым токеном вместо входа через браузер. Значение `-` читает токен из потока ввода, не оставляя его в истории оболочки","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"no-browser":{"description":"Не открывать браузер — только напечатать адрес и код","name":"no-browser","allowNo":false,"type":"boolean"},"insecure-storage":{"description":"Хранить токен в файле конфигурации, а не в хранилище ключей ОС","name":"insecure-storage","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"auth:login","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"isESM":true,"relativePath":["dist","commands","auth","login.js"]},"auth:logout":{"aliases":[],"args":{"profile":{"description":"Имя профиля для удаления","name":"profile","required":false}},"description":"Удаление сохранённого профиля","examples":["<%= config.bin %> auth logout bot-notify","<%= config.bin %> auth logout"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"auth:logout","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"isESM":true,"relativePath":["dist","commands","auth","logout.js"]},"auth:status":{"aliases":[],"args":{},"description":"Статус текущего профиля","examples":["<%= config.bin %> auth status","<%= config.bin %> auth status -o json"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"remote":{"description":"Спросить права у сервера, а не показывать сохранённые при входе","name":"remote","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"auth:status","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"isESM":true,"relativePath":["dist","commands","auth","status.js"]},"auth:switch":{"aliases":[],"args":{"profile":{"description":"Имя профиля для переключения","name":"profile","required":true}},"description":"Переключение активного профиля","examples":["<%= config.bin %> auth switch bot-support"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"auth:switch","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"isESM":true,"relativePath":["dist","commands","auth","switch.js"]},"bots:create":{"aliases":[],"args":{},"description":"Новый бот","examples":["Создать бота через API и получить токен — Создай бота. Только пользовательским токеном (не токеном бота); `nickname` обязан заканчиваться на `_bot`. Параметры вебхука (Webhook URL, события, команды) можно задать сразу или позже. Скоупы токена бота можно ограничить флагом `--scopes` (если не указать — бот получит набор по умолчанию):\n $ pachca bots create","Настроить бота с исходящим вебхуком — Создай бота, сразу указав Webhook URL и события в одном вызове (детали создания и работы с токеном — в сценарии «Создать бота через API и получить токен»):\n $ pachca bots create"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"name":{"description":"Имя бота (макс. 255 символов)","name":"name","hasDynamicHelp":false,"multiple":false,"type":"option"},"nickname":{"description":"Никнейм бота. Должен заканчиваться на `_bot`. (макс. 255 символов)","name":"nickname","hasDynamicHelp":false,"multiple":false,"type":"option"},"outgoing-url":{"description":"URL исходящего вебхука","name":"outgoing-url","hasDynamicHelp":false,"multiple":false,"type":"option"},"events":{"description":"События, на которые подписан бот","name":"events","hasDynamicHelp":false,"multiple":false,"type":"option"},"trigger-on":{"description":"Условие срабатывания исходящего вебхука","name":"trigger-on","hasDynamicHelp":false,"multiple":false,"type":"option"},"commands":{"description":"Команды бота (триггер-слова), на которые он реагирует при trigger_on = commands. Суммарная длина команд, объединённых через запятую, не должна превышать 255 символов.","name":"commands","hasDynamicHelp":false,"multiple":false,"type":"option"},"scopes":{"description":"Скоупы (права доступа) токена бота. Если не указано, бот получает набор по умолчанию. Боту доступны не все скоупы: часть из них разрешена только пользовательским ролям, и попытка назначить такой скоуп возвращает `400`. Служебные значения `bot` и `all` назначать нельзя.","name":"scopes","hasDynamicHelp":false,"multiple":false,"type":"option"},"template":{"description":"Шаблон форматирования входящего вебхука","name":"template","hasDynamicHelp":false,"multiple":false,"type":"option"},"template-engine":{"description":"Шаблонизатор для обработки шаблона входящего вебхука","name":"template-engine","hasDynamicHelp":false,"multiple":false,"type":"option"},"challenge-key":{"description":"Название поля проверки для верификации входящего вебхука","name":"challenge-key","hasDynamicHelp":false,"multiple":false,"type":"option"},"link-preview-enabled":{"description":"Показывать превью ссылок в сообщениях входящего вебхука","name":"link-preview-enabled","allowNo":true,"type":"boolean"},"ignore-self-messages":{"description":"Игнорировать входящие сообщения, отправленные самим ботом","name":"ignore-self-messages","allowNo":true,"type":"boolean"},"events-history-enabled":{"description":"Сохранять историю событий бота для последующего получения через метод истории событий","name":"events-history-enabled","allowNo":true,"type":"boolean"},"who-can-add":{"description":"Кто может добавлять бота в чаты","name":"who-can-add","hasDynamicHelp":false,"multiple":false,"type":"option"},"can-edit":{"description":"Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель.","name":"can-edit","hasDynamicHelp":false,"multiple":false,"type":"option"},"single-chat":{"description":"Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят.","name":"single-chat","allowNo":true,"type":"boolean"},"kind":{"description":"Источник входящего вебхука. Без `empty` по умолчанию `simple`, а у пустого бота входящий вебхук включается только этим полем.","name":"kind","hasDynamicHelp":false,"multiple":false,"type":"option"},"unfurl-domains":{"description":"Домены, ссылки на которые бот разворачивает, не больше 5. Работают вместе с событием `message_link_shared`.","name":"unfurl-domains","hasDynamicHelp":false,"multiple":false,"type":"option"},"empty":{"description":"Создать пустого бота: без токена и без входящего вебхука. Без этого поля бот создаётся с входящим вебхуком в своём формате, а его токен приходит в `access_token`.","name":"empty","allowNo":true,"type":"boolean"},"oauth-client":{"description":"Включить авторизацию от имени сотрудника сразу при создании","name":"oauth-client","hasDynamicHelp":false,"multiple":false,"type":"option"},"promo":{"description":"Страница бота в витрине. Задаётся только вместе с `oauth_client`: без авторизации страницы у бота нет.","name":"promo","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"bots:create","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"bots:write","apiMethod":"POST","apiPath":"/bots","defaultColumns":["id","name","created_at","nickname","avatar_url"],"requiredFlags":["name"],"isESM":true,"relativePath":["dist","commands","bots","create.js"]},"bots:create-token":{"aliases":[],"args":{"id":{"description":"Идентификатор бота (pachca bots list)","name":"id","required":true}},"description":"Новый токен бота","examples":["Выпустить боту отдельный токен — Выпусти токен с именем и правами из каталога. Без `--scopes` токен выпускается без прав, право не из каталога отклоняется с `400`:\n $ pachca bots create-token"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"name":{"description":"Имя токена: по нему токены различают в списке (макс. 255 символов)","name":"name","hasDynamicHelp":false,"multiple":false,"type":"option"},"scopes":{"description":"Права токена. Доступны только права, которые можно выдать боту. Если не передать, токен выпускается без прав.","name":"scopes","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"bots:create-token","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"bots:write","apiMethod":"POST","apiPath":"/bots/{id}/tokens","defaultColumns":["id","name","created_at","token","user_id"],"requiredFlags":["name"],"isESM":true,"relativePath":["dist","commands","bots","create-token.js"]},"bots:delete":{"aliases":[],"args":{"id":{"description":"Идентификатор бота (pachca bots list)","name":"id","required":true}},"description":"Удаление бота","examples":["Найти и удалить бота — Возьми `id` нужного бота из списка и удали его (скоуп `bots:write`). Доступно создателю бота и администратору, если бот открыт администраторам, — владельцы чатов удалять бота не могут. Все токены бота инвалидируются сразу, бот исключается из всех чатов, его вебхуки удаляются:\n $ pachca bots delete"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"force":{"description":"Пропустить подтверждение","name":"force","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"bots:delete","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"bots:write","apiMethod":"DELETE","apiPath":"/bots/{id}","isESM":true,"relativePath":["dist","commands","bots","delete.js"]},"bots:delete-token":{"aliases":[],"args":{"id":{"description":"Идентификатор бота (pachca bots list)","name":"id","required":true},"token_id":{"description":"Идентификатор токена","name":"token_id","required":true}},"description":"Удаление токена бота","flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"force":{"description":"Пропустить подтверждение","name":"force","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"bots:delete-token","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"bots:write","apiMethod":"DELETE","apiPath":"/bots/{id}/tokens/{token_id}","isESM":true,"relativePath":["dist","commands","bots","delete-token.js"]},"bots:get":{"aliases":[],"args":{"id":{"description":"Идентификатор бота (pachca bots list)","name":"id","required":true}},"description":"Информация о боте","flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"bots:get","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"bots:read","apiMethod":"GET","apiPath":"/bots/{id}","defaultColumns":["id","name","created_at","nickname","avatar_url"],"isESM":true,"relativePath":["dist","commands","bots","get.js"]},"bots:list":{"aliases":[],"args":{},"description":"Список ботов","examples":["Найти и удалить бота — Пользовательским токеном (скоуп `bots:read`) получи список ботов, доступных тебе для редактирования: созданных тобой и тех, чьи настройки открывают тебе доступ. Фильтруй по имени параметром `query`, следующую страницу бери из `meta.paginate.next_page`:\n $ pachca bots list"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"query":{"description":"Поисковая фраза для фильтрации ботов по имени","name":"query","hasDynamicHelp":false,"multiple":false,"type":"option"},"limit":{"description":"Количество результатов на страницу","name":"limit","hasDynamicHelp":false,"multiple":false,"type":"option"},"cursor":{"description":"Курсор для следующей страницы","name":"cursor","hasDynamicHelp":false,"multiple":false,"type":"option"},"all":{"description":"Загрузить все страницы автоматически","name":"all","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"bots:list","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"bots:read","apiMethod":"GET","apiPath":"/bots","defaultColumns":["id","name","created_at","nickname","avatar_url"],"isESM":true,"relativePath":["dist","commands","bots","list.js"]},"bots:list-company":{"aliases":[],"args":{},"description":"Список ботов пространства","examples":["Инвентаризация всех ботов пространства — Получи всех ботов пространства, а не только доступных для редактирования:\n $ pachca bots list-company"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"query":{"description":"Поисковая фраза для фильтрации ботов по имени","name":"query","hasDynamicHelp":false,"multiple":false,"type":"option"},"limit":{"description":"Количество результатов на страницу","name":"limit","hasDynamicHelp":false,"multiple":false,"type":"option"},"cursor":{"description":"Курсор для следующей страницы","name":"cursor","hasDynamicHelp":false,"multiple":false,"type":"option"},"all":{"description":"Загрузить все страницы автоматически","name":"all","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"bots:list-company","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"company_bots:read","plan":"corporation","apiMethod":"GET","apiPath":"/company/bots","defaultColumns":["id","webhook"],"isESM":true,"relativePath":["dist","commands","bots","list-company.js"]},"bots:list-events":{"aliases":[],"args":{},"description":"История событий","examples":["Обработка событий через историю (polling) — Получи накопленные события:\n $ pachca bots list-events"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"limit":{"description":"Количество результатов на страницу","name":"limit","hasDynamicHelp":false,"multiple":false,"type":"option"},"cursor":{"description":"Курсор для следующей страницы","name":"cursor","hasDynamicHelp":false,"multiple":false,"type":"option"},"all":{"description":"Загрузить все страницы автоматически","name":"all","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"bots:list-events","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"webhooks:events:read","apiMethod":"GET","apiPath":"/webhooks/events","defaultColumns":["id","created_at","event_type","payload"],"isESM":true,"relativePath":["dist","commands","bots","list-events.js"]},"bots:list-scopes":{"aliases":[],"args":{"id":{"description":"Идентификатор бота (pachca bots list)","name":"id","required":true}},"description":"Каталог прав бота","examples":["Выпустить боту отдельный токен — Пользовательским токеном (создатель бота или администратор, если бот открыт администраторам) получи каталог прав, которые можно выдать этому боту:\n $ pachca bots list-scopes"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"bots:list-scopes","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"bots:read","apiMethod":"GET","apiPath":"/bots/{id}/scopes","isESM":true,"relativePath":["dist","commands","bots","list-scopes.js"]},"bots:list-tokens":{"aliases":[],"args":{"id":{"description":"Идентификатор бота (pachca bots list)","name":"id","required":true}},"description":"Список токенов бота","flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"limit":{"description":"Количество результатов на страницу","name":"limit","hasDynamicHelp":false,"multiple":false,"type":"option"},"cursor":{"description":"Курсор для следующей страницы","name":"cursor","hasDynamicHelp":false,"multiple":false,"type":"option"},"all":{"description":"Загрузить все страницы автоматически","name":"all","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"bots:list-tokens","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"bots:read","apiMethod":"GET","apiPath":"/bots/{id}/tokens","defaultColumns":["id","name","created_at","token","user_id"],"isESM":true,"relativePath":["dist","commands","bots","list-tokens.js"]},"bots:recreate-token":{"aliases":[],"args":{"id":{"description":"Идентификатор бота (pachca bots list)","name":"id","required":true}},"description":"Ротация токена бота","examples":["Ротация токена бота — Пользовательским токеном (создатель бота или администратор, если бот открыт администраторам) — перевыпусти основной токен по `id` бота: тот, что без имени, а если такого нет, самый старый. Прежнее значение инвалидируется сразу:\n $ pachca bots recreate-token"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"bots:recreate-token","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"bots:write","apiMethod":"POST","apiPath":"/bots/{id}/recreate_token","defaultColumns":["id","name","created_at","nickname","avatar_url"],"isESM":true,"relativePath":["dist","commands","bots","recreate-token.js"]},"bots:recreate-token-self":{"aliases":[],"args":{},"description":"Ротация собственного токена бота","examples":["Ротация токена бота — Или: бот перевыпускает свой основной токен сам (скоуп `bot_self:write`). Если запрос сделан основным токеном, он инвалидируется сразу — обязательно сохрани новый `access_token` из ответа, иначе бот потеряет доступ к API:\n $ pachca bots recreate-token-self"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"bots:recreate-token-self","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"bot_self:write","apiMethod":"POST","apiPath":"/bot/recreate_token","defaultColumns":["id","webhook","access_token"],"isESM":true,"relativePath":["dist","commands","bots","recreate-token-self.js"]},"bots:reissue-token":{"aliases":[],"args":{"id":{"description":"Идентификатор бота (pachca bots list)","name":"id","required":true},"token_id":{"description":"Идентификатор токена","name":"token_id","required":true}},"description":"Перевыпуск токена бота","examples":["Ротация токена бота — Отдельный токен бота перевыпускай по его `id` из `pachca bots list-tokens`: значение меняется, имя и права остаются:\n $ pachca bots reissue-token"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"bots:reissue-token","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"bots:write","apiMethod":"POST","apiPath":"/bots/{id}/tokens/{token_id}/reissue","defaultColumns":["id","name","created_at","token","user_id"],"isESM":true,"relativePath":["dist","commands","bots","reissue-token.js"]},"bots:remove-event":{"aliases":[],"args":{"id":{"description":"Идентификатор события (pachca bots list)","name":"id","required":true}},"description":"Удаление события","examples":["Обработка событий через историю (polling) — Удали обработанное событие:\n $ pachca bots remove-event"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"force":{"description":"Пропустить подтверждение","name":"force","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"bots:remove-event","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"webhooks:events:delete","apiMethod":"DELETE","apiPath":"/webhooks/events/{id}","isESM":true,"relativePath":["dist","commands","bots","remove-event.js"]},"bots:rotate-client-secret":{"aliases":[],"args":{"id":{"description":"Идентификатор бота (pachca bots list)","name":"id","required":true}},"description":"Ротация секрета клиента","flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"bots:rotate-client-secret","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"bots:write","apiMethod":"POST","apiPath":"/bots/{id}/rotate_client_secret","defaultColumns":["id","name","created_at","nickname","avatar_url"],"isESM":true,"relativePath":["dist","commands","bots","rotate-client-secret.js"]},"bots:update":{"aliases":[],"args":{"id":{"description":"Идентификатор бота (pachca bots list)","name":"id","required":true}},"description":"Редактирование бота","examples":["Обновить Webhook URL бота — Пользовательским токеном (с правом редактировать бота) — обнови URL по `id` бота. Пустая строка отключает вебхук:\n $ pachca bots update","Включить боту авторизацию от имени сотрудника — Пользовательским токеном (создатель бота или администратор, если бот открыт администраторам) включи авторизацию: где хранится секрет, адреса возврата и права, которые бот попросит у сотрудника. Права бери из `pachca bots list-scopes`:\n $ pachca bots update","Включить боту авторизацию от имени сотрудника — Чтобы бот появился в витрине, добавь описание и опубликуй страницу:\n $ pachca bots update"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"name":{"description":"Имя бота (макс. 255 символов)","name":"name","hasDynamicHelp":false,"multiple":false,"type":"option"},"nickname":{"description":"Никнейм бота. Должен заканчиваться на `_bot`. (макс. 255 символов)","name":"nickname","hasDynamicHelp":false,"multiple":false,"type":"option"},"outgoing-url":{"description":"URL исходящего вебхука","name":"outgoing-url","hasDynamicHelp":false,"multiple":false,"type":"option"},"events":{"description":"События, на которые подписан бот","name":"events","hasDynamicHelp":false,"multiple":false,"type":"option"},"trigger-on":{"description":"Условие срабатывания исходящего вебхука","name":"trigger-on","hasDynamicHelp":false,"multiple":false,"type":"option"},"commands":{"description":"Команды бота (триггер-слова), на которые он реагирует при trigger_on = commands. Суммарная длина команд, объединённых через запятую, не должна превышать 255 символов.","name":"commands","hasDynamicHelp":false,"multiple":false,"type":"option"},"scopes":{"description":"Скоупы (права доступа) токена бота. Если не указано, бот получает набор по умолчанию. Боту доступны не все скоупы: часть из них разрешена только пользовательским ролям, и попытка назначить такой скоуп возвращает `400`. Служебные значения `bot` и `all` назначать нельзя.","name":"scopes","hasDynamicHelp":false,"multiple":false,"type":"option"},"template":{"description":"Шаблон форматирования входящего вебхука","name":"template","hasDynamicHelp":false,"multiple":false,"type":"option"},"template-engine":{"description":"Шаблонизатор для обработки шаблона входящего вебхука","name":"template-engine","hasDynamicHelp":false,"multiple":false,"type":"option"},"challenge-key":{"description":"Название поля проверки для верификации входящего вебхука","name":"challenge-key","hasDynamicHelp":false,"multiple":false,"type":"option"},"link-preview-enabled":{"description":"Показывать превью ссылок в сообщениях входящего вебхука","name":"link-preview-enabled","allowNo":true,"type":"boolean"},"ignore-self-messages":{"description":"Игнорировать входящие сообщения, отправленные самим ботом","name":"ignore-self-messages","allowNo":true,"type":"boolean"},"events-history-enabled":{"description":"Сохранять историю событий бота для последующего получения через метод истории событий","name":"events-history-enabled","allowNo":true,"type":"boolean"},"who-can-add":{"description":"Кто может добавлять бота в чаты","name":"who-can-add","hasDynamicHelp":false,"multiple":false,"type":"option"},"can-edit":{"description":"Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель.","name":"can-edit","hasDynamicHelp":false,"multiple":false,"type":"option"},"single-chat":{"description":"Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят.","name":"single-chat","allowNo":true,"type":"boolean"},"kind":{"description":"Источник входящего вебхука. Если у бота входящего вебхука не было, он включается.","name":"kind","hasDynamicHelp":false,"multiple":false,"type":"option"},"unfurl-domains":{"description":"Домены, ссылки на которые бот разворачивает, не больше 5. Работают вместе с событием `message_link_shared`.","name":"unfurl-domains","hasDynamicHelp":false,"multiple":false,"type":"option"},"oauth-client":{"description":"Настройки авторизации от имени сотрудника. Если авторизация выключена, объект её включает, а `null` выключает: выданные сотрудниками авторизации отзываются, страница в витрине удаляется.","name":"oauth-client","hasDynamicHelp":false,"multiple":false,"type":"option"},"promo":{"description":"Страница бота в витрине. Доступна, только когда у бота включена авторизация.","name":"promo","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"bots:update","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"bots:write","apiMethod":"PUT","apiPath":"/bots/{id}","defaultColumns":["id","name","created_at","nickname","avatar_url"],"isESM":true,"relativePath":["dist","commands","bots","update.js"]},"bots:update-token":{"aliases":[],"args":{"id":{"description":"Идентификатор бота (pachca bots list)","name":"id","required":true},"token_id":{"description":"Идентификатор токена","name":"token_id","required":true}},"description":"Изменение токена бота","flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"name":{"description":"Новое имя токена (макс. 255 символов)","name":"name","hasDynamicHelp":false,"multiple":false,"type":"option"},"scopes":{"description":"Новые права токена. Список заменяется целиком и действует сразу, перевыпускать токен не нужно.","name":"scopes","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"bots:update-token","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"bots:write","apiMethod":"PUT","apiPath":"/bots/{id}/tokens/{token_id}","defaultColumns":["id","name","created_at","token","user_id"],"isESM":true,"relativePath":["dist","commands","bots","update-token.js"]},"bots:update-webhook":{"aliases":[],"args":{},"description":"Саморегистрация вебхука бота","examples":["Обновить Webhook URL бота — Или: бот сам обновляет свой webhook своим же токеном — без `id` и без участия администратора (нужен скоуп `bot_self:webhook:write`):\n $ pachca bots update-webhook"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"outgoing-url":{"description":"URL исходящего вебхука. Пустая строка отключает вебхук.","name":"outgoing-url","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"bots:update-webhook","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"bot_self:webhook:write","apiMethod":"PUT","apiPath":"/bot/webhook","defaultColumns":["id","webhook"],"requiredFlags":["outgoing-url"],"isESM":true,"relativePath":["dist","commands","bots","update-webhook.js"]},"changelog":{"aliases":[],"args":{},"description":"История изменений CLI","examples":["<%= config.bin %> changelog","<%= config.bin %> changelog -o json"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"changelog","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"isESM":true,"relativePath":["dist","commands","changelog.js"]},"chats:archive":{"aliases":[],"args":{"id":{"description":"Идентификатор чата (pachca chats list)","name":"id","required":true}},"description":"Архивация чата","examples":["Архивация и управление чатом — Архивировать чат:\n $ pachca chats archive","Найти и заархивировать неактивные чаты — Для каждого чата: архивируй:\n $ pachca chats archive"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"chats:archive","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"chats:archive","apiMethod":"PUT","apiPath":"/chats/{id}/archive","isESM":true,"relativePath":["dist","commands","chats","archive.js"]},"chats:create":{"aliases":[],"args":{},"description":"Новый чат","examples":["Создать канал и пригласить участников — Создай канал с участниками:\n $ pachca chats create","Создать проектную беседу из шаблона — Создай беседу с участниками из тега:\n $ pachca chats create"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"name":{"description":"Название (макс. 255 символов)","name":"name","hasDynamicHelp":false,"multiple":false,"type":"option"},"member-ids":{"description":"Массив идентификаторов пользователей, которые станут участниками","name":"member-ids","hasDynamicHelp":false,"multiple":false,"type":"option"},"group-tag-ids":{"description":"Массив идентификаторов тегов, которые станут участниками","name":"group-tag-ids","hasDynamicHelp":false,"multiple":false,"type":"option"},"channel":{"description":"Является каналом","name":"channel","allowNo":true,"type":"boolean"},"public":{"description":"Открытый доступ","name":"public","allowNo":true,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"chats:create","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"chats:create","apiMethod":"POST","apiPath":"/chats","defaultColumns":["id","name","created_at","owner_id","channel"],"requiredFlags":["name"],"isESM":true,"relativePath":["dist","commands","chats","create.js"]},"chats:download-export":{"aliases":[],"args":{"id":{"description":"Идентификатор экспорта (pachca chats list)","name":"id","required":true}},"description":"Скачать архив экспорта","examples":["Экспорт истории чата — Скачай файл экспорта:\n $ pachca chats download-export"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"save":{"description":"Путь для сохранения файла","name":"save","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":["common:get-exports"],"id":"chats:download-export","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"chat_exports:read","plan":"corporation","apiMethod":"GET","apiPath":"/chats/exports/{id}","isESM":true,"relativePath":["dist","commands","chats","download-export.js"]},"chats:get":{"aliases":[],"args":{"id":{"description":"Идентификатор чата (pachca chats list)","name":"id","required":true}},"description":"Информация о чате","flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"chats:get","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"chats:read","apiMethod":"GET","apiPath":"/chats/{id}","defaultColumns":["id","name","created_at","owner_id","channel"],"isESM":true,"relativePath":["dist","commands","chats","get.js"]},"chats:list":{"aliases":[],"args":{},"description":"Список чатов","examples":["Найти активные чаты за период — Получи чаты с активностью после указанной даты:\n $ pachca chats list","Найти и заархивировать неактивные чаты — Получи чаты без активности с нужной даты:\n $ pachca chats list","Выгрузить все чаты пространства, включая закрытые — Если метод ответил `403` — у токена нет скоупа `company_chats:read`, либо владелец токена не владелец пространства, либо у пространства нет тарифа «Корпорация». Тогда возьми открытые чаты обычным списком:\n $ pachca chats list"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"sort":{"description":"Поле сортировки","name":"sort","default":"id","hasDynamicHelp":false,"multiple":false,"options":["id","last_message_at"],"type":"option"},"order":{"description":"Направление сортировки","name":"order","default":"desc","hasDynamicHelp":false,"multiple":false,"options":["asc","desc"],"type":"option"},"availability":{"description":"Параметр, который отвечает за доступность и выборку чатов для пользователя","name":"availability","default":"is_member","hasDynamicHelp":false,"multiple":false,"options":["is_member","public"],"type":"option"},"archived":{"description":"Добавляет к выдаче архивные чаты. По умолчанию возвращаются только активные. Работает при любом значении `availability`.","name":"archived","allowNo":true,"type":"boolean"},"last-message-at-after":{"description":"Фильтрация по времени создания последнего сообщения: вернутся чаты, где оно позже указанного. Значение в ISO-8601, смещение вида `+03:00` учитывается, время без смещения считается UTC.","name":"last-message-at-after","hasDynamicHelp":false,"multiple":false,"type":"option"},"last-message-at-before":{"description":"Фильтрация по времени создания последнего сообщения: вернутся чаты, где оно раньше указанного. Значение в ISO-8601, смещение вида `+03:00` учитывается, время без смещения считается UTC.","name":"last-message-at-before","hasDynamicHelp":false,"multiple":false,"type":"option"},"personal":{"description":"Фильтрация по личным и групповым чатам. Если параметр не указан, возвращаются любые чаты.","name":"personal","allowNo":true,"type":"boolean"},"limit":{"description":"Количество результатов на страницу","name":"limit","hasDynamicHelp":false,"multiple":false,"type":"option"},"cursor":{"description":"Курсор для следующей страницы","name":"cursor","hasDynamicHelp":false,"multiple":false,"type":"option"},"all":{"description":"Загрузить все страницы автоматически","name":"all","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"chats:list","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"chats:read","apiMethod":"GET","apiPath":"/chats","defaultColumns":["id","name","created_at","owner_id","channel"],"isESM":true,"relativePath":["dist","commands","chats","list.js"]},"chats:list-company":{"aliases":[],"args":{},"description":"Список чатов пространства","examples":["Выгрузить все чаты пространства, включая закрытые — Получи беседы и каналы всего пространства, включая закрытые, где владелец токена не состоит:\n $ pachca chats list-company"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"activity":{"description":"Состояние чатов. Если параметр не указан, возвращаются и активные, и архивные чаты.","name":"activity","hasDynamicHelp":false,"multiple":false,"options":["active","archived"],"type":"option"},"limit":{"description":"Количество результатов на страницу","name":"limit","hasDynamicHelp":false,"multiple":false,"type":"option"},"cursor":{"description":"Курсор для следующей страницы","name":"cursor","hasDynamicHelp":false,"multiple":false,"type":"option"},"all":{"description":"Загрузить все страницы автоматически","name":"all","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"chats:list-company","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"company_chats:read","plan":"corporation","apiMethod":"GET","apiPath":"/company/chats","defaultColumns":["id","name","created_at","owner_id","channel"],"isESM":true,"relativePath":["dist","commands","chats","list-company.js"]},"chats:mark-unread":{"aliases":[],"args":{"id":{"description":"Идентификатор чата или треда (pachca chats list)","name":"id","required":true}},"description":"Отметка чата непрочитанным","flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"message-id":{"description":"Идентификатор сообщения, с которого чат становится непрочитанным: оно и все сообщения после него. Если не передать, непрочитанным становится последнее сообщение. (pachca messages list)","name":"message-id","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"chats:mark-unread","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"chats:mark_unread","apiMethod":"PUT","apiPath":"/chats/{id}/unread","isESM":true,"relativePath":["dist","commands","chats","mark-unread.js"]},"chats:request-export":{"aliases":[],"args":{},"description":"Экспорт сообщений","examples":["Экспорт истории чата — Запроси экспорт:\n $ pachca chats request-export"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"start-at":{"description":"Дата начала для экспорта в формате YYYY-MM-DD. Если прислать дату со временем, время молча отбрасывается — экспорт всегда идёт по календарным дням.","name":"start-at","hasDynamicHelp":false,"multiple":false,"type":"option"},"end-at":{"description":"Дата окончания для экспорта в формате YYYY-MM-DD, включительно. Если прислать дату со временем, время молча отбрасывается.","name":"end-at","hasDynamicHelp":false,"multiple":false,"type":"option"},"webhook-url":{"description":"Адрес, на который придёт вебхук с номером готовой выгрузки. Без него узнать номер неоткуда: заказавший получит письмо и уведомление, а вызывающая программа — ничего.","name":"webhook-url","hasDynamicHelp":false,"multiple":false,"type":"option"},"chat-ids":{"description":"Массив идентификаторов чатов. Указывается, если нужно получить сообщения только некоторых чатов.","name":"chat-ids","hasDynamicHelp":false,"multiple":false,"type":"option"},"skip-chats-file":{"description":"Пропуск формирования файла со списком чатов (chats.json)","name":"skip-chats-file","allowNo":true,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":["common:request-export"],"id":"chats:request-export","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"chat_exports:write","plan":"corporation","apiMethod":"POST","apiPath":"/chats/exports","requiredFlags":["start-at","end-at"],"isESM":true,"relativePath":["dist","commands","chats","request-export.js"]},"chats:unarchive":{"aliases":[],"args":{"id":{"description":"Идентификатор чата (pachca chats list)","name":"id","required":true}},"description":"Разархивация чата","examples":["Архивация и управление чатом — Разархивировать чат:\n $ pachca chats unarchive"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"chats:unarchive","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"chats:archive","apiMethod":"PUT","apiPath":"/chats/{id}/unarchive","isESM":true,"relativePath":["dist","commands","chats","unarchive.js"]},"chats:update":{"aliases":[],"args":{"id":{"description":"Идентификатор чата (pachca chats list)","name":"id","required":true}},"description":"Редактирование чата","examples":["Переименовать или обновить чат — Обнови чат:\n $ pachca chats update"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"name":{"description":"Название (макс. 255 символов)","name":"name","hasDynamicHelp":false,"multiple":false,"type":"option"},"public":{"description":"Открытый доступ","name":"public","allowNo":true,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"chats:update","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"chats:update","apiMethod":"PUT","apiPath":"/chats/{id}","defaultColumns":["id","name","created_at","owner_id","channel"],"isESM":true,"relativePath":["dist","commands","chats","update.js"]},"commands":{"aliases":[],"args":{},"description":"Список всех команд","examples":["<%= config.bin %> commands","<%= config.bin %> commands --available","<%= config.bin %> commands --available -o json"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"available":{"description":"Показать только команды, доступные текущему токену","name":"available","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"commands","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"isESM":true,"relativePath":["dist","commands","commands.js"]},"config:get":{"aliases":[],"args":{"key":{"description":"Ключ настройки","name":"key","required":true}},"description":"Получение значения конфигурации","examples":["<%= config.bin %> config get defaults.output"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"config:get","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"isESM":true,"relativePath":["dist","commands","config","get.js"]},"config:list":{"aliases":[],"args":{},"description":"Список всех настроек","examples":["<%= config.bin %> config list","<%= config.bin %> config list -o json"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"config:list","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"isESM":true,"relativePath":["dist","commands","config","list.js"]},"config:set":{"aliases":[],"args":{"key":{"description":"Ключ настройки","name":"key","required":true},"value":{"description":"Значение настройки","name":"value","required":true}},"description":"Установка значения конфигурации","examples":["<%= config.bin %> config set defaults.output json","<%= config.bin %> config set defaults.timeout 60"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"config:set","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"isESM":true,"relativePath":["dist","commands","config","set.js"]},"custom-properties:list":{"aliases":[],"args":{},"description":"Список дополнительных полей","examples":["Получить кастомные поля профиля — Получи список дополнительных полей для сотрудников:\n $ pachca custom-properties list"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"entity-type":{"description":"Тип сущности","name":"entity-type","hasDynamicHelp":false,"multiple":false,"options":["User","Task"],"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":["common:custom-properties"],"id":"custom-properties:list","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"custom_properties:read","apiMethod":"GET","apiPath":"/custom_properties","defaultColumns":["id","name","data_type"],"requiredFlags":["entity-type"],"isESM":true,"relativePath":["dist","commands","custom-properties","list.js"]},"doctor":{"aliases":[],"args":{},"description":"Диагностика окружения: Node.js, сеть, токен, конфигурация","examples":["<%= config.bin %> doctor","<%= config.bin %> doctor -o json"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"doctor","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"isESM":true,"relativePath":["dist","commands","doctor.js"]},"drafts:create":{"aliases":[],"args":{},"description":"Новый черновик","examples":["Отправить сообщение позже или по расписанию — Создай отложенное сообщение: `schedule.start_date` — когда отправить, `schedule.repetition.interval` — как повторять (`once`, если один раз):\n $ pachca drafts create"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"entity-type":{"description":"Куда пишется черновик: в беседу или канал, в тред либо в личную переписку с сотрудником","name":"entity-type","hasDynamicHelp":false,"multiple":false,"type":"option"},"entity-id":{"description":"Идентификатор того, что названо в `entity_type`: беседы или канала, треда либо сотрудника (pachca chats list | pachca users list)","name":"entity-id","hasDynamicHelp":false,"multiple":false,"type":"option"},"content":{"description":"Текст черновика. Можно не передавать, если есть вложения, но пустым черновик быть не может.","name":"content","hasDynamicHelp":false,"multiple":false,"type":"option"},"parent-message-id":{"description":"Идентификатор сообщения, ответом на которое уйдёт черновик. Сообщение должно быть в том же чате.","name":"parent-message-id","hasDynamicHelp":false,"multiple":false,"type":"option"},"files":{"description":"Прикрепляемые файлы, не больше десяти","name":"files","hasDynamicHelp":false,"multiple":false,"type":"option"},"schedule":{"description":"Расписание отправки. С ним создаётся отложенное сообщение, без него — обычный черновик.","name":"schedule","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"drafts:create","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"drafts:write","apiMethod":"POST","apiPath":"/drafts","defaultColumns":["id","content","created_at","entity_type","entity_id"],"requiredFlags":["entity-type","entity-id"],"isESM":true,"relativePath":["dist","commands","drafts","create.js"]},"drafts:delete":{"aliases":[],"args":{"id":{"description":"Идентификатор черновика","name":"id","required":true}},"description":"Удаление черновика","examples":["Отправить сообщение позже или по расписанию — Чтобы отменить отправку — удали отложенное сообщение:\n $ pachca drafts delete"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"force":{"description":"Пропустить подтверждение","name":"force","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"drafts:delete","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"drafts:write","apiMethod":"DELETE","apiPath":"/drafts/{id}","isESM":true,"relativePath":["dist","commands","drafts","delete.js"]},"drafts:get":{"aliases":[],"args":{"id":{"description":"Идентификатор черновика","name":"id","required":true}},"description":"Информация о черновике","flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"drafts:get","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"drafts:read","apiMethod":"GET","apiPath":"/drafts/{id}","defaultColumns":["id","content","created_at","entity_type","entity_id"],"isESM":true,"relativePath":["dist","commands","drafts","get.js"]},"drafts:list":{"aliases":[],"args":{},"description":"Список черновиков","flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"type":{"description":"Что возвращать: `regular` — обычные черновики, `scheduled` — отложенные сообщения, `all` — и те и другие","name":"type","default":"regular","hasDynamicHelp":false,"multiple":false,"options":["regular","scheduled","all"],"type":"option"},"entity-type":{"description":"Тип чата для фильтра по одному чату. Указывается вместе с `entity_id`: если прислать только один из двух, ответ будет `422`.","name":"entity-type","hasDynamicHelp":false,"multiple":false,"options":["discussion","thread","user"],"type":"option"},"entity-id":{"description":"Идентификатор того, что названо в `entity_type`. Указывается вместе с ним.","name":"entity-id","hasDynamicHelp":false,"multiple":false,"type":"option"},"limit":{"description":"Количество результатов на страницу","name":"limit","hasDynamicHelp":false,"multiple":false,"type":"option"},"cursor":{"description":"Курсор для следующей страницы","name":"cursor","hasDynamicHelp":false,"multiple":false,"type":"option"},"all":{"description":"Загрузить все страницы автоматически","name":"all","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"drafts:list","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"drafts:read","apiMethod":"GET","apiPath":"/drafts","defaultColumns":["id","content","created_at","entity_type","entity_id"],"isESM":true,"relativePath":["dist","commands","drafts","list.js"]},"drafts:update":{"aliases":[],"args":{"id":{"description":"Идентификатор черновика","name":"id","required":true}},"description":"Редактирование черновика","flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"content":{"description":"Текст черновика","name":"content","hasDynamicHelp":false,"multiple":false,"type":"option"},"parent-message-id":{"description":"Идентификатор сообщения, ответом на которое уйдёт черновик. `null` снимает ответ.","name":"parent-message-id","hasDynamicHelp":false,"multiple":false,"type":"option"},"files":{"description":"Прикрепляемые файлы, не больше десяти. Переданный массив заменяет прежний состав: пустой снимает все вложения, а чтобы сохранить уже прикреплённый файл, передайте его с `id`. Без этого поля вложения остаются как были.","name":"files","hasDynamicHelp":false,"multiple":false,"type":"option"},"schedule":{"description":"Расписание отправки. У обычного черновика оно превращает его в отложенное сообщение. У отложенного расписание можно изменить, но не снять: `null` в ответ даст `422` с кодом `draft_type_change_forbidden`.","name":"schedule","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"drafts:update","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"drafts:write","apiMethod":"PUT","apiPath":"/drafts/{id}","defaultColumns":["id","content","created_at","entity_type","entity_id"],"isESM":true,"relativePath":["dist","commands","drafts","update.js"]},"files:direct-url":{"aliases":[],"args":{},"description":"Загрузка файла","flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"direct-url":{"description":"URL для отправки запроса (получается из ответа POST /uploads)","name":"direct-url","required":true,"hasDynamicHelp":false,"multiple":false,"type":"option"},"content-disposition":{"description":"Параметр Content-Disposition, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)","name":"content-disposition","hasDynamicHelp":false,"multiple":false,"type":"option"},"acl":{"description":"Параметр acl, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)","name":"acl","hasDynamicHelp":false,"multiple":false,"type":"option"},"policy":{"description":"Параметр policy, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)","name":"policy","hasDynamicHelp":false,"multiple":false,"type":"option"},"x-amz-credential":{"description":"Параметр x-amz-credential, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)","name":"x-amz-credential","hasDynamicHelp":false,"multiple":false,"type":"option"},"x-amz-algorithm":{"description":"Параметр x-amz-algorithm, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)","name":"x-amz-algorithm","hasDynamicHelp":false,"multiple":false,"type":"option"},"x-amz-date":{"description":"Параметр x-amz-date, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)","name":"x-amz-date","hasDynamicHelp":false,"multiple":false,"type":"option"},"x-amz-signature":{"description":"Параметр x-amz-signature, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)","name":"x-amz-signature","hasDynamicHelp":false,"multiple":false,"type":"option"},"key":{"description":"Параметр key, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)","name":"key","hasDynamicHelp":false,"multiple":false,"type":"option"},"file":{"description":"Файл для загрузки","name":"file","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":["common:direct-url"],"id":"files:direct-url","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"apiMethod":"POST","apiPath":"/direct_url","requiredFlags":["content-disposition","acl","policy","x-amz-credential","x-amz-algorithm","x-amz-date","x-amz-signature","key"],"isESM":true,"relativePath":["dist","commands","files","direct-url.js"]},"files:get":{"aliases":[],"args":{"id":{"description":"Идентификатор файла из поля `id` вложения","name":"id","required":true}},"description":"Скачивание файла","flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"target":{"description":"Что отдать вместо исходного файла: `pdf_preview` — документ, переведённый в PDF, `pdf_first_page` — первая страница картинкой, `thumb` — уменьшенная копия изображения, `image` — изображение как есть. Без параметра приходит исходный файл. Вариант, которого у этого файла нет, приводит к `400`.","name":"target","hasDynamicHelp":false,"multiple":false,"options":["pdf_preview","pdf_first_page","thumb","image"],"type":"option"},"save":{"description":"Путь для сохранения файла","name":"save","required":true,"hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"files:get","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"files:read","apiMethod":"GET","apiPath":"/files/{id}","isESM":true,"relativePath":["dist","commands","files","get.js"]},"files:uploads":{"aliases":[],"args":{},"description":"Получение подписи, ключа и других параметров","examples":["Изменить вложения сообщения — Если нужно добавить новый файл — загрузи его:\n $ pachca files uploads"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":["common:uploads"],"id":"files:uploads","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"uploads:write","apiMethod":"POST","apiPath":"/uploads","defaultColumns":["Content-Disposition","acl","policy","x-amz-credential","x-amz-algorithm"],"isESM":true,"relativePath":["dist","commands","files","uploads.js"]},"group-tags:create":{"aliases":[],"args":{},"description":"Новый тег","examples":["Массовое создание сотрудников с тегами — Создай тег (если нужен):\n $ pachca group-tags create"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"name":{"description":"Название тега (макс. 255 символов)","name":"name","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"group-tags:create","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"group_tags:write","apiMethod":"POST","apiPath":"/group_tags","defaultColumns":["id","name","users_count"],"requiredFlags":["name"],"isESM":true,"relativePath":["dist","commands","group-tags","create.js"]},"group-tags:delete":{"aliases":[],"args":{"id":{"description":"Идентификатор тега","name":"id","required":true}},"description":"Удаление тега","flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"force":{"description":"Пропустить подтверждение","name":"force","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"group-tags:delete","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"group_tags:write","apiMethod":"DELETE","apiPath":"/group_tags/{id}","isESM":true,"relativePath":["dist","commands","group-tags","delete.js"]},"group-tags:get":{"aliases":[],"args":{"id":{"description":"Идентификатор тега","name":"id","required":true}},"description":"Информация о теге","flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"group-tags:get","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"group_tags:read","apiMethod":"GET","apiPath":"/group_tags/{id}","defaultColumns":["id","name","users_count"],"isESM":true,"relativePath":["dist","commands","group-tags","get.js"]},"group-tags:list":{"aliases":[],"args":{},"description":"Список тегов","examples":["Получить всех сотрудников тега/департамента — Найди тег по названию, возьми `id`:\n $ pachca group-tags list"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"names":{"description":"Массив названий тегов, по которым вы хотите отфильтровать список (через запятую)","name":"names","hasDynamicHelp":false,"multiple":false,"type":"option"},"limit":{"description":"Количество результатов на страницу","name":"limit","hasDynamicHelp":false,"multiple":false,"type":"option"},"cursor":{"description":"Курсор для следующей страницы","name":"cursor","hasDynamicHelp":false,"multiple":false,"type":"option"},"all":{"description":"Загрузить все страницы автоматически","name":"all","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"group-tags:list","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"group_tags:read","apiMethod":"GET","apiPath":"/group_tags","defaultColumns":["id","name","users_count"],"isESM":true,"relativePath":["dist","commands","group-tags","list.js"]},"group-tags:list-users":{"aliases":[],"args":{"id":{"description":"Идентификатор тега","name":"id","required":true}},"description":"Список сотрудников тега","examples":["Получить всех сотрудников тега/департамента — Получи всех участников тега:\n $ pachca group-tags list-users"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"limit":{"description":"Количество результатов на страницу","name":"limit","hasDynamicHelp":false,"multiple":false,"type":"option"},"cursor":{"description":"Курсор для следующей страницы","name":"cursor","hasDynamicHelp":false,"multiple":false,"type":"option"},"all":{"description":"Загрузить все страницы автоматически","name":"all","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"group-tags:list-users","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"group_tags:read","apiMethod":"GET","apiPath":"/group_tags/{id}/users","defaultColumns":["id","title","first_name","last_name","email"],"isESM":true,"relativePath":["dist","commands","group-tags","list-users.js"]},"group-tags:update":{"aliases":[],"args":{"id":{"description":"Идентификатор тега","name":"id","required":true}},"description":"Редактирование тега","flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"name":{"description":"Название тега (макс. 255 символов)","name":"name","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"group-tags:update","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"group_tags:write","apiMethod":"PUT","apiPath":"/group_tags/{id}","defaultColumns":["id","name","users_count"],"requiredFlags":["name"],"isESM":true,"relativePath":["dist","commands","group-tags","update.js"]},"guide":{"aliases":[],"args":{"query":{"description":"Поисковый запрос","name":"query","required":false}},"description":"Поиск сценариев использования","examples":["<%= config.bin %> guide \"отправить файл\"","<%= config.bin %> guide \"создать бота\"","<%= config.bin %> guide"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"guide","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"isESM":true,"relativePath":["dist","commands","guide.js"]},"introspect":{"aliases":[],"args":{"command":{"description":"Имя команды (например, \"messages create\")","name":"command","required":false}},"description":"Метаданные команды в машиночитаемом формате","examples":["<%= config.bin %> introspect messages create","<%= config.bin %> introspect"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"introspect","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":false,"enableJsonFlag":false,"isESM":true,"relativePath":["dist","commands","introspect.js"]},"members:add":{"aliases":[],"args":{"id":{"description":"Идентификатор чата (беседа, канал или чат треда)","name":"id","required":true}},"description":"Добавление пользователей","examples":["Подписаться на тред сообщения — Добавь бота в участники чата треда:\n $ pachca members add","Создать канал и пригласить участников — Или добавь участников позже:\n $ pachca members add","Онбординг нового сотрудника — Добавь в нужные каналы:\n $ pachca members add"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"member-ids":{"description":"Массив идентификаторов пользователей, которые станут участниками","name":"member-ids","hasDynamicHelp":false,"multiple":false,"type":"option"},"silent":{"description":"Не создавать в чате системное сообщение о добавлении участника","name":"silent","allowNo":true,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"members:add","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"chat_members:write","apiMethod":"POST","apiPath":"/chats/{id}/members","requiredFlags":["member-ids"],"isESM":true,"relativePath":["dist","commands","members","add.js"]},"members:add-group-tags":{"aliases":[],"args":{"id":{"description":"Идентификатор чата","name":"id","required":true}},"description":"Добавление тегов","flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"group-tag-ids":{"description":"Массив идентификаторов тегов, которые станут участниками","name":"group-tag-ids","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"members:add-group-tags","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"chat_members:write","apiMethod":"POST","apiPath":"/chats/{id}/group_tags","requiredFlags":["group-tag-ids"],"isESM":true,"relativePath":["dist","commands","members","add-group-tags.js"]},"members:leave":{"aliases":[],"args":{"id":{"description":"Идентификатор чата","name":"id","required":true}},"description":"Выход из чата","examples":["Архивация и управление чатом — Покинуть чат:\n $ pachca members leave"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"force":{"description":"Пропустить подтверждение","name":"force","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"members:leave","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"chats:leave","apiMethod":"DELETE","apiPath":"/chats/{id}/leave","isESM":true,"relativePath":["dist","commands","members","leave.js"]},"members:list":{"aliases":[],"args":{"id":{"description":"Идентификатор чата","name":"id","required":true}},"description":"Список участников чата","examples":["Упомянуть пользователя — Ищи среди участников целевого чата:\n $ pachca members list","Упомянуть пользователя — Если пишешь в тред: также проверь участников родительского чата:\n $ pachca members list"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"role":{"description":"Роль в чате","name":"role","default":"all","hasDynamicHelp":false,"multiple":false,"options":["all","owner","admin","editor","member"],"type":"option"},"limit":{"description":"Количество результатов на страницу","name":"limit","hasDynamicHelp":false,"multiple":false,"type":"option"},"cursor":{"description":"Курсор для следующей страницы","name":"cursor","hasDynamicHelp":false,"multiple":false,"type":"option"},"all":{"description":"Загрузить все страницы автоматически","name":"all","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"members:list","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"chat_members:read","apiMethod":"GET","apiPath":"/chats/{id}/members","defaultColumns":["id","title","first_name","last_name","email"],"isESM":true,"relativePath":["dist","commands","members","list.js"]},"members:remove":{"aliases":[],"args":{"id":{"description":"Идентификатор чата","name":"id","required":true},"user_id":{"description":"Идентификатор пользователя (pachca users list)","name":"user_id","required":true}},"description":"Исключение пользователя","examples":["Архивация и управление чатом — Удалить участника:\n $ pachca members remove"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"force":{"description":"Пропустить подтверждение","name":"force","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"members:remove","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"chat_members:write","apiMethod":"DELETE","apiPath":"/chats/{id}/members/{user_id}","isESM":true,"relativePath":["dist","commands","members","remove.js"]},"members:remove-group-tag":{"aliases":[],"args":{"id":{"description":"Идентификатор чата","name":"id","required":true},"tag_id":{"description":"Идентификатор тега (pachca tags list)","name":"tag_id","required":true}},"description":"Исключение тега","flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"force":{"description":"Пропустить подтверждение","name":"force","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"members:remove-group-tag","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"chat_members:write","apiMethod":"DELETE","apiPath":"/chats/{id}/group_tags/{tag_id}","isESM":true,"relativePath":["dist","commands","members","remove-group-tag.js"]},"members:update":{"aliases":[],"args":{"id":{"description":"Идентификатор чата","name":"id","required":true},"user_id":{"description":"Идентификатор пользователя (pachca users list)","name":"user_id","required":true}},"description":"Редактирование роли","examples":["Архивация и управление чатом — Изменить роль участника:\n $ pachca members update"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"role":{"description":"Роль","name":"role","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"members:update","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"chat_members:write","apiMethod":"PUT","apiPath":"/chats/{id}/members/{user_id}","requiredFlags":["role"],"isESM":true,"relativePath":["dist","commands","members","update.js"]},"messages:create":{"aliases":[],"args":{},"description":"Новое сообщение","examples":["Найти чат по имени и отправить сообщение — Отправь сообщение в найденный чат:\n $ pachca messages create","Отправить сообщение в канал или беседу (если chat_id известен) — Отправь сообщение в чат:\n $ pachca messages create","Отправить личное сообщение пользователю — Отправь личное сообщение:\n $ pachca messages create"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"entity-type":{"description":"Тип сущности. Регистр значения не учитывается. Значение вне списка возвращает `400` с кодом `invalid`.","name":"entity-type","hasDynamicHelp":false,"multiple":false,"type":"option"},"entity-id":{"description":"Идентификатор того, что названо в `entity_type`: беседы или канала, треда либо сотрудника. (pachca chats list | pachca users list)","name":"entity-id","hasDynamicHelp":false,"multiple":false,"type":"option"},"content":{"description":"Текст сообщения. Поддерживает упоминания: `@nickname` или `<@user_id>` (будет автоматически преобразовано в `@nickname`). У мульти-гостя `<@user_id>` недоступного ему сотрудника остаётся в тексте как есть.","name":"content","hasDynamicHelp":false,"multiple":false,"type":"option"},"files":{"description":"Прикрепляемые файлы","name":"files","hasDynamicHelp":false,"multiple":false,"type":"option"},"buttons":{"description":"Массив строк, каждая из которых представлена массивом кнопок. Максимум 100 кнопок у сообщения, до 8 кнопок в строке.","name":"buttons","hasDynamicHelp":false,"multiple":false,"type":"option"},"parent-message-id":{"description":"Идентификатор сообщения, на которое вы отвечаете с цитатой. Ответить можно на сообщение в любом чате, в том числе в треде: ответ отправляют в тот же чат или тред, где лежит это сообщение, иначе запрос вернёт ошибку `422`. Чтобы написать в тред под сообщением, укажите `entity_type: \"thread\"` и идентификатор треда в `entity_id`.","name":"parent-message-id","hasDynamicHelp":false,"multiple":false,"type":"option"},"display-avatar-url":{"description":"Ссылка на специальную аватарку отправителя для этого сообщения. Использование этого поля возможно только с access_token бота. (макс. 255 символов)","name":"display-avatar-url","hasDynamicHelp":false,"multiple":false,"type":"option"},"display-name":{"description":"Полное специальное имя отправителя для этого сообщения. Использование этого поля возможно только с access_token бота. (макс. 255 символов)","name":"display-name","hasDynamicHelp":false,"multiple":false,"type":"option"},"skip-invite-mentions":{"description":"Пропуск добавления упоминаемых пользователей в тред. Работает только при отправке сообщения в тред.","name":"skip-invite-mentions","allowNo":true,"type":"boolean"},"link-preview":{"description":"Отображение предпросмотра первой найденной ссылки в тексте сообщения","name":"link-preview","allowNo":true,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"messages:create","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"messages:create","apiMethod":"POST","apiPath":"/messages","defaultColumns":["id","content","created_at","entity_type","entity_id"],"requiredFlags":["entity-id","content"],"isESM":true,"relativePath":["dist","commands","messages","create.js"]},"messages:delete":{"aliases":[],"args":{"id":{"description":"Идентификатор сообщения (pachca messages list)","name":"id","required":true}},"description":"Удаление сообщения","examples":["Удалить сообщение — Удали сообщение:\n $ pachca messages delete"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"force":{"description":"Пропустить подтверждение","name":"force","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"messages:delete","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"messages:delete","apiMethod":"DELETE","apiPath":"/messages/{id}","isESM":true,"relativePath":["dist","commands","messages","delete.js"]},"messages:get":{"aliases":[],"args":{"id":{"description":"Идентификатор сообщения (pachca messages list)","name":"id","required":true}},"description":"Информация о сообщении","examples":["Получить вложения из сообщения — Получи сообщение — в `files[]` каждый объект содержит `url`, `name`, `file_type`, `size`:\n $ pachca messages get","Изменить вложения сообщения — Получи текущие вложения из `files[]`:\n $ pachca messages get","Обработать входящий вебхук-событие — Для полной информации запроси сообщение — особенно для вложений (`files[]`):\n $ pachca messages get"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"messages:get","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"messages:read","apiMethod":"GET","apiPath":"/messages/{id}","defaultColumns":["id","content","created_at","entity_type","entity_id"],"isESM":true,"relativePath":["dist","commands","messages","get.js"]},"messages:list":{"aliases":[],"args":{"chat_id":{"description":"Идентификатор чата (беседа, канал, диалог или чат треда)","name":"chat_id","required":false}},"description":"Список сообщений чата","examples":["Получить историю сообщений чата — Получи сообщения чата с пагинацией:\n $ pachca messages list","Получить список активных тредов за период — Для каждого треда возьми `chat_id` и подтяни сообщения:\n $ pachca messages list"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"chat-id":{"description":"Идентификатор чата (беседа, канал, диалог или чат треда)","name":"chat-id","hasDynamicHelp":false,"multiple":false,"type":"option"},"sort":{"description":"Поле сортировки","name":"sort","default":"id","hasDynamicHelp":false,"multiple":false,"options":["id"],"type":"option"},"order":{"description":"Направление сортировки","name":"order","default":"desc","hasDynamicHelp":false,"multiple":false,"options":["asc","desc"],"type":"option"},"limit":{"description":"Количество результатов на страницу","name":"limit","hasDynamicHelp":false,"multiple":false,"type":"option"},"cursor":{"description":"Курсор для следующей страницы","name":"cursor","hasDynamicHelp":false,"multiple":false,"type":"option"},"all":{"description":"Загрузить все страницы автоматически","name":"all","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"messages:list","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"messages:read","apiMethod":"GET","apiPath":"/messages","defaultColumns":["id","content","created_at","entity_type","entity_id"],"requiredFlags":["chat-id"],"isESM":true,"relativePath":["dist","commands","messages","list.js"]},"messages:pin":{"aliases":[],"args":{"id":{"description":"Идентификатор сообщения (pachca messages list)","name":"id","required":true}},"description":"Закрепление сообщения","examples":["Закрепить/открепить сообщение — Закрепить сообщение:\n $ pachca messages pin"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"messages:pin","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"pins:write","apiMethod":"POST","apiPath":"/messages/{id}/pin","isESM":true,"relativePath":["dist","commands","messages","pin.js"]},"messages:unfurl":{"aliases":[],"args":{"id":{"description":"Идентификатор сообщения (pachca messages list)","name":"id","required":true}},"description":"Unfurl (разворачивание ссылок)","examples":["Разворачивание ссылок (unfurling) — Отправь превью-данные:\n $ pachca messages unfurl"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"link-previews":{"description":"`JSON` карта предпросмотров ссылок, где каждый ключ — `URL`, который был получен в исходящем вебхуке о новом сообщении","name":"link-previews","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":["link-previews:add"],"id":"messages:unfurl","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"link_previews:write","apiMethod":"POST","apiPath":"/messages/{id}/link_previews","requiredFlags":["link-previews"],"isESM":true,"relativePath":["dist","commands","messages","unfurl.js"]},"messages:unpin":{"aliases":[],"args":{"id":{"description":"Идентификатор сообщения (pachca messages list)","name":"id","required":true}},"description":"Открепление сообщения","examples":["Закрепить/открепить сообщение — Открепить сообщение:\n $ pachca messages unpin"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"force":{"description":"Пропустить подтверждение","name":"force","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"messages:unpin","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"pins:write","apiMethod":"DELETE","apiPath":"/messages/{id}/pin","isESM":true,"relativePath":["dist","commands","messages","unpin.js"]},"messages:update":{"aliases":[],"args":{"id":{"description":"Идентификатор сообщения (pachca messages list)","name":"id","required":true}},"description":"Редактирование сообщения","examples":["Отредактировать сообщение — Обнови сообщение:\n $ pachca messages update","Изменить вложения сообщения — Обнови сообщение с новым массивом `files`:\n $ pachca messages update","Обработать нажатие кнопки (callback) — Опционально: обнови исходное сообщение:\n $ pachca messages update"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"content":{"description":"Текст сообщения. Поддерживает упоминания: `@nickname` или `<@user_id>` (будет автоматически преобразовано в `@nickname`). У мульти-гостя `<@user_id>` недоступного ему сотрудника остаётся в тексте как есть.","name":"content","hasDynamicHelp":false,"multiple":false,"type":"option"},"files":{"description":"Прикрепляемые файлы","name":"files","hasDynamicHelp":false,"multiple":false,"type":"option"},"buttons":{"description":"Массив строк, каждая из которых представлена массивом кнопок. Максимум 100 кнопок у сообщения, до 8 кнопок в строке. Для удаления кнопок пришлите пустой массив.","name":"buttons","hasDynamicHelp":false,"multiple":false,"type":"option"},"display-avatar-url":{"description":"Ссылка на специальную аватарку отправителя для этого сообщения. Использование этого поля возможно только с access_token бота.","name":"display-avatar-url","hasDynamicHelp":false,"multiple":false,"type":"option"},"display-name":{"description":"Полное специальное имя отправителя для этого сообщения. Использование этого поля возможно только с access_token бота.","name":"display-name","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"messages:update","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"messages:update","apiMethod":"PUT","apiPath":"/messages/{id}","defaultColumns":["id","content","created_at","entity_type","entity_id"],"isESM":true,"relativePath":["dist","commands","messages","update.js"]},"oauth:token-info":{"aliases":[],"args":{},"description":"Информация о токене","examples":["Проверить свой токен — Получи информацию о токене: скоупы, дату создания, срок жизни:\n $ pachca oauth token-info"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":["profile:get-info"],"id":"oauth:token-info","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"apiMethod":"GET","apiPath":"/oauth/token/info","defaultColumns":["id","name","created_at","token","user_id"],"isESM":true,"relativePath":["dist","commands","oauth","token-info.js"]},"profile:delete-avatar":{"aliases":[],"args":{},"description":"Удаление своего аватара","examples":["Удалить аватар профиля — Удали аватар:\n $ pachca profile delete-avatar"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"force":{"description":"Пропустить подтверждение","name":"force","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"profile:delete-avatar","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"profile_avatar:write","apiMethod":"DELETE","apiPath":"/profile/avatar","isESM":true,"relativePath":["dist","commands","profile","delete-avatar.js"]},"profile:delete-status":{"aliases":[],"args":{},"description":"Удаление своего статуса","examples":["Сбросить статус — Удали статус:\n $ pachca profile delete-status"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"force":{"description":"Пропустить подтверждение","name":"force","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"profile:delete-status","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"profile_status:write","apiMethod":"DELETE","apiPath":"/profile/status","isESM":true,"relativePath":["dist","commands","profile","delete-status.js"]},"profile:get":{"aliases":[],"args":{},"description":"Свой профиль","examples":["Получить свой профиль — Получи информацию о текущем пользователе:\n $ pachca profile get","Получить кастомные поля профиля — Получи профиль — в `custom_properties` содержатся значения полей:\n $ pachca profile get"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"profile:get","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"profile:read","apiMethod":"GET","apiPath":"/profile","defaultColumns":["id","title","first_name","last_name","email"],"isESM":true,"relativePath":["dist","commands","profile","get.js"]},"profile:get-status":{"aliases":[],"args":{},"description":"Свой статус","flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"profile:get-status","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"profile_status:read","apiMethod":"GET","apiPath":"/profile/status","defaultColumns":["title","emoji","expires_at","is_away"],"isESM":true,"relativePath":["dist","commands","profile","get-status.js"]},"profile:update-avatar":{"aliases":[],"args":{},"description":"Загрузка своего аватара","examples":["Загрузить аватар профиля — Загрузи аватар из файла:\n $ pachca profile update-avatar"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"file":{"description":"Файл изображения для аватара","name":"file","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"profile:update-avatar","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"profile_avatar:write","apiMethod":"PUT","apiPath":"/profile/avatar","defaultColumns":["image_url"],"isESM":true,"relativePath":["dist","commands","profile","update-avatar.js"]},"profile:update-status":{"aliases":[],"args":{},"description":"Новый свой статус","examples":["Установить статус — Установи статус:\n $ pachca profile update-status"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"emoji":{"description":"Emoji символ статуса","name":"emoji","hasDynamicHelp":false,"multiple":false,"type":"option"},"title":{"description":"Текст статуса (макс. 50 символов)","name":"title","hasDynamicHelp":false,"multiple":false,"type":"option"},"expires-at":{"description":"Срок жизни статуса (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Сюда идёт срок, названный словами: «до трёх» это значение поля, а не часть подписи.","name":"expires-at","hasDynamicHelp":false,"multiple":false,"type":"option"},"is-away":{"description":"Режим «Нет на месте»","name":"is-away","allowNo":true,"type":"boolean"},"away-message":{"description":"Текст сообщения при режиме «Нет на месте». Отображается в профиле и при личных сообщениях/упоминаниях. (макс. 1024 символов)","name":"away-message","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"profile:update-status","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"profile_status:write","apiMethod":"PUT","apiPath":"/profile/status","defaultColumns":["title","emoji","expires_at","is_away"],"requiredFlags":["emoji","title"],"isESM":true,"relativePath":["dist","commands","profile","update-status.js"]},"reactions:add":{"aliases":[],"args":{"id":{"description":"Идентификатор сообщения","name":"id","required":true}},"description":"Добавление реакции","examples":["Добавить реакцию на сообщение — Добавь реакцию:\n $ pachca reactions add"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"code":{"description":"Emoji символ реакции. Именно символ: текстовые записи вроде `+1` или `:+1:` отклоняются как неизвестный эмодзи.","name":"code","hasDynamicHelp":false,"multiple":false,"type":"option"},"name":{"description":"Текстовое имя эмодзи (используется для кастомных эмодзи)","name":"name","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"reactions:add","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"reactions:write","apiMethod":"POST","apiPath":"/messages/{id}/reactions","defaultColumns":["name","created_at","user_id","code"],"requiredFlags":["code"],"isESM":true,"relativePath":["dist","commands","reactions","add.js"]},"reactions:list":{"aliases":[],"args":{"id":{"description":"Идентификатор сообщения","name":"id","required":true}},"description":"Список реакций","flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"limit":{"description":"Количество результатов на страницу","name":"limit","hasDynamicHelp":false,"multiple":false,"type":"option"},"cursor":{"description":"Курсор для следующей страницы","name":"cursor","hasDynamicHelp":false,"multiple":false,"type":"option"},"all":{"description":"Загрузить все страницы автоматически","name":"all","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"reactions:list","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"reactions:read","apiMethod":"GET","apiPath":"/messages/{id}/reactions","defaultColumns":["name","created_at","user_id","code"],"isESM":true,"relativePath":["dist","commands","reactions","list.js"]},"reactions:remove":{"aliases":[],"args":{"id":{"description":"Идентификатор сообщения","name":"id","required":true}},"description":"Удаление реакции","examples":["Добавить реакцию на сообщение — Убрать реакцию:\n $ pachca reactions remove"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"code":{"description":"Emoji символ реакции. Именно символ: текстовые записи вроде `+1` или `:+1:` отклоняются как неизвестный эмодзи.","name":"code","hasDynamicHelp":false,"multiple":false,"type":"option"},"name":{"description":"Текстовое имя эмодзи (используется для кастомных эмодзи)","name":"name","hasDynamicHelp":false,"multiple":false,"type":"option"},"force":{"description":"Пропустить подтверждение","name":"force","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"reactions:remove","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"reactions:write","apiMethod":"DELETE","apiPath":"/messages/{id}/reactions","requiredFlags":["code"],"isESM":true,"relativePath":["dist","commands","reactions","remove.js"]},"read-member:list-readers":{"aliases":[],"args":{"id":{"description":"Идентификатор сообщения","name":"id","required":true}},"description":"Список прочитавших сообщение","examples":["Проверить, кто прочитал сообщение — Получи массив `user_id` прочитавших:\n $ pachca read-member list-readers"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"limit":{"description":"Количество результатов на страницу","name":"limit","hasDynamicHelp":false,"multiple":false,"type":"option"},"cursor":{"description":"Курсор для следующей страницы","name":"cursor","hasDynamicHelp":false,"multiple":false,"type":"option"},"all":{"description":"Загрузить все страницы автоматически","name":"all","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"read-member:list-readers","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"messages:read","apiMethod":"GET","apiPath":"/messages/{id}/read_member_ids","isESM":true,"relativePath":["dist","commands","read-member","list-readers.js"]},"search:list-chats":{"aliases":[],"args":{},"description":"Поиск чатов","examples":["Найти чат по имени и отправить сообщение — Найди чат по названию через поиск:\n $ pachca search list-chats","Отправить сообщение позже или по расписанию — Найди чат, в который нужно написать:\n $ pachca search list-chats","Найти чат по названию — Полнотекстовый поиск по чатам:\n $ pachca search list-chats"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"query":{"description":"Текст поискового запроса","name":"query","hasDynamicHelp":false,"multiple":false,"type":"option"},"order":{"description":"Направление сортировки","name":"order","hasDynamicHelp":false,"multiple":false,"options":["asc","desc"],"type":"option"},"created-from":{"description":"Фильтр по дате создания (от)","name":"created-from","hasDynamicHelp":false,"multiple":false,"type":"option"},"created-to":{"description":"Фильтр по дате создания (до)","name":"created-to","hasDynamicHelp":false,"multiple":false,"type":"option"},"active":{"description":"Фильтр по активности чата","name":"active","allowNo":true,"type":"boolean"},"chat-subtype":{"description":"Фильтр по типу чата","name":"chat-subtype","hasDynamicHelp":false,"multiple":false,"options":["discussion","thread"],"type":"option"},"personal":{"description":"Фильтр по личным чатам","name":"personal","allowNo":true,"type":"boolean"},"limit":{"description":"Количество результатов на страницу","name":"limit","hasDynamicHelp":false,"multiple":false,"type":"option"},"cursor":{"description":"Курсор для следующей страницы","name":"cursor","hasDynamicHelp":false,"multiple":false,"type":"option"},"all":{"description":"Загрузить все страницы автоматически","name":"all","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"search:list-chats","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"search:chats","apiMethod":"GET","apiPath":"/search/chats","defaultColumns":["id","name","created_at","owner_id","channel"],"isESM":true,"relativePath":["dist","commands","search","list-chats.js"]},"search:list-messages":{"aliases":[],"args":{},"description":"Поиск сообщений","examples":["Найти сообщение по тексту — Полнотекстовый поиск по сообщениям:\n $ pachca search list-messages"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"query":{"description":"Текст поискового запроса","name":"query","hasDynamicHelp":false,"multiple":false,"type":"option"},"order":{"description":"Направление сортировки","name":"order","hasDynamicHelp":false,"multiple":false,"options":["asc","desc"],"type":"option"},"sort":{"description":"Сортировка результатов","name":"sort","default":"created_at","hasDynamicHelp":false,"multiple":false,"options":["created_at","relevance"],"type":"option"},"created-from":{"description":"Фильтр по дате создания (от)","name":"created-from","hasDynamicHelp":false,"multiple":false,"type":"option"},"created-to":{"description":"Фильтр по дате создания (до)","name":"created-to","hasDynamicHelp":false,"multiple":false,"type":"option"},"chat-ids":{"description":"Фильтр по ID чатов (через запятую)","name":"chat-ids","hasDynamicHelp":false,"multiple":false,"type":"option"},"user-ids":{"description":"Фильтр по ID авторов сообщений (через запятую)","name":"user-ids","hasDynamicHelp":false,"multiple":false,"type":"option"},"active":{"description":"Фильтр по активности чата","name":"active","allowNo":true,"type":"boolean"},"limit":{"description":"Количество результатов на страницу","name":"limit","hasDynamicHelp":false,"multiple":false,"type":"option"},"cursor":{"description":"Курсор для следующей страницы","name":"cursor","hasDynamicHelp":false,"multiple":false,"type":"option"},"all":{"description":"Загрузить все страницы автоматически","name":"all","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"search:list-messages","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"search:messages","apiMethod":"GET","apiPath":"/search/messages","defaultColumns":["id","content","created_at","entity_type","entity_id"],"isESM":true,"relativePath":["dist","commands","search","list-messages.js"]},"search:list-users":{"aliases":[],"args":{},"description":"Поиск сотрудников","examples":["Отправить личное сообщение пользователю — Определи `user_id` получателя:\n $ pachca search list-users","Упомянуть пользователя — Не нашёл — ищи по всей компании:\n $ pachca search list-users","Найти сотрудника по имени — Полнотекстовый поиск по сотрудникам:\n $ pachca search list-users"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"query":{"description":"Текст поискового запроса","name":"query","hasDynamicHelp":false,"multiple":false,"type":"option"},"sort":{"description":"Сортировка результатов","name":"sort","hasDynamicHelp":false,"multiple":false,"options":["by_score","alphabetical","creation"],"type":"option"},"order":{"description":"Направление сортировки","name":"order","hasDynamicHelp":false,"multiple":false,"options":["asc","desc"],"type":"option"},"created-from":{"description":"Фильтр по дате создания (от)","name":"created-from","hasDynamicHelp":false,"multiple":false,"type":"option"},"created-to":{"description":"Фильтр по дате создания (до)","name":"created-to","hasDynamicHelp":false,"multiple":false,"type":"option"},"company-roles":{"description":"Фильтр по ролям сотрудников (через запятую)","name":"company-roles","hasDynamicHelp":false,"multiple":false,"type":"option"},"limit":{"description":"Количество результатов на страницу","name":"limit","hasDynamicHelp":false,"multiple":false,"type":"option"},"cursor":{"description":"Курсор для следующей страницы","name":"cursor","hasDynamicHelp":false,"multiple":false,"type":"option"},"all":{"description":"Загрузить все страницы автоматически","name":"all","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"search:list-users","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"search:users","apiMethod":"GET","apiPath":"/search/users","defaultColumns":["id","title","first_name","last_name","email"],"isESM":true,"relativePath":["dist","commands","search","list-users.js"]},"security:list":{"aliases":[],"args":{},"description":"Журнал аудита событий","examples":["Получить журнал аудита событий — Получи журнал аудита:\n $ pachca security list","Мониторинг подозрительных входов — Получи события неудачных 2FA за период:\n $ pachca security list","Мониторинг подозрительных входов — Повтори запрос с `--event-key=user_2fa_disabled` — отключение второго фактора у сотрудника:\n $ pachca security list"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"start-time":{"description":"Начальная метка времени, включительно (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Значение, которое не удалось разобрать, фильтр снимает — ответ придёт полным, без ошибки.","name":"start-time","hasDynamicHelp":false,"multiple":false,"type":"option"},"end-time":{"description":"Конечная метка времени, включительно (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Значение, которое не удалось разобрать, фильтр снимает — ответ придёт полным, без ошибки.","name":"end-time","hasDynamicHelp":false,"multiple":false,"type":"option"},"event-key":{"description":"Фильтр по конкретному типу события","name":"event-key","hasDynamicHelp":false,"multiple":false,"options":["user_login","user_logout","user_2fa_fail","user_2fa_success","user_2fa_disabled","user_created","user_deleted","user_role_changed","user_updated","tag_created","tag_deleted","user_added_to_tag","user_removed_from_tag","chat_created","chat_renamed","chat_permission_changed","user_chat_join","user_chat_leave","tag_added_to_chat","tag_removed_from_chat","message_updated","message_deleted","message_created","reaction_created","reaction_deleted","thread_created","access_token_created","access_token_updated","access_token_destroy","kms_encrypt","kms_decrypt","audit_events_accessed","company_chats_accessed","company_bots_accessed","dlp_violation_detected","search_users_api","search_chats_api","search_messages_api","bot_scopes_updated","bot_webhook_settings_updated","bot_token_recreated","bot_deleted","bot_oauth_client_updated","bot_oauth_client_disabled","bot_oauth_client_secret_rotated","bot_token_created","bot_token_updated","bot_token_reissued","oauth_authorization_granted","oauth_authorization_revoked","oauth_device_authorization_approved","oauth_device_authorization_denied","video_call_started","video_call_finished","video_call_recording_ready","exchange_disabled"],"type":"option"},"actor-id":{"description":"Идентификатор пользователя, выполнившего действие","name":"actor-id","hasDynamicHelp":false,"multiple":false,"type":"option"},"actor-type":{"description":"Тип актора","name":"actor-type","hasDynamicHelp":false,"multiple":false,"type":"option"},"entity-id":{"description":"Идентификатор затронутой сущности","name":"entity-id","hasDynamicHelp":false,"multiple":false,"type":"option"},"entity-type":{"description":"Тип сущности","name":"entity-type","hasDynamicHelp":false,"multiple":false,"type":"option"},"limit":{"description":"Количество результатов на страницу","name":"limit","hasDynamicHelp":false,"multiple":false,"type":"option"},"cursor":{"description":"Курсор для следующей страницы","name":"cursor","hasDynamicHelp":false,"multiple":false,"type":"option"},"all":{"description":"Загрузить все страницы автоматически","name":"all","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"security:list","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"audit_events:read","plan":"corporation","apiMethod":"GET","apiPath":"/audit_events","defaultColumns":["id","created_at","event_key","entity_id","entity_type"],"isESM":true,"relativePath":["dist","commands","security","list.js"]},"tasks:create":{"aliases":[],"args":{},"description":"Новое напоминание","examples":["Форма заявки/запроса — При submit: создай задачу или отправь уведомление ответственному:\n $ pachca tasks create","Создать напоминание — Создай задачу:\n $ pachca tasks create","Создать серию напоминаний — Для каждой даты: создай задачу:\n $ pachca tasks create"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"kind":{"description":"Тип","name":"kind","hasDynamicHelp":false,"multiple":false,"type":"option"},"content":{"description":"Описание (по умолчанию — название типа)","name":"content","hasDynamicHelp":false,"multiple":false,"type":"option"},"due-at":{"description":"Срок выполнения напоминания (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Секунды отбрасываются: срок встаёт на начало минуты. Исключение — ровно 23:59:59: такое напоминание создаётся на весь день, без указания времени.","name":"due-at","hasDynamicHelp":false,"multiple":false,"type":"option"},"priority":{"description":"Приоритет: 1, 2 (важно) или 3 (очень важно)","name":"priority","hasDynamicHelp":false,"multiple":false,"type":"option"},"performer-ids":{"description":"Массив идентификаторов пользователей, привязываемых к напоминанию как «ответственные» (по умолчанию ответственным назначается вы)","name":"performer-ids","hasDynamicHelp":false,"multiple":false,"type":"option"},"chat-id":{"description":"Идентификатор чата, к которому привязывается напоминание (pachca chats list)","name":"chat-id","hasDynamicHelp":false,"multiple":false,"type":"option"},"all-day":{"description":"Напоминание на весь день (без указания времени)","name":"all-day","allowNo":true,"type":"boolean"},"custom-properties":{"description":"Задаваемые дополнительные поля","name":"custom-properties","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"tasks:create","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"tasks:create","apiMethod":"POST","apiPath":"/tasks","defaultColumns":["id","content","created_at","kind","due_at"],"requiredFlags":["kind"],"isESM":true,"relativePath":["dist","commands","tasks","create.js"]},"tasks:delete":{"aliases":[],"args":{"id":{"description":"Идентификатор напоминания (pachca tasks list)","name":"id","required":true}},"description":"Удаление напоминания","examples":["Удалить задачу — Удали задачу:\n $ pachca tasks delete"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"force":{"description":"Пропустить подтверждение","name":"force","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"tasks:delete","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"tasks:delete","apiMethod":"DELETE","apiPath":"/tasks/{id}","isESM":true,"relativePath":["dist","commands","tasks","delete.js"]},"tasks:get":{"aliases":[],"args":{"id":{"description":"Идентификатор напоминания (pachca tasks list)","name":"id","required":true}},"description":"Информация о напоминании","examples":["Получить задачу по ID — Получи информацию о задаче:\n $ pachca tasks get"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"tasks:get","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"tasks:read","apiMethod":"GET","apiPath":"/tasks/{id}","defaultColumns":["id","content","created_at","kind","due_at"],"isESM":true,"relativePath":["dist","commands","tasks","get.js"]},"tasks:list":{"aliases":[],"args":{},"description":"Список напоминаний","examples":["Получить список предстоящих задач — Получи невыполненные задачи:\n $ pachca tasks list","Собрать задачи по чатам проекта — Запроси задачи нужных чатов:\n $ pachca tasks list","Собрать задачи по чатам проекта — Сузь выборку по автору, ответственным и состоянию:\n $ pachca tasks list"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"status":{"description":"Фильтр по состоянию. Если параметр не указан, возвращаются напоминания в любом состоянии.","name":"status","hasDynamicHelp":false,"multiple":false,"options":["done","undone"],"type":"option"},"chat-ids":{"description":"Фильтр по чатам, к которым привязаны напоминания. Доступными считаются чаты, где вы состоите участником, открытые беседы и каналы пространства, а также треды, доступные вам по родительскому чату. Мульти-гостю открытые беседы и каналы доступны, только если он в них участник. Остальные переданные идентификаторы игнорируются без ошибки. Не более 100 идентификаторов. (через запятую)","name":"chat-ids","hasDynamicHelp":false,"multiple":false,"type":"option"},"performer-ids":{"description":"Фильтр по ответственным за напоминание. Не более 100 идентификаторов. (через запятую)","name":"performer-ids","hasDynamicHelp":false,"multiple":false,"type":"option"},"author-id":{"description":"Фильтр по автору напоминания","name":"author-id","hasDynamicHelp":false,"multiple":false,"type":"option"},"limit":{"description":"Количество результатов на страницу","name":"limit","hasDynamicHelp":false,"multiple":false,"type":"option"},"cursor":{"description":"Курсор для следующей страницы","name":"cursor","hasDynamicHelp":false,"multiple":false,"type":"option"},"all":{"description":"Загрузить все страницы автоматически","name":"all","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"tasks:list","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"tasks:read","apiMethod":"GET","apiPath":"/tasks","defaultColumns":["id","content","created_at","kind","due_at"],"isESM":true,"relativePath":["dist","commands","tasks","list.js"]},"tasks:update":{"aliases":[],"args":{"id":{"description":"Идентификатор напоминания (pachca tasks list)","name":"id","required":true}},"description":"Редактирование напоминания","examples":["Отметить задачу выполненной — Обнови статус задачи:\n $ pachca tasks update","Обновить задачу (перенести срок, сменить ответственных) — Обнови нужные поля задачи:\n $ pachca tasks update"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"kind":{"description":"Тип","name":"kind","hasDynamicHelp":false,"multiple":false,"type":"option"},"content":{"description":"Описание","name":"content","hasDynamicHelp":false,"multiple":false,"type":"option"},"due-at":{"description":"Срок выполнения напоминания (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Секунды отбрасываются: срок встаёт на начало минуты. Исключение — ровно 23:59:59: такое напоминание создаётся на весь день, без указания времени.","name":"due-at","hasDynamicHelp":false,"multiple":false,"type":"option"},"priority":{"description":"Приоритет: 1, 2 (важно) или 3 (очень важно)","name":"priority","hasDynamicHelp":false,"multiple":false,"type":"option"},"performer-ids":{"description":"Массив идентификаторов пользователей, привязываемых к напоминанию как «ответственные»","name":"performer-ids","hasDynamicHelp":false,"multiple":false,"type":"option"},"status":{"description":"Статус","name":"status","hasDynamicHelp":false,"multiple":false,"type":"option"},"all-day":{"description":"Напоминание на весь день (без указания времени)","name":"all-day","allowNo":true,"type":"boolean"},"done-at":{"description":"Дата и время выполнения напоминания (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Значение, которое не удалось разобрать, отметку о выполнении снимает: ответ придёт успешный, а в нём `done_at` будет `null`.","name":"done-at","hasDynamicHelp":false,"multiple":false,"type":"option"},"custom-properties":{"description":"Задаваемые дополнительные поля","name":"custom-properties","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"tasks:update","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"tasks:update","apiMethod":"PUT","apiPath":"/tasks/{id}","defaultColumns":["id","content","created_at","kind","due_at"],"isESM":true,"relativePath":["dist","commands","tasks","update.js"]},"threads:add":{"aliases":[],"args":{"id":{"description":"Идентификатор сообщения","name":"id","required":true}},"description":"Новый тред","examples":["Ответить в тред (комментарий к сообщению) — Получи или создай тред, возьми `thread.id` из ответа:\n $ pachca threads add","Подписаться на тред сообщения — Получи или создай тред, возьми `chat_id` из ответа:\n $ pachca threads add"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"threads:add","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"threads:create","apiMethod":"POST","apiPath":"/messages/{id}/thread","defaultColumns":["id","chat_id","message_id","message_chat_id","updated_at"],"isESM":true,"relativePath":["dist","commands","threads","add.js"]},"threads:create":{"aliases":[],"args":{},"description":"Новый самостоятельный тред","flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"threads:create","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"threads:create","apiMethod":"POST","apiPath":"/threads","defaultColumns":["id","chat_id","message_id","message_chat_id","updated_at"],"isESM":true,"relativePath":["dist","commands","threads","create.js"]},"threads:get":{"aliases":[],"args":{"id":{"description":"Идентификатор треда","name":"id","required":true}},"description":"Информация о треде","flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"threads:get","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"threads:read","apiMethod":"GET","apiPath":"/threads/{id}","defaultColumns":["id","chat_id","message_id","message_chat_id","updated_at"],"isESM":true,"relativePath":["dist","commands","threads","get.js"]},"threads:list":{"aliases":[],"args":{},"description":"Список тредов","examples":["Получить список активных тредов за период — Запроси список тредов с фильтром по времени последнего сообщения и нужным `--limit`:\n $ pachca threads list","Получить список активных тредов за период — Если в ответе `meta.paginate.next_page` — пройди по страницам через `--cursor`:\n $ pachca threads list"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"last-message-at-after":{"description":"Фильтрация по времени последнего сообщения в треде: вернутся треды, где оно позже указанного. Значение в ISO-8601, смещение вида `+03:00` учитывается, время без смещения считается UTC.","name":"last-message-at-after","hasDynamicHelp":false,"multiple":false,"type":"option"},"last-message-at-before":{"description":"Фильтрация по времени последнего сообщения в треде: вернутся треды, где оно раньше указанного. Значение в ISO-8601, смещение вида `+03:00` учитывается, время без смещения считается UTC.","name":"last-message-at-before","hasDynamicHelp":false,"multiple":false,"type":"option"},"limit":{"description":"Количество результатов на страницу","name":"limit","hasDynamicHelp":false,"multiple":false,"type":"option"},"cursor":{"description":"Курсор для следующей страницы","name":"cursor","hasDynamicHelp":false,"multiple":false,"type":"option"},"all":{"description":"Загрузить все страницы автоматически","name":"all","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"threads:list","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"threads:read","apiMethod":"GET","apiPath":"/threads","defaultColumns":["id","chat_id","message_id","message_chat_id","updated_at"],"isESM":true,"relativePath":["dist","commands","threads","list.js"]},"upgrade":{"aliases":[],"args":{},"description":"Обновить CLI до последней версии","examples":["<%= config.bin %> upgrade"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"upgrade","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"isESM":true,"relativePath":["dist","commands","upgrade.js"]},"upload":{"aliases":[],"args":{"file":{"description":"Путь к файлу или - для stdin","name":"file","required":true}},"description":"Загрузить файл (получает подпись и загружает автоматически)","examples":["<%= config.bin %> upload photo.jpg","cat data.csv | <%= config.bin %> upload -"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"upload","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"uploads:write","isESM":true,"relativePath":["dist","commands","upload.js"]},"users:create":{"aliases":[],"args":{},"description":"Новый сотрудник","examples":["Массовое создание сотрудников с тегами — Для каждого сотрудника: создай аккаунт с тегами:\n $ pachca users create","Создать гостя в чат — Создай гостя: роль `guest` и ровно один чат в `--chat-ids`:\n $ pachca users create","Онбординг нового сотрудника — Создай аккаунт:\n $ pachca users create"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"first-name":{"description":"Имя (макс. 255 символов)","name":"first-name","hasDynamicHelp":false,"multiple":false,"type":"option"},"last-name":{"description":"Фамилия (макс. 255 символов)","name":"last-name","hasDynamicHelp":false,"multiple":false,"type":"option"},"email":{"description":"Электронная почта (макс. 255 символов)","name":"email","hasDynamicHelp":false,"multiple":false,"type":"option"},"phone-number":{"description":"Телефон (макс. 255 символов)","name":"phone-number","hasDynamicHelp":false,"multiple":false,"type":"option"},"nickname":{"description":"Имя пользователя (макс. 255 символов)","name":"nickname","hasDynamicHelp":false,"multiple":false,"type":"option"},"department":{"description":"Департамент (макс. 255 символов)","name":"department","hasDynamicHelp":false,"multiple":false,"type":"option"},"title":{"description":"Должность","name":"title","hasDynamicHelp":false,"multiple":false,"type":"option"},"role":{"description":"Уровень доступа","name":"role","hasDynamicHelp":false,"multiple":false,"type":"option"},"suspended":{"description":"Деактивация пользователя","name":"suspended","allowNo":true,"type":"boolean"},"list-tags":{"description":"Массив названий тегов, привязываемых к сотруднику. Значение, которое не является массивом непустых строк, игнорируется.","name":"list-tags","hasDynamicHelp":false,"multiple":false,"type":"option"},"chat-ids":{"description":"Идентификаторы чатов, в которые сотрудник будет добавлен сразу при создании. Для роли `guest` параметр обязателен и должен содержать ровно один активный чат.","name":"chat-ids","hasDynamicHelp":false,"multiple":false,"type":"option"},"custom-properties":{"description":"Задаваемые дополнительные поля","name":"custom-properties","hasDynamicHelp":false,"multiple":false,"type":"option"},"skip-email-notify":{"description":"Пропуск этапа отправки приглашения сотруднику. Сотруднику не будет отправлено письмо на электронную почту с приглашением создать аккаунт. Полезно при предварительном создании аккаунтов перед входом через SSO.","name":"skip-email-notify","allowNo":true,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"users:create","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"users:create","apiMethod":"POST","apiPath":"/users","defaultColumns":["id","title","first_name","last_name","email"],"requiredFlags":["email"],"isESM":true,"relativePath":["dist","commands","users","create.js"]},"users:delete":{"aliases":[],"args":{"id":{"description":"Идентификатор пользователя (pachca users list)","name":"id","required":true}},"description":"Удаление сотрудника","examples":["Offboarding сотрудника — Опционально: удалить аккаунт полностью:\n $ pachca users delete"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"force":{"description":"Пропустить подтверждение","name":"force","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"users:delete","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"users:delete","apiMethod":"DELETE","apiPath":"/users/{id}","isESM":true,"relativePath":["dist","commands","users","delete.js"]},"users:get":{"aliases":[],"args":{"id":{"description":"Идентификатор пользователя (pachca users list)","name":"id","required":true}},"description":"Информация о сотруднике","examples":["Получить сотрудника по ID — Получи информацию о сотруднике:\n $ pachca users get"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"users:get","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"users:read","apiMethod":"GET","apiPath":"/users/{id}","defaultColumns":["id","title","first_name","last_name","email"],"isESM":true,"relativePath":["dist","commands","users","get.js"]},"users:get-status":{"aliases":[],"args":{"user_id":{"description":"Идентификатор пользователя (pachca users list)","name":"user_id","required":true}},"description":"Статус сотрудника","examples":["Управление статусом сотрудника — Получить текущий статус:\n $ pachca users get-status"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"users:get-status","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"user_status:read","apiMethod":"GET","apiPath":"/users/{user_id}/status","defaultColumns":["title","emoji","expires_at","is_away"],"isESM":true,"relativePath":["dist","commands","users","get-status.js"]},"users:list":{"aliases":[],"args":{},"description":"Список сотрудников","examples":["Проверить, кто прочитал сообщение — При необходимости сопоставь с именами сотрудников:\n $ pachca users list","Разослать уведомление нескольким пользователям — Определи список `user_id` получателей:\n $ pachca users list","Найти сотрудника по имени или email — Поиск по имени/email (частичное совпадение):\n $ pachca users list"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"query":{"description":"Поисковая фраза для фильтрации результатов. Поиск работает по полям: `first_name` (имя), `last_name` (фамилия), `email` (электронная почта), `phone_number` (телефон) и `nickname` (никнейм).","name":"query","hasDynamicHelp":false,"multiple":false,"type":"option"},"limit":{"description":"Количество результатов на страницу","name":"limit","hasDynamicHelp":false,"multiple":false,"type":"option"},"cursor":{"description":"Курсор для следующей страницы","name":"cursor","hasDynamicHelp":false,"multiple":false,"type":"option"},"all":{"description":"Загрузить все страницы автоматически","name":"all","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"users:list","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"users:read","apiMethod":"GET","apiPath":"/users","defaultColumns":["id","title","first_name","last_name","email"],"isESM":true,"relativePath":["dist","commands","users","list.js"]},"users:remove-avatar":{"aliases":[],"args":{"user_id":{"description":"Идентификатор пользователя (pachca users list)","name":"user_id","required":true}},"description":"Удаление аватара сотрудника","examples":["Удалить аватар сотрудника — Удали аватар сотрудника:\n $ pachca users remove-avatar"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"force":{"description":"Пропустить подтверждение","name":"force","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"users:remove-avatar","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"user_avatar:write","apiMethod":"DELETE","apiPath":"/users/{user_id}/avatar","isESM":true,"relativePath":["dist","commands","users","remove-avatar.js"]},"users:remove-status":{"aliases":[],"args":{"user_id":{"description":"Идентификатор пользователя (pachca users list)","name":"user_id","required":true}},"description":"Удаление статуса сотрудника","examples":["Управление статусом сотрудника — Удалить статус:\n $ pachca users remove-status"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"force":{"description":"Пропустить подтверждение","name":"force","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"users:remove-status","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"user_status:write","apiMethod":"DELETE","apiPath":"/users/{user_id}/status","isESM":true,"relativePath":["dist","commands","users","remove-status.js"]},"users:update":{"aliases":[],"args":{"id":{"description":"Идентификатор пользователя (pachca users list)","name":"id","required":true}},"description":"Редактирование сотрудника","examples":["Массовое создание сотрудников с тегами — Или обнови существующего:\n $ pachca users update","Offboarding сотрудника — Заблокировать доступ:\n $ pachca users update"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"first-name":{"description":"Имя (макс. 255 символов)","name":"first-name","hasDynamicHelp":false,"multiple":false,"type":"option"},"last-name":{"description":"Фамилия (макс. 255 символов)","name":"last-name","hasDynamicHelp":false,"multiple":false,"type":"option"},"email":{"description":"Электронная почта (макс. 255 символов)","name":"email","hasDynamicHelp":false,"multiple":false,"type":"option"},"phone-number":{"description":"Телефон (макс. 255 символов)","name":"phone-number","hasDynamicHelp":false,"multiple":false,"type":"option"},"nickname":{"description":"Имя пользователя (макс. 255 символов)","name":"nickname","hasDynamicHelp":false,"multiple":false,"type":"option"},"department":{"description":"Департамент (макс. 255 символов)","name":"department","hasDynamicHelp":false,"multiple":false,"type":"option"},"title":{"description":"Должность","name":"title","hasDynamicHelp":false,"multiple":false,"type":"option"},"role":{"description":"Уровень доступа","name":"role","hasDynamicHelp":false,"multiple":false,"type":"option"},"suspended":{"description":"Деактивация пользователя","name":"suspended","allowNo":true,"type":"boolean"},"list-tags":{"description":"Массив названий тегов, привязываемых к сотруднику. Список заменяет прежний целиком, пустой снимает все теги. Значение, которое не является массивом непустых строк, игнорируется: теги сотрудника не меняются.","name":"list-tags","hasDynamicHelp":false,"multiple":false,"type":"option"},"custom-properties":{"description":"Задаваемые дополнительные поля","name":"custom-properties","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"users:update","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"users:update","apiMethod":"PUT","apiPath":"/users/{id}","defaultColumns":["id","title","first_name","last_name","email"],"isESM":true,"relativePath":["dist","commands","users","update.js"]},"users:update-avatar":{"aliases":[],"args":{"user_id":{"description":"Идентификатор пользователя (pachca users list)","name":"user_id","required":true}},"description":"Загрузка аватара сотрудника","examples":["Загрузить аватар сотрудника — Загрузи аватар сотруднику:\n $ pachca users update-avatar"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"file":{"description":"Файл изображения для аватара","name":"file","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"users:update-avatar","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"user_avatar:write","apiMethod":"PUT","apiPath":"/users/{user_id}/avatar","defaultColumns":["image_url"],"isESM":true,"relativePath":["dist","commands","users","update-avatar.js"]},"users:update-status":{"aliases":[],"args":{"user_id":{"description":"Идентификатор пользователя (pachca users list)","name":"user_id","required":true}},"description":"Новый статус сотрудника","examples":["Управление статусом сотрудника — Установить статус:\n $ pachca users update-status"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"emoji":{"description":"Emoji символ статуса","name":"emoji","hasDynamicHelp":false,"multiple":false,"type":"option"},"title":{"description":"Текст статуса (макс. 50 символов)","name":"title","hasDynamicHelp":false,"multiple":false,"type":"option"},"expires-at":{"description":"Срок жизни статуса (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Сюда идёт срок, названный словами: «до трёх» это значение поля, а не часть подписи.","name":"expires-at","hasDynamicHelp":false,"multiple":false,"type":"option"},"is-away":{"description":"Режим «Нет на месте»","name":"is-away","allowNo":true,"type":"boolean"},"away-message":{"description":"Текст сообщения при режиме «Нет на месте». Отображается в профиле и при личных сообщениях/упоминаниях. (макс. 1024 символов)","name":"away-message","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"users:update-status","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"user_status:write","apiMethod":"PUT","apiPath":"/users/{user_id}/status","defaultColumns":["title","emoji","expires_at","is_away"],"requiredFlags":["emoji","title"],"isESM":true,"relativePath":["dist","commands","users","update-status.js"]},"version":{"aliases":[],"args":{},"description":"Версия CLI","examples":["<%= config.bin %> version"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"version","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"isESM":true,"relativePath":["dist","commands","version.js"]},"views:open":{"aliases":[],"args":{},"description":"Открытие представления","examples":["Показать интерактивную форму пользователю — Немедленно открой форму:\n $ pachca views open","Опрос сотрудников через форму — Открой форму с полями опроса:\n $ pachca views open","Форма заявки/запроса — При нажатии открой форму с полями: тема, описание, приоритет:\n $ pachca views open"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"title":{"description":"Заголовок представления (макс. 24 символов)","name":"title","hasDynamicHelp":false,"multiple":false,"type":"option"},"close-text":{"description":"Текст кнопки закрытия представления. Отображается только в десктоп-вебе. В мобильных приложениях (iOS/Android) кнопка закрытия — это крестик в шапке, и заданный текст там не показывается. (макс. 24 символов)","name":"close-text","hasDynamicHelp":false,"multiple":false,"type":"option"},"submit-text":{"description":"Текст кнопки отправки формы (макс. 24 символов)","name":"submit-text","hasDynamicHelp":false,"multiple":false,"type":"option"},"blocks":{"description":"Массив блоков представления","name":"blocks","hasDynamicHelp":false,"multiple":false,"type":"option"},"type":{"description":"Способ открытия представления","name":"type","hasDynamicHelp":false,"multiple":false,"options":["modal"],"type":"option"},"trigger-id":{"description":"Уникальный идентификатор события (полученный, например, в исходящем вебхуке о нажатии кнопки)","name":"trigger-id","hasDynamicHelp":false,"multiple":false,"type":"option"},"private-metadata":{"description":"Необязательная строка, которая будет отправлена в ваше приложение при отправке пользователем заполненной формы. Используйте это поле, например, для передачи в формате `JSON` какой то дополнительной информации вместе с заполненной пользователем формой. (макс. 3000 символов)","name":"private-metadata","hasDynamicHelp":false,"multiple":false,"type":"option"},"callback-id":{"description":"Необязательный идентификатор для распознавания этого представления, который будет отправлен в ваше приложение при отправке пользователем заполненной формы. Используйте это поле, например, для понимания, какую форму должен был заполнить пользователь. (макс. 255 символов)","name":"callback-id","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"views:open","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"views:write","apiMethod":"POST","apiPath":"/views/open","requiredFlags":["title","blocks","type","trigger-id"],"isESM":true,"relativePath":["dist","commands","views","open.js"]},"views:submit-response":{"aliases":[],"args":{"view_id":{"description":"Идентификатор представления","name":"view_id","required":true}},"description":"Ответ на отправку формы","examples":["Обработать отправку формы (view_submission) — Если адрес исходящего вебхука не задан → ответь методом по `view_id` и `submit_id` из события: пустой `errors` закрывает форму, заполненный показывает ошибки полей:\n $ pachca views submit-response"],"flags":{"output":{"char":"o","description":"Output format: table, json, yaml, csv","name":"output","hasDynamicHelp":false,"multiple":false,"options":["table","json","yaml","csv"],"type":"option"},"columns":{"char":"c","description":"Columns to display (comma-separated)","name":"columns","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-header":{"description":"Hide table header","name":"no-header","allowNo":false,"type":"boolean"},"no-truncate":{"description":"Do not truncate values in table","name":"no-truncate","allowNo":false,"type":"boolean"},"profile":{"char":"p","description":"Profile to use for this command","name":"profile","hasDynamicHelp":false,"multiple":false,"type":"option"},"token":{"description":"Bearer token for this call (not saved)","name":"token","hasDynamicHelp":false,"multiple":false,"type":"option"},"quiet":{"char":"q","description":"Suppress output except errors","name":"quiet","allowNo":false,"type":"boolean"},"no-color":{"description":"Disable color output","name":"no-color","allowNo":false,"type":"boolean"},"verbose":{"char":"v","description":"Show HTTP request/response details","name":"verbose","allowNo":false,"type":"boolean"},"no-input":{"description":"Disable interactive prompts","name":"no-input","allowNo":false,"type":"boolean"},"dry-run":{"description":"Show HTTP request without sending","name":"dry-run","allowNo":false,"type":"boolean"},"timeout":{"description":"Request timeout in seconds","name":"timeout","hasDynamicHelp":false,"multiple":false,"type":"option"},"no-retry":{"description":"Disable auto-retry on 429/503","name":"no-retry","allowNo":false,"type":"boolean"},"json":{"description":"Output as JSON (alias for --output json)","hidden":true,"name":"json","allowNo":false,"type":"boolean"},"plain":{"description":"Plain output: TSV, no header, ID column first, no color (for scripts)","name":"plain","allowNo":false,"type":"boolean"},"submit-id":{"description":"Идентификатор отправки формы из вебхука `view_submit`","name":"submit-id","hasDynamicHelp":false,"multiple":false,"type":"option"},"errors":{"description":"Ошибки заполнения полей. Ключ — `name` блока, значение — текст ошибки под полем. Без этого поля представление закрывается как успешно отправленное.","name":"errors","hasDynamicHelp":false,"multiple":false,"type":"option"}},"hasDynamicHelp":false,"hiddenAliases":[],"id":"views:submit-response","pluginAlias":"@pachca/cli","pluginName":"@pachca/cli","pluginType":"core","strict":true,"enableJsonFlag":false,"scope":"views:write","apiMethod":"POST","apiPath":"/views/{view_id}/submit_response","defaultColumns":["success"],"requiredFlags":["submit-id"],"isESM":true,"relativePath":["dist","commands","views","submit-response.js"]}},"version":"0.0.0"} \ No newline at end of file diff --git a/packages/cli/scripts/generate-cli.ts b/packages/cli/scripts/generate-cli.ts index 704958950..42870cb6f 100644 --- a/packages/cli/scripts/generate-cli.ts +++ b/packages/cli/scripts/generate-cli.ts @@ -806,7 +806,11 @@ function generateCommandCode(p: CommandGenParams): string { // Empty body warning for update commands if (p.endpoint.method === 'PUT' || p.endpoint.method === 'PATCH') { runBodyLines.push(''); - if (wrapperKey) { + if (wrapperKey && siblingEntries.length > 0) { + // Обновление может прийти одними полями рядом с обёрткой (`bots update --oauth-client`), + // пустым считается только запрос, где кроме пустой обёртки ничего нет. + runBodyLines.push(` if (Object.keys(inner).length === 0 && Object.keys(body).length === 1) {`); + } else if (wrapperKey) { runBodyLines.push(` if (Object.keys(inner).length === 0) {`); } else { runBodyLines.push(` if (Object.keys(body).length === 0) {`); diff --git a/packages/cli/src/base-command.ts b/packages/cli/src/base-command.ts index a530cf049..cf8e08834 100644 --- a/packages/cli/src/base-command.ts +++ b/packages/cli/src/base-command.ts @@ -299,6 +299,41 @@ export abstract class BaseCommand extends Command { this.exit(3); } + /** + * What to do after a 401: the login was revoked, or the saved token no longer works. + * + * A browser login is fixed by logging in again, a saved token by saving a new one. + * The command carries the profile the call ran with, so it can be pasted as is. + * JSON output gets the bare command, like the other hints there. + */ + private reloginHint(): string { + const format = this.getOutputFormat(); + const human = format !== 'json' && process.stderr.isTTY; + + let resolved: ReturnType | undefined; + try { + resolved = resolveToken({ token: this.parsedFlags.token, profile: this.parsedFlags.profile }); + } catch { + // no profile resolved — the token came in from a flag or the environment + } + + if (!resolved?.profile || !resolved.profileName) { + return human + ? 'Токен из --token или PACHCA_TOKEN недействителен или отозван.' + : 'token from --token or PACHCA_TOKEN is invalid or revoked'; + } + + const flag = resolved.profileName === 'default' ? '' : ` --profile ${resolved.profileName}`; + if (getAuthMethod(resolved.profile) === 'oauth') { + return human + ? `Вход завершён или отозван. Войдите заново: pachca auth login${flag}` + : `pachca auth login${flag}`; + } + return human + ? `Токен недействителен или отозван. Сохраните новый: pachca auth login${flag} --token <токен>` + : `pachca auth login${flag} --token `; + } + /** * Handle errors with structured output. */ @@ -308,6 +343,9 @@ export abstract class BaseCommand extends Command { } if (err instanceof ApiError) { + if (err.details.code === 401 && !err.details.hint) { + err.details.hint = this.reloginHint(); + } outputError(err.details, this.getOutputFormat()); this.exit(getExitCode(err)); } diff --git a/packages/cli/src/commands/auth/login.ts b/packages/cli/src/commands/auth/login.ts index 646f0b8ef..8f305bce6 100644 --- a/packages/cli/src/commands/auth/login.ts +++ b/packages/cli/src/commands/auth/login.ts @@ -15,6 +15,7 @@ import { outputError } from '../../output.js'; import { OAuthError, copyToClipboard, + deviceName, openBrowser, pollForToken, requestDeviceCode, @@ -107,7 +108,7 @@ export default class AuthLogin extends BaseCommand { const grant = flags.token ? { access_token: flags.token } - : await this.deviceLogin(!flags['no-browser'], flags.quiet); + : await this.deviceLogin(profileName, !flags['no-browser'], flags.quiet); const tokenInfo = await this.verifyToken(grant.access_token); const identity = await this.fetchIdentity(grant.access_token, tokenInfo.user_id); @@ -152,10 +153,14 @@ export default class AuthLogin extends BaseCommand { * the code baked in is never shown — a link like that works as phishing when it * is forwarded to someone else's device. */ - private async deviceLogin(useBrowser: boolean, quiet?: boolean): Promise { + private async deviceLogin( + profileName: string, + useBrowser: boolean, + quiet?: boolean, + ): Promise { let grant: DeviceCodeGrant; try { - grant = await requestDeviceCode(); + grant = await requestDeviceCode(deviceName(profileName)); } catch (error) { this.failOAuth(error, 'Не удалось начать вход'); } diff --git a/packages/cli/src/commands/bots/create-token.ts b/packages/cli/src/commands/bots/create-token.ts new file mode 100644 index 000000000..fc1b9ed0e --- /dev/null +++ b/packages/cli/src/commands/bots/create-token.ts @@ -0,0 +1,86 @@ +// Auto-generated from openapi.yaml — DO NOT EDIT +import { Args, Flags } from '@oclif/core'; +import { BaseCommand } from '../../base-command.js'; +import * as clack from '@clack/prompts'; + +export default class BotsCreateToken extends BaseCommand { + static override description = "Новый токен бота"; + + static override examples = [ + "Выпустить боту отдельный токен — Выпусти токен с именем и правами из каталога. Без `--scopes` токен выпускается без прав, право не из каталога отклоняется с `400`:\n $ pachca bots create-token" + ]; + + static scope = "bots:write"; + static apiMethod = "POST"; + static apiPath = "/bots/{id}/tokens"; + static defaultColumns = ["id","name","created_at","token","user_id"]; + static requiredFlags = ["name"]; + + static override args = { + id: Args.integer({ + description: "Идентификатор бота (pachca bots list)", + required: true, + }), + }; + + static override flags = { + ...BaseCommand.baseFlags, + 'name': Flags.string({ + description: "Имя токена: по нему токены различают в списке (макс. 255 символов)", + }), + 'scopes': Flags.string({ + description: "Права токена. Доступны только права, которые можно выдать боту. Если не передать, токен выпускается без прав.", + }), + }; + + async run(): Promise { + const { args, flags } = await this.parse(BotsCreateToken); + this.parsedFlags = flags; + + const missingRequired: { flag: string; label: string; type: string }[] = [ + { flag: 'name', label: "Имя токена: по нему токены различают в списке", type: 'string' }, + ].filter((f) => (flags as Record)[f.flag] === undefined || (flags as Record)[f.flag] === null); + + if (missingRequired.length > 0) { + if (this.isInteractive()) { + for (const field of missingRequired) { + const value = await clack.text({ message: field.label, validate: (v) => v.length === 0 ? 'Обязательное поле' : undefined }); + if (clack.isCancel(value)) { process.stderr.write('Отменено.\n'); this.exit(0); } + if (field.type === 'integer') { (flags as Record)[field.flag] = Number.parseInt(value, 10); } + else if (field.type === 'boolean') { (flags as Record)[field.flag] = value === 'true'; } + else { (flags as Record)[field.flag] = value; } + } + } else { + this.validationError( + missingRequired.map((f) => ({ message: `Обязательный флаг --${f.flag} не передан`, flag: f.flag })), + { hint: "Обязательные: --name . pachca introspect bots create-token" }, + ); + } + } + + const validationErrors: { message: string; flag: string }[] = []; + if (flags['name'] && String(flags['name']).length > 255) { + validationErrors.push({ message: `--name: максимум 255 символов (передано: ${String(flags['name']).length})`, flag: 'name' }); + } + if (validationErrors.length > 0) { + this.validationError(validationErrors); + } + + const body: Record = { + name: flags['name'], + scopes: flags['scopes'] ? this.parseJSON(flags['scopes'], 'scopes') : undefined, + }; + // Clean undefined fields + for (const [k, v] of Object.entries(body)) { if (v === undefined) delete body[k]; } + + const { data } = await this.apiRequest({ + method: 'POST', + path: `/bots/${args.id}/tokens`, + body, + }); + + const responseBody = (data ?? {}) as Record; + const result = responseBody.data ?? responseBody; + this.output(result); + } +} diff --git a/packages/cli/src/commands/bots/create.ts b/packages/cli/src/commands/bots/create.ts index f9734bd34..d2a739090 100644 --- a/packages/cli/src/commands/bots/create.ts +++ b/packages/cli/src/commands/bots/create.ts @@ -14,7 +14,7 @@ export default class BotsCreate extends BaseCommand { static scope = "bots:write"; static apiMethod = "POST"; static apiPath = "/bots"; - static defaultColumns = ["id","webhook","access_token"]; + static defaultColumns = ["id","name","created_at","nickname","avatar_url"]; static requiredFlags = ["name"]; static override args = { @@ -72,9 +72,25 @@ export default class BotsCreate extends BaseCommand { description: "Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель.", }), 'single-chat': Flags.boolean({ - description: "Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Задаётся только при создании, при редактировании не меняется.", + description: "Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят.", allowNo: true, }), + 'kind': Flags.string({ + description: "Источник входящего вебхука. Без `empty` по умолчанию `simple`, а у пустого бота входящий вебхук включается только этим полем.", + }), + 'unfurl-domains': Flags.string({ + description: "Домены, ссылки на которые бот разворачивает, не больше 5. Работают вместе с событием `message_link_shared`.", + }), + 'empty': Flags.boolean({ + description: "Создать пустого бота: без токена и без входящего вебхука. Без этого поля бот создаётся с входящим вебхуком в своём формате, а его токен приходит в `access_token`.", + allowNo: true, + }), + 'oauth-client': Flags.string({ + description: "Включить авторизацию от имени сотрудника сразу при создании", + }), + 'promo': Flags.string({ + description: "Страница бота в витрине. Задаётся только вместе с `oauth_client`: без авторизации страницы у бота нет.", + }), }; async run(): Promise { @@ -113,7 +129,8 @@ export default class BotsCreate extends BaseCommand { this.validationError(validationErrors); } - const body: Record = { webhook: { + const body: Record = { + webhook: { name: flags['name'], nickname: flags['nickname'], outgoing_url: flags['outgoing-url'], @@ -130,10 +147,17 @@ export default class BotsCreate extends BaseCommand { who_can_add: flags['who-can-add'], can_edit: flags['can-edit'] ? this.parseJSON(flags['can-edit'], 'can-edit') : undefined, single_chat: flags['single-chat'], - } }; + kind: flags['kind'], + unfurl_domains: flags['unfurl-domains'] ? this.parseJSON(flags['unfurl-domains'], 'unfurl-domains') : undefined, + }, + empty: flags['empty'], + oauth_client: flags['oauth-client'] ? this.parseJSON(flags['oauth-client'], 'oauth-client') : undefined, + promo: flags['promo'] ? this.parseJSON(flags['promo'], 'promo') : undefined, + }; // Clean undefined fields const inner = body['webhook'] as Record; for (const [k, v] of Object.entries(inner)) { if (v === undefined) delete inner[k]; } + for (const [k, v] of Object.entries(body)) { if (k !== 'webhook' && v === undefined) delete body[k]; } const { data } = await this.apiRequest({ method: 'POST', diff --git a/packages/cli/src/commands/bots/delete-token.ts b/packages/cli/src/commands/bots/delete-token.ts new file mode 100644 index 000000000..bee44f12a --- /dev/null +++ b/packages/cli/src/commands/bots/delete-token.ts @@ -0,0 +1,57 @@ +// Auto-generated from openapi.yaml — DO NOT EDIT +import { Args, Flags } from '@oclif/core'; +import { BaseCommand } from '../../base-command.js'; +import * as clack from '@clack/prompts'; + +export default class BotsDeleteToken extends BaseCommand { + static override description = "Удаление токена бота"; + + static scope = "bots:write"; + static apiMethod = "DELETE"; + static apiPath = "/bots/{id}/tokens/{token_id}"; + + static override args = { + id: Args.integer({ + description: "Идентификатор бота (pachca bots list)", + required: true, + }), + token_id: Args.integer({ + description: "Идентификатор токена", + required: true, + }), + }; + + static override flags = { + ...BaseCommand.baseFlags, + force: Flags.boolean({ + description: 'Пропустить подтверждение', + default: false, + }), + }; + + async run(): Promise { + const { args, flags } = await this.parse(BotsDeleteToken); + this.parsedFlags = flags; + + if (!flags.force) { + if (!this.isInteractive()) { + this.validationError( + [{ message: 'Деструктивная операция требует флага --force', flag: 'force' }], + { type: 'PACHCA_DESTRUCTIVE_OP_ERROR', hint: "pachca bots delete-token --force" }, + ); + } + const confirm = await clack.confirm({ message: 'Вы уверены?' }); + if (clack.isCancel(confirm) || !confirm) { + process.stderr.write('Отменено.\n'); + this.exit(0); + } + } + + const { data } = await this.apiRequest({ + method: 'DELETE', + path: `/bots/${args.id}/tokens/${args.token_id}`, + }); + + this.success('Удалено'); + } +} diff --git a/packages/cli/src/commands/bots/delete.ts b/packages/cli/src/commands/bots/delete.ts index 27d4ebe92..3d9b917a2 100644 --- a/packages/cli/src/commands/bots/delete.ts +++ b/packages/cli/src/commands/bots/delete.ts @@ -7,7 +7,7 @@ export default class BotsDelete extends BaseCommand { static override description = "Удаление бота"; static override examples = [ - "Найти и удалить бота — Возьми `id` нужного бота из списка и удали его (скоуп `bots:write`). Доступно администратору, владельцу компании или создателю бота — владельцы чатов удалять бота не могут. Прежний токен инвалидируется сразу, бот исключается из всех чатов, его исходящий вебхук удаляется:\n $ pachca bots delete" + "Найти и удалить бота — Возьми `id` нужного бота из списка и удали его (скоуп `bots:write`). Доступно создателю бота и администратору, если бот открыт администраторам, — владельцы чатов удалять бота не могут. Все токены бота инвалидируются сразу, бот исключается из всех чатов, его вебхуки удаляются:\n $ pachca bots delete" ]; static scope = "bots:write"; diff --git a/packages/cli/src/commands/bots/get.ts b/packages/cli/src/commands/bots/get.ts index a0a5686c8..b43c304b3 100644 --- a/packages/cli/src/commands/bots/get.ts +++ b/packages/cli/src/commands/bots/get.ts @@ -8,7 +8,7 @@ export default class BotsGet extends BaseCommand { static scope = "bots:read"; static apiMethod = "GET"; static apiPath = "/bots/{id}"; - static defaultColumns = ["id","webhook"]; + static defaultColumns = ["id","name","created_at","nickname","avatar_url"]; static override args = { id: Args.integer({ diff --git a/packages/cli/src/commands/bots/list-scopes.ts b/packages/cli/src/commands/bots/list-scopes.ts new file mode 100644 index 000000000..11565a7ae --- /dev/null +++ b/packages/cli/src/commands/bots/list-scopes.ts @@ -0,0 +1,41 @@ +// Auto-generated from openapi.yaml — DO NOT EDIT +import { Args, Flags } from '@oclif/core'; +import { BaseCommand } from '../../base-command.js'; + +export default class BotsListScopes extends BaseCommand { + static override description = "Каталог прав бота"; + + static override examples = [ + "Выпустить боту отдельный токен — Пользовательским токеном (создатель бота или администратор, если бот открыт администраторам) получи каталог прав, которые можно выдать этому боту:\n $ pachca bots list-scopes" + ]; + + static scope = "bots:read"; + static apiMethod = "GET"; + static apiPath = "/bots/{id}/scopes"; + + static override args = { + id: Args.integer({ + description: "Идентификатор бота (pachca bots list)", + required: true, + }), + }; + + static override flags = { + ...BaseCommand.baseFlags, + + }; + + async run(): Promise { + const { args, flags } = await this.parse(BotsListScopes); + this.parsedFlags = flags; + + const { data } = await this.apiRequest({ + method: 'GET', + path: `/bots/${args.id}/scopes`, + }); + + const responseBody = (data ?? {}) as Record; + const result = responseBody.data ?? responseBody; + this.output(result); + } +} diff --git a/packages/cli/src/commands/bots/list-tokens.ts b/packages/cli/src/commands/bots/list-tokens.ts new file mode 100644 index 000000000..c1954d9fb --- /dev/null +++ b/packages/cli/src/commands/bots/list-tokens.ts @@ -0,0 +1,101 @@ +// Auto-generated from openapi.yaml — DO NOT EDIT +import { Args, Flags } from '@oclif/core'; +import { BaseCommand } from '../../base-command.js'; + +export default class BotsListTokens extends BaseCommand { + static override description = "Список токенов бота"; + + static scope = "bots:read"; + static apiMethod = "GET"; + static apiPath = "/bots/{id}/tokens"; + static defaultColumns = ["id","name","created_at","token","user_id"]; + + static override args = { + id: Args.integer({ + description: "Идентификатор бота (pachca bots list)", + required: true, + }), + }; + + static override flags = { + ...BaseCommand.baseFlags, + limit: Flags.integer({ + description: 'Количество результатов на страницу', + }), + cursor: Flags.string({ + description: 'Курсор для следующей страницы', + }), + all: Flags.boolean({ + description: 'Загрузить все страницы автоматически', + default: false, + }), + }; + + async run(): Promise { + const { args, flags } = await this.parse(BotsListTokens); + this.parsedFlags = flags; + + if (flags.all) { + // Auto-pagination + const allData: unknown[] = []; + let nextCursor: string | undefined = undefined; + let pages = 0; + const seenCursors = new Set(); + + while (pages < 500) { + const query: Record = { + limit: flags.limit, + cursor: nextCursor, + }; + const response = await this.apiRequest({ method: 'GET', path: `/bots/${args.id}/tokens`, query }); + const body = response.data as Record; + const items = body.data as unknown[]; + if (items) allData.push(...items); + const meta = body.meta as Record | undefined; + const paginate = meta?.paginate as Record | undefined; + nextCursor = paginate?.next_page as string | undefined; + pages++; + // Условие конца: списочные методы — has_next === false; методы поиска и /users?query= (без has_next) — пустой data + const hasNext = paginate?.has_next; + if (typeof hasNext === 'boolean') { + if (!hasNext) break; + } else if (!items || items.length === 0) { + break; + } + + if (process.stderr.isTTY) { + const total = (paginate as Record | undefined)?.total; + const progress = total ? `${allData.length} / ${total}` : String(allData.length); + process.stderr.write(`\r Загружено: ${progress}...`); + } + + if (!nextCursor) break; + if (seenCursors.has(nextCursor)) { + process.stderr.write('\n⚠ Обнаружен цикл пагинации, остановка.\n'); + break; + } + seenCursors.add(nextCursor); + } + + if (pages >= 500) { + process.stderr.write('\n⚠ Достигнут лимит 500 страниц.\n'); + } + if (process.stderr.isTTY) process.stderr.write('\n'); + this.output(allData); + return; + } + + const { data } = await this.apiRequest({ + method: 'GET', + path: `/bots/${args.id}/tokens`, + query: { + limit: flags.limit, + cursor: flags.cursor, + }, + }); + + const responseBody = (data ?? {}) as Record; + const items = responseBody.data ?? responseBody; + this.output(items); + } +} diff --git a/packages/cli/src/commands/bots/list.ts b/packages/cli/src/commands/bots/list.ts index 4b50a9938..988a9ae5a 100644 --- a/packages/cli/src/commands/bots/list.ts +++ b/packages/cli/src/commands/bots/list.ts @@ -12,7 +12,7 @@ export default class BotsList extends BaseCommand { static scope = "bots:read"; static apiMethod = "GET"; static apiPath = "/bots"; - static defaultColumns = ["id","webhook"]; + static defaultColumns = ["id","name","created_at","nickname","avatar_url"]; static override args = { diff --git a/packages/cli/src/commands/bots/recreate-token-self.ts b/packages/cli/src/commands/bots/recreate-token-self.ts index ecd41efaa..739f7def6 100644 --- a/packages/cli/src/commands/bots/recreate-token-self.ts +++ b/packages/cli/src/commands/bots/recreate-token-self.ts @@ -6,7 +6,7 @@ export default class BotsRecreateTokenSelf extends BaseCommand { static override description = "Ротация собственного токена бота"; static override examples = [ - "Ротация токена бота — Или: бот перевыпускает собственный токен своим же токеном (скоуп `bot_self:write`). Токен, которым выполнен запрос, инвалидируется сразу — обязательно сохрани новый `access_token` из ответа, иначе бот потеряет доступ к API:\n $ pachca bots recreate-token-self" + "Ротация токена бота — Или: бот перевыпускает свой основной токен сам (скоуп `bot_self:write`). Если запрос сделан основным токеном, он инвалидируется сразу — обязательно сохрани новый `access_token` из ответа, иначе бот потеряет доступ к API:\n $ pachca bots recreate-token-self" ]; static scope = "bot_self:write"; diff --git a/packages/cli/src/commands/bots/recreate-token.ts b/packages/cli/src/commands/bots/recreate-token.ts index 5231f973a..df202ef77 100644 --- a/packages/cli/src/commands/bots/recreate-token.ts +++ b/packages/cli/src/commands/bots/recreate-token.ts @@ -6,13 +6,13 @@ export default class BotsRecreateToken extends BaseCommand { static override description = "Ротация токена бота"; static override examples = [ - "Ротация токена бота — Пользовательским токеном (администратор, владелец компании или создатель бота) — перевыпусти токен по `id` бота. Прежний токен инвалидируется сразу:\n $ pachca bots recreate-token" + "Ротация токена бота — Пользовательским токеном (создатель бота или администратор, если бот открыт администраторам) — перевыпусти основной токен по `id` бота: тот, что без имени, а если такого нет, самый старый. Прежнее значение инвалидируется сразу:\n $ pachca bots recreate-token" ]; static scope = "bots:write"; static apiMethod = "POST"; static apiPath = "/bots/{id}/recreate_token"; - static defaultColumns = ["id","webhook","access_token"]; + static defaultColumns = ["id","name","created_at","nickname","avatar_url"]; static override args = { id: Args.integer({ diff --git a/packages/cli/src/commands/bots/reissue-token.ts b/packages/cli/src/commands/bots/reissue-token.ts new file mode 100644 index 000000000..c694c8436 --- /dev/null +++ b/packages/cli/src/commands/bots/reissue-token.ts @@ -0,0 +1,46 @@ +// Auto-generated from openapi.yaml — DO NOT EDIT +import { Args, Flags } from '@oclif/core'; +import { BaseCommand } from '../../base-command.js'; + +export default class BotsReissueToken extends BaseCommand { + static override description = "Перевыпуск токена бота"; + + static override examples = [ + "Ротация токена бота — Отдельный токен бота перевыпускай по его `id` из `pachca bots list-tokens`: значение меняется, имя и права остаются:\n $ pachca bots reissue-token" + ]; + + static scope = "bots:write"; + static apiMethod = "POST"; + static apiPath = "/bots/{id}/tokens/{token_id}/reissue"; + static defaultColumns = ["id","name","created_at","token","user_id"]; + + static override args = { + id: Args.integer({ + description: "Идентификатор бота (pachca bots list)", + required: true, + }), + token_id: Args.integer({ + description: "Идентификатор токена", + required: true, + }), + }; + + static override flags = { + ...BaseCommand.baseFlags, + + }; + + async run(): Promise { + const { args, flags } = await this.parse(BotsReissueToken); + this.parsedFlags = flags; + + const { data } = await this.apiRequest({ + method: 'POST', + path: `/bots/${args.id}/tokens/${args.token_id}/reissue`, + }); + + const responseBody = (data ?? {}) as Record; + const result = responseBody.data ?? responseBody; + this.output(result); + } +} diff --git a/packages/cli/src/commands/bots/rotate-client-secret.ts b/packages/cli/src/commands/bots/rotate-client-secret.ts new file mode 100644 index 000000000..2ff1520d3 --- /dev/null +++ b/packages/cli/src/commands/bots/rotate-client-secret.ts @@ -0,0 +1,38 @@ +// Auto-generated from openapi.yaml — DO NOT EDIT +import { Args, Flags } from '@oclif/core'; +import { BaseCommand } from '../../base-command.js'; + +export default class BotsRotateClientSecret extends BaseCommand { + static override description = "Ротация секрета клиента"; + + static scope = "bots:write"; + static apiMethod = "POST"; + static apiPath = "/bots/{id}/rotate_client_secret"; + static defaultColumns = ["id","name","created_at","nickname","avatar_url"]; + + static override args = { + id: Args.integer({ + description: "Идентификатор бота (pachca bots list)", + required: true, + }), + }; + + static override flags = { + ...BaseCommand.baseFlags, + + }; + + async run(): Promise { + const { args, flags } = await this.parse(BotsRotateClientSecret); + this.parsedFlags = flags; + + const { data } = await this.apiRequest({ + method: 'POST', + path: `/bots/${args.id}/rotate_client_secret`, + }); + + const responseBody = (data ?? {}) as Record; + const result = responseBody.data ?? responseBody; + this.output(result); + } +} diff --git a/packages/cli/src/commands/bots/update-token.ts b/packages/cli/src/commands/bots/update-token.ts new file mode 100644 index 000000000..b3b32ac15 --- /dev/null +++ b/packages/cli/src/commands/bots/update-token.ts @@ -0,0 +1,70 @@ +// Auto-generated from openapi.yaml — DO NOT EDIT +import { Args, Flags } from '@oclif/core'; +import { BaseCommand } from '../../base-command.js'; + +export default class BotsUpdateToken extends BaseCommand { + static override description = "Изменение токена бота"; + + static scope = "bots:write"; + static apiMethod = "PUT"; + static apiPath = "/bots/{id}/tokens/{token_id}"; + static defaultColumns = ["id","name","created_at","token","user_id"]; + + static override args = { + id: Args.integer({ + description: "Идентификатор бота (pachca bots list)", + required: true, + }), + token_id: Args.integer({ + description: "Идентификатор токена", + required: true, + }), + }; + + static override flags = { + ...BaseCommand.baseFlags, + 'name': Flags.string({ + description: "Новое имя токена (макс. 255 символов)", + }), + 'scopes': Flags.string({ + description: "Новые права токена. Список заменяется целиком и действует сразу, перевыпускать токен не нужно.", + }), + }; + + async run(): Promise { + const { args, flags } = await this.parse(BotsUpdateToken); + this.parsedFlags = flags; + + const validationErrors: { message: string; flag: string }[] = []; + if (flags['name'] && String(flags['name']).length > 255) { + validationErrors.push({ message: `--name: максимум 255 символов (передано: ${String(flags['name']).length})`, flag: 'name' }); + } + if (validationErrors.length > 0) { + this.validationError(validationErrors); + } + + const body: Record = { + name: flags['name'], + scopes: flags['scopes'] ? this.parseJSON(flags['scopes'], 'scopes') : undefined, + }; + // Clean undefined fields + for (const [k, v] of Object.entries(body)) { if (v === undefined) delete body[k]; } + + if (Object.keys(body).length === 0) { + this.validationError( + [{ message: 'Не указаны поля для обновления' }], + { type: 'PACHCA_USAGE_ERROR' }, + ); + } + + const { data } = await this.apiRequest({ + method: 'PUT', + path: `/bots/${args.id}/tokens/${args.token_id}`, + body, + }); + + const responseBody = (data ?? {}) as Record; + const result = responseBody.data ?? responseBody; + this.output(result); + } +} diff --git a/packages/cli/src/commands/bots/update.ts b/packages/cli/src/commands/bots/update.ts index 177be3869..02796b4ec 100644 --- a/packages/cli/src/commands/bots/update.ts +++ b/packages/cli/src/commands/bots/update.ts @@ -6,13 +6,15 @@ export default class BotsUpdate extends BaseCommand { static override description = "Редактирование бота"; static override examples = [ - "Обновить Webhook URL бота — Пользовательским токеном (с правом редактировать бота) — обнови URL по `id` бота. Пустая строка отключает вебхук:\n $ pachca bots update" + "Обновить Webhook URL бота — Пользовательским токеном (с правом редактировать бота) — обнови URL по `id` бота. Пустая строка отключает вебхук:\n $ pachca bots update", + "Включить боту авторизацию от имени сотрудника — Пользовательским токеном (создатель бота или администратор, если бот открыт администраторам) включи авторизацию: где хранится секрет, адреса возврата и права, которые бот попросит у сотрудника. Права бери из `pachca bots list-scopes`:\n $ pachca bots update", + "Включить боту авторизацию от имени сотрудника — Чтобы бот появился в витрине, добавь описание и опубликуй страницу:\n $ pachca bots update" ]; static scope = "bots:write"; static apiMethod = "PUT"; static apiPath = "/bots/{id}"; - static defaultColumns = ["id","webhook"]; + static defaultColumns = ["id","name","created_at","nickname","avatar_url"]; static override args = { id: Args.integer({ @@ -71,6 +73,22 @@ export default class BotsUpdate extends BaseCommand { 'can-edit': Flags.string({ description: "Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель.", }), + 'single-chat': Flags.boolean({ + description: "Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят.", + allowNo: true, + }), + 'kind': Flags.string({ + description: "Источник входящего вебхука. Если у бота входящего вебхука не было, он включается.", + }), + 'unfurl-domains': Flags.string({ + description: "Домены, ссылки на которые бот разворачивает, не больше 5. Работают вместе с событием `message_link_shared`.", + }), + 'oauth-client': Flags.string({ + description: "Настройки авторизации от имени сотрудника. Если авторизация выключена, объект её включает, а `null` выключает: выданные сотрудниками авторизации отзываются, страница в витрине удаляется.", + }), + 'promo': Flags.string({ + description: "Страница бота в витрине. Доступна, только когда у бота включена авторизация.", + }), }; async run(): Promise { @@ -88,7 +106,8 @@ export default class BotsUpdate extends BaseCommand { this.validationError(validationErrors); } - const body: Record = { webhook: { + const body: Record = { + webhook: { name: flags['name'], nickname: flags['nickname'], outgoing_url: flags['outgoing-url'], @@ -104,12 +123,19 @@ export default class BotsUpdate extends BaseCommand { events_history_enabled: flags['events-history-enabled'], who_can_add: flags['who-can-add'], can_edit: flags['can-edit'] ? this.parseJSON(flags['can-edit'], 'can-edit') : undefined, - } }; + single_chat: flags['single-chat'], + kind: flags['kind'], + unfurl_domains: flags['unfurl-domains'] ? this.parseJSON(flags['unfurl-domains'], 'unfurl-domains') : undefined, + }, + oauth_client: flags['oauth-client'] ? this.parseJSON(flags['oauth-client'], 'oauth-client') : undefined, + promo: flags['promo'] ? this.parseJSON(flags['promo'], 'promo') : undefined, + }; // Clean undefined fields const inner = body['webhook'] as Record; for (const [k, v] of Object.entries(inner)) { if (v === undefined) delete inner[k]; } + for (const [k, v] of Object.entries(body)) { if (k !== 'webhook' && v === undefined) delete body[k]; } - if (Object.keys(inner).length === 0) { + if (Object.keys(inner).length === 0 && Object.keys(body).length === 1) { this.validationError( [{ message: 'Не указаны поля для обновления' }], { type: 'PACHCA_USAGE_ERROR' }, diff --git a/packages/cli/src/commands/chats/mark-unread.ts b/packages/cli/src/commands/chats/mark-unread.ts new file mode 100644 index 000000000..98591b235 --- /dev/null +++ b/packages/cli/src/commands/chats/mark-unread.ts @@ -0,0 +1,53 @@ +// Auto-generated from openapi.yaml — DO NOT EDIT +import { Args, Flags } from '@oclif/core'; +import { BaseCommand } from '../../base-command.js'; + +export default class ChatsMarkUnread extends BaseCommand { + static override description = "Отметка чата непрочитанным"; + + static scope = "chats:mark_unread"; + static apiMethod = "PUT"; + static apiPath = "/chats/{id}/unread"; + + static override args = { + id: Args.integer({ + description: "Идентификатор чата или треда (pachca chats list)", + required: true, + }), + }; + + static override flags = { + ...BaseCommand.baseFlags, + 'message-id': Flags.integer({ + description: "Идентификатор сообщения, с которого чат становится непрочитанным: оно и все сообщения после него. Если не передать, непрочитанным становится последнее сообщение. (pachca messages list)", + }), + }; + + async run(): Promise { + const { args, flags } = await this.parse(ChatsMarkUnread); + this.parsedFlags = flags; + + const body: Record = { + message_id: flags['message-id'], + }; + // Clean undefined fields + for (const [k, v] of Object.entries(body)) { if (v === undefined) delete body[k]; } + + if (Object.keys(body).length === 0) { + this.validationError( + [{ message: 'Не указаны поля для обновления' }], + { type: 'PACHCA_USAGE_ERROR' }, + ); + } + + const { data } = await this.apiRequest({ + method: 'PUT', + path: `/chats/${args.id}/unread`, + body, + }); + + const responseBody = (data ?? {}) as Record; + const result = responseBody.data ?? responseBody; + this.output(result); + } +} diff --git a/packages/cli/src/commands/messages/create.ts b/packages/cli/src/commands/messages/create.ts index fdfbe5e4a..c859b116a 100644 --- a/packages/cli/src/commands/messages/create.ts +++ b/packages/cli/src/commands/messages/create.ts @@ -31,7 +31,7 @@ export default class MessagesCreate extends BaseCommand { description: "Идентификатор того, что названо в `entity_type`: беседы или канала, треда либо сотрудника. (pachca chats list | pachca users list)", }), 'content': Flags.string({ - description: "Текст сообщения. Поддерживает упоминания: `@nickname` или `<@user_id>` (будет автоматически преобразовано в `@nickname`).", + description: "Текст сообщения. Поддерживает упоминания: `@nickname` или `<@user_id>` (будет автоматически преобразовано в `@nickname`). У мульти-гостя `<@user_id>` недоступного ему сотрудника остаётся в тексте как есть.", }), 'files': Flags.string({ description: "Прикрепляемые файлы", @@ -40,7 +40,7 @@ export default class MessagesCreate extends BaseCommand { description: "Массив строк, каждая из которых представлена массивом кнопок. Максимум 100 кнопок у сообщения, до 8 кнопок в строке.", }), 'parent-message-id': Flags.integer({ - description: "Идентификатор сообщения, на которое отвечаете. Ответ появится прямо в ленте чата, а не в треде: для треда отправляйте сообщение с `entity_type: \"thread\"`.", + description: "Идентификатор сообщения, на которое вы отвечаете с цитатой. Ответить можно на сообщение в любом чате, в том числе в треде: ответ отправляют в тот же чат или тред, где лежит это сообщение, иначе запрос вернёт ошибку `422`. Чтобы написать в тред под сообщением, укажите `entity_type: \"thread\"` и идентификатор треда в `entity_id`.", }), 'display-avatar-url': Flags.string({ description: "Ссылка на специальную аватарку отправителя для этого сообщения. Использование этого поля возможно только с access_token бота. (макс. 255 символов)", @@ -73,7 +73,7 @@ export default class MessagesCreate extends BaseCommand { const missingRequired: { flag: string; label: string; type: string }[] = [ { flag: 'entity-id', label: "Идентификатор того, что названо в `entity_type`: беседы или канала, треда либо сотрудника.", type: 'integer' }, - { flag: 'content', label: "Текст сообщения. Поддерживает упоминания: `@nickname` или `<@user_id>` (будет автоматически преобразовано в `@nickname`).", type: 'string' }, + { flag: 'content', label: "Текст сообщения. Поддерживает упоминания: `@nickname` или `<@user_id>` (будет автоматически преобразовано в `@nickname`). У мульти-гостя `<@user_id>` недоступного ему сотрудника остаётся в тексте как есть.", type: 'string' }, ].filter((f) => (flags as Record)[f.flag] === undefined || (flags as Record)[f.flag] === null); if (missingRequired.length > 0) { diff --git a/packages/cli/src/commands/messages/update.ts b/packages/cli/src/commands/messages/update.ts index 69b86b244..b90cdda82 100644 --- a/packages/cli/src/commands/messages/update.ts +++ b/packages/cli/src/commands/messages/update.ts @@ -26,7 +26,7 @@ export default class MessagesUpdate extends BaseCommand { static override flags = { ...BaseCommand.baseFlags, 'content': Flags.string({ - description: "Текст сообщения. Поддерживает упоминания: `@nickname` или `<@user_id>` (будет автоматически преобразовано в `@nickname`).", + description: "Текст сообщения. Поддерживает упоминания: `@nickname` или `<@user_id>` (будет автоматически преобразовано в `@nickname`). У мульти-гостя `<@user_id>` недоступного ему сотрудника остаётся в тексте как есть.", }), 'files': Flags.string({ description: "Прикрепляемые файлы", diff --git a/packages/cli/src/commands/security/list.ts b/packages/cli/src/commands/security/list.ts index ab08631e8..0aacf2335 100644 --- a/packages/cli/src/commands/security/list.ts +++ b/packages/cli/src/commands/security/list.ts @@ -31,7 +31,7 @@ export default class SecurityList extends BaseCommand { }), 'event-key': Flags.string({ description: "Фильтр по конкретному типу события", - options: ["user_login","user_logout","user_2fa_fail","user_2fa_success","user_2fa_disabled","user_created","user_deleted","user_role_changed","user_updated","tag_created","tag_deleted","user_added_to_tag","user_removed_from_tag","chat_created","chat_renamed","chat_permission_changed","user_chat_join","user_chat_leave","tag_added_to_chat","tag_removed_from_chat","message_updated","message_deleted","message_created","reaction_created","reaction_deleted","thread_created","access_token_created","access_token_updated","access_token_destroy","kms_encrypt","kms_decrypt","audit_events_accessed","company_chats_accessed","company_bots_accessed","dlp_violation_detected","search_users_api","search_chats_api","search_messages_api","bot_scopes_updated","bot_webhook_settings_updated","bot_token_recreated","bot_deleted","bot_oauth_client_updated","oauth_authorization_granted","oauth_authorization_revoked","oauth_device_authorization_approved","oauth_device_authorization_denied","video_call_started","video_call_finished","video_call_recording_ready","exchange_disabled"], + options: ["user_login","user_logout","user_2fa_fail","user_2fa_success","user_2fa_disabled","user_created","user_deleted","user_role_changed","user_updated","tag_created","tag_deleted","user_added_to_tag","user_removed_from_tag","chat_created","chat_renamed","chat_permission_changed","user_chat_join","user_chat_leave","tag_added_to_chat","tag_removed_from_chat","message_updated","message_deleted","message_created","reaction_created","reaction_deleted","thread_created","access_token_created","access_token_updated","access_token_destroy","kms_encrypt","kms_decrypt","audit_events_accessed","company_chats_accessed","company_bots_accessed","dlp_violation_detected","search_users_api","search_chats_api","search_messages_api","bot_scopes_updated","bot_webhook_settings_updated","bot_token_recreated","bot_deleted","bot_oauth_client_updated","bot_oauth_client_disabled","bot_oauth_client_secret_rotated","bot_token_created","bot_token_updated","bot_token_reissued","oauth_authorization_granted","oauth_authorization_revoked","oauth_device_authorization_approved","oauth_device_authorization_denied","video_call_started","video_call_finished","video_call_recording_ready","exchange_disabled"], }), 'actor-id': Flags.string({ description: "Идентификатор пользователя, выполнившего действие", diff --git a/packages/cli/src/commands/tasks/list.ts b/packages/cli/src/commands/tasks/list.ts index 90201b39c..1608a152a 100644 --- a/packages/cli/src/commands/tasks/list.ts +++ b/packages/cli/src/commands/tasks/list.ts @@ -27,7 +27,7 @@ export default class TasksList extends BaseCommand { options: ["done","undone"], }), 'chat-ids': Flags.string({ - description: "Фильтр по чатам, к которым привязаны напоминания. Доступными считаются чаты, где вы состоите участником, открытые беседы и каналы пространства, а также треды, доступные вам по родительскому чату. Остальные переданные идентификаторы игнорируются без ошибки. Не более 100 идентификаторов." + " (через запятую)", + description: "Фильтр по чатам, к которым привязаны напоминания. Доступными считаются чаты, где вы состоите участником, открытые беседы и каналы пространства, а также треды, доступные вам по родительскому чату. Мульти-гостю открытые беседы и каналы доступны, только если он в них участник. Остальные переданные идентификаторы игнорируются без ошибки. Не более 100 идентификаторов." + " (через запятую)", }), 'performer-ids': Flags.string({ description: "Фильтр по ответственным за напоминание. Не более 100 идентификаторов." + " (через запятую)", diff --git a/packages/cli/src/commands/users/create.ts b/packages/cli/src/commands/users/create.ts index b664fd84f..de2a71e5c 100644 --- a/packages/cli/src/commands/users/create.ts +++ b/packages/cli/src/commands/users/create.ts @@ -53,7 +53,7 @@ export default class UsersCreate extends BaseCommand { allowNo: true, }), 'list-tags': Flags.string({ - description: "Массив тегов, привязываемых к сотруднику", + description: "Массив названий тегов, привязываемых к сотруднику. Значение, которое не является массивом непустых строк, игнорируется.", }), 'chat-ids': Flags.string({ description: "Идентификаторы чатов, в которые сотрудник будет добавлен сразу при создании. Для роли `guest` параметр обязателен и должен содержать ровно один активный чат.", diff --git a/packages/cli/src/commands/users/update.ts b/packages/cli/src/commands/users/update.ts index 0ed3aa3f2..1fd1ad508 100644 --- a/packages/cli/src/commands/users/update.ts +++ b/packages/cli/src/commands/users/update.ts @@ -53,7 +53,7 @@ export default class UsersUpdate extends BaseCommand { allowNo: true, }), 'list-tags': Flags.string({ - description: "Массив тегов, привязываемых к сотруднику", + description: "Массив названий тегов, привязываемых к сотруднику. Список заменяет прежний целиком, пустой снимает все теги. Значение, которое не является массивом непустых строк, игнорируется: теги сотрудника не меняются.", }), 'custom-properties': Flags.string({ description: "Задаваемые дополнительные поля", diff --git a/packages/cli/src/data/alternatives.json b/packages/cli/src/data/alternatives.json index bedff567d..be337c47d 100644 --- a/packages/cli/src/data/alternatives.json +++ b/packages/cli/src/data/alternatives.json @@ -8,6 +8,13 @@ "bots:update": "Редактирование бота", "bots:delete": "Удаление бота", "bots:recreate-token": "Ротация токена бота", + "bots:rotate-client-secret": "Ротация секрета клиента", + "bots:list-scopes": "Каталог прав бота", + "bots:list-tokens": "Список токенов бота", + "bots:create-token": "Новый токен бота", + "bots:update-token": "Изменение токена бота", + "bots:delete-token": "Удаление токена бота", + "bots:reissue-token": "Перевыпуск токена бота", "chats:create": "Новый чат", "chats:list": "Список чатов", "chats:request-export": "Экспорт сообщений", @@ -23,6 +30,7 @@ "members:remove": "Исключение пользователя", "members:update": "Редактирование роли", "chats:unarchive": "Разархивация чата", + "chats:mark-unread": "Отметка чата непрочитанным", "bots:list-company": "Список ботов пространства", "chats:list-company": "Список чатов пространства", "custom-properties:list": "Список дополнительных полей", diff --git a/packages/cli/src/data/changelog.json b/packages/cli/src/data/changelog.json index 6e63e1326..7a60a0b4f 100644 --- a/packages/cli/src/data/changelog.json +++ b/packages/cli/src/data/changelog.json @@ -1,4 +1,79 @@ [ + { + "version": "2026.10.0", + "date": "1 октября 2026", + "changes": [ + { + "type": "+", + "command": "bots list-tokens, bots create-token, bots update-token, bots reissue-token, bots delete-token", + "description": "Новые команды — токены бота: у бота может быть несколько токенов, у каждого своё имя и права. Значение токена показывается один раз, при выпуске и перевыпуске." + }, + { + "type": "+", + "command": "bots list-scopes", + "description": "Новая команда — каталог прав, которые можно выдать боту: его токенам и авторизации от имени сотрудника" + }, + { + "type": "+", + "command": "bots rotate-client-secret", + "description": "Новая команда — новый `client_secret` для авторизации от имени сотрудника. Прежний секрет перестаёт работать сразу." + }, + { + "type": "+", + "command": "bots create, bots update", + "description": "Флаги `--oauth-client` и `--promo` включают авторизацию от имени сотрудника и заполняют страницу бота в витрине, `--kind` выбирает источник входящего вебхука, а `--unfurl-domains` задаёт домены для разворачивания ссылок. У `bots create` появился `--empty` для бота без токена, у `bots update` — `--single-chat`." + }, + { + "type": "+", + "command": "chats mark-unread", + "description": "Новая команда — отметка чата непрочитанным для владельца токена" + }, + { + "type": "+", + "command": "security list", + "description": "Флаг `--event-key` принимает значения `bot_token_created`, `bot_token_updated`, `bot_token_reissued`, `bot_oauth_client_secret_rotated` и `bot_oauth_client_disabled`" + }, + { + "type": "-", + "command": "search users, search chats, search messages, users list", + "description": "В справке описан ответ `504` с кодом `timeout`, если поиск не уложился по времени" + }, + { + "type": "-", + "command": "messages create, messages update, drafts create, drafts update", + "description": "У файлов в справке указан предел голосового сообщения в 30 минут" + }, + { + "type": "+", + "command": "auth login", + "description": "Вход через браузер передаёт серверу имя устройства, по которому вход узнаётся в списке токенов CLI: имя машины, а у профиля не по умолчанию ещё и имя профиля в скобках, например `macbook (ci)`" + }, + { + "type": "~", + "description": "После ответа `401` CLI подсказывает, что делать дальше: войти заново, если вход через браузер отозван или завершён, или сохранить новый токен. В подсказку подставлен профиль, с которым запускалась команда, например `pachca auth login --profile ci`" + }, + { + "type": "-", + "command": "views open", + "description": "В справке у блоков `radio` и `checkbox` до 20 вариантов" + }, + { + "type": "-", + "command": "guide", + "description": "Сценарии разворачивания ссылок и поллинга описывают раздел «Интеграции»: событие ссылок с доменами вместо отдельного типа бота и история событий без Webhook URL флагом `--events-history-enabled`, который попал и в примеры `bots update`" + }, + { + "type": "-", + "command": "messages create, messages update, tasks list", + "description": "Подсказки к `--content` и `--chat-ids` описывают, что меняется для мульти-гостя" + }, + { + "type": "-", + "command": "messages create, threads add, threads create, threads get, threads list", + "description": "Подсказка к `--parent-message-id` описывает ответ с цитатой в любом чате, в том числе в треде. В описаниях тредов сказано, какой идентификатор куда передавать: `id` — чтобы написать в тред, `chat_id` — чтобы прочитать его сообщения." + } + ] + }, { "version": "2026.9.1", "date": "16 сентября 2026", diff --git a/packages/cli/src/data/commands.json b/packages/cli/src/data/commands.json index f484cd052..70e62a692 100644 --- a/packages/cli/src/data/commands.json +++ b/packages/cli/src/data/commands.json @@ -257,7 +257,66 @@ "name": "single-chat", "type": "boolean", "required": false, - "description": "Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Задаётся только при создании, при редактировании не меняется." + "description": "Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят." + }, + { + "name": "kind", + "type": "option", + "required": false, + "description": "Источник входящего вебхука. Без `empty` по умолчанию `simple`, а у пустого бота входящий вебхук включается только этим полем." + }, + { + "name": "unfurl-domains", + "type": "option", + "required": false, + "description": "Домены, ссылки на которые бот разворачивает, не больше 5. Работают вместе с событием `message_link_shared`." + }, + { + "name": "empty", + "type": "boolean", + "required": false, + "description": "Создать пустого бота: без токена и без входящего вебхука. Без этого поля бот создаётся с входящим вебхуком в своём формате, а его токен приходит в `access_token`." + }, + { + "name": "oauth-client", + "type": "option", + "required": false, + "description": "Включить авторизацию от имени сотрудника сразу при создании" + }, + { + "name": "promo", + "type": "option", + "required": false, + "description": "Страница бота в витрине. Задаётся только вместе с `oauth_client`: без авторизации страницы у бота нет." + } + ] + }, + { + "command": "pachca bots create-token", + "summary": "Новый токен бота", + "method": "POST", + "path": "/bots/{id}/tokens", + "scope": "bots:write", + "plan": null, + "args": [ + { + "name": "id", + "required": true, + "description": "Идентификатор бота (pachca bots list)" + } + ], + "flags": [ + { + "name": "name", + "type": "option", + "required": true, + "description": "Имя токена: по нему токены различают в списке (макс. 255 символов)" + }, + { + "name": "scopes", + "type": "option", + "required": false, + "description": "Права токена. Доступны только права, которые можно выдать боту. Если не передать, токен выпускается без прав." } ] }, @@ -284,6 +343,34 @@ } ] }, + { + "command": "pachca bots delete-token", + "summary": "Удаление токена бота", + "method": "DELETE", + "path": "/bots/{id}/tokens/{token_id}", + "scope": "bots:write", + "plan": null, + "args": [ + { + "name": "id", + "required": true, + "description": "Идентификатор бота (pachca bots list)" + }, + { + "name": "token_id", + "required": true, + "description": "Идентификатор токена" + } + ], + "flags": [ + { + "name": "force", + "type": "boolean", + "required": false, + "description": "Пропустить подтверждение" + } + ] + }, { "command": "pachca bots get", "summary": "Информация о боте", @@ -396,6 +483,57 @@ } ] }, + { + "command": "pachca bots list-scopes", + "summary": "Каталог прав бота", + "method": "GET", + "path": "/bots/{id}/scopes", + "scope": "bots:read", + "plan": null, + "args": [ + { + "name": "id", + "required": true, + "description": "Идентификатор бота (pachca bots list)" + } + ], + "flags": [] + }, + { + "command": "pachca bots list-tokens", + "summary": "Список токенов бота", + "method": "GET", + "path": "/bots/{id}/tokens", + "scope": "bots:read", + "plan": null, + "args": [ + { + "name": "id", + "required": true, + "description": "Идентификатор бота (pachca bots list)" + } + ], + "flags": [ + { + "name": "limit", + "type": "option", + "required": false, + "description": "Количество результатов на страницу" + }, + { + "name": "cursor", + "type": "option", + "required": false, + "description": "Курсор для следующей страницы" + }, + { + "name": "all", + "type": "boolean", + "required": false, + "description": "Загрузить все страницы автоматически" + } + ] + }, { "command": "pachca bots recreate-token", "summary": "Ротация токена бота", @@ -421,6 +559,27 @@ "plan": null, "flags": [] }, + { + "command": "pachca bots reissue-token", + "summary": "Перевыпуск токена бота", + "method": "POST", + "path": "/bots/{id}/tokens/{token_id}/reissue", + "scope": "bots:write", + "plan": null, + "args": [ + { + "name": "id", + "required": true, + "description": "Идентификатор бота (pachca bots list)" + }, + { + "name": "token_id", + "required": true, + "description": "Идентификатор токена" + } + ], + "flags": [] + }, { "command": "pachca bots remove-event", "summary": "Удаление события", @@ -444,6 +603,22 @@ } ] }, + { + "command": "pachca bots rotate-client-secret", + "summary": "Ротация секрета клиента", + "method": "POST", + "path": "/bots/{id}/rotate_client_secret", + "scope": "bots:write", + "plan": null, + "args": [ + { + "name": "id", + "required": true, + "description": "Идентификатор бота (pachca bots list)" + } + ], + "flags": [] + }, { "command": "pachca bots update", "summary": "Редактирование бота", @@ -548,6 +723,70 @@ "type": "option", "required": false, "description": "Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель." + }, + { + "name": "single-chat", + "type": "boolean", + "required": false, + "description": "Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят." + }, + { + "name": "kind", + "type": "option", + "required": false, + "description": "Источник входящего вебхука. Если у бота входящего вебхука не было, он включается." + }, + { + "name": "unfurl-domains", + "type": "option", + "required": false, + "description": "Домены, ссылки на которые бот разворачивает, не больше 5. Работают вместе с событием `message_link_shared`." + }, + { + "name": "oauth-client", + "type": "option", + "required": false, + "description": "Настройки авторизации от имени сотрудника. Если авторизация выключена, объект её включает, а `null` выключает: выданные сотрудниками авторизации отзываются, страница в витрине удаляется." + }, + { + "name": "promo", + "type": "option", + "required": false, + "description": "Страница бота в витрине. Доступна, только когда у бота включена авторизация." + } + ] + }, + { + "command": "pachca bots update-token", + "summary": "Изменение токена бота", + "method": "PUT", + "path": "/bots/{id}/tokens/{token_id}", + "scope": "bots:write", + "plan": null, + "args": [ + { + "name": "id", + "required": true, + "description": "Идентификатор бота (pachca bots list)" + }, + { + "name": "token_id", + "required": true, + "description": "Идентификатор токена" + } + ], + "flags": [ + { + "name": "name", + "type": "option", + "required": false, + "description": "Новое имя токена (макс. 255 символов)" + }, + { + "name": "scopes", + "type": "option", + "required": false, + "description": "Новые права токена. Список заменяется целиком и действует сразу, перевыпускать токен не нужно." } ] }, @@ -801,6 +1040,29 @@ } ] }, + { + "command": "pachca chats mark-unread", + "summary": "Отметка чата непрочитанным", + "method": "PUT", + "path": "/chats/{id}/unread", + "scope": "chats:mark_unread", + "plan": null, + "args": [ + { + "name": "id", + "required": true, + "description": "Идентификатор чата или треда (pachca chats list)" + } + ], + "flags": [ + { + "name": "message-id", + "type": "option", + "required": false, + "description": "Идентификатор сообщения, с которого чат становится непрочитанным: оно и все сообщения после него. Если не передать, непрочитанным становится последнее сообщение. (pachca messages list)" + } + ] + }, { "command": "pachca chats request-export", "summary": "Экспорт сообщений", @@ -1738,7 +2000,7 @@ "name": "content", "type": "option", "required": true, - "description": "Текст сообщения. Поддерживает упоминания: `@nickname` или `<@user_id>` (будет автоматически преобразовано в `@nickname`)." + "description": "Текст сообщения. Поддерживает упоминания: `@nickname` или `<@user_id>` (будет автоматически преобразовано в `@nickname`). У мульти-гостя `<@user_id>` недоступного ему сотрудника остаётся в тексте как есть." }, { "name": "files", @@ -1756,7 +2018,7 @@ "name": "parent-message-id", "type": "option", "required": false, - "description": "Идентификатор сообщения, на которое отвечаете. Ответ появится прямо в ленте чата, а не в треде: для треда отправляйте сообщение с `entity_type: \"thread\"`." + "description": "Идентификатор сообщения, на которое вы отвечаете с цитатой. Ответить можно на сообщение в любом чате, в том числе в треде: ответ отправляют в тот же чат или тред, где лежит это сообщение, иначе запрос вернёт ошибку `422`. Чтобы написать в тред под сообщением, укажите `entity_type: \"thread\"` и идентификатор треда в `entity_id`." }, { "name": "display-avatar-url", @@ -1964,7 +2226,7 @@ "name": "content", "type": "option", "required": false, - "description": "Текст сообщения. Поддерживает упоминания: `@nickname` или `<@user_id>` (будет автоматически преобразовано в `@nickname`)." + "description": "Текст сообщения. Поддерживает упоминания: `@nickname` или `<@user_id>` (будет автоматически преобразовано в `@nickname`). У мульти-гостя `<@user_id>` недоступного ему сотрудника остаётся в тексте как есть." }, { "name": "files", @@ -2575,6 +2837,11 @@ "bot_token_recreated", "bot_deleted", "bot_oauth_client_updated", + "bot_oauth_client_disabled", + "bot_oauth_client_secret_rotated", + "bot_token_created", + "bot_token_updated", + "bot_token_reissued", "oauth_authorization_granted", "oauth_authorization_revoked", "oauth_device_authorization_approved", @@ -2753,7 +3020,7 @@ "name": "chat-ids", "type": "option", "required": false, - "description": "Фильтр по чатам, к которым привязаны напоминания. Доступными считаются чаты, где вы состоите участником, открытые беседы и каналы пространства, а также треды, доступные вам по родительскому чату. Остальные переданные идентификаторы игнорируются без ошибки. Не более 100 идентификаторов. (через запятую)" + "description": "Фильтр по чатам, к которым привязаны напоминания. Доступными считаются чаты, где вы состоите участником, открытые беседы и каналы пространства, а также треды, доступные вам по родительскому чату. Мульти-гостю открытые беседы и каналы доступны, только если он в них участник. Остальные переданные идентификаторы игнорируются без ошибки. Не более 100 идентификаторов. (через запятую)" }, { "name": "performer-ids", @@ -3050,7 +3317,7 @@ "name": "list-tags", "type": "option", "required": false, - "description": "Массив тегов, привязываемых к сотруднику" + "description": "Массив названий тегов, привязываемых к сотруднику. Значение, которое не является массивом непустых строк, игнорируется." }, { "name": "chat-ids", @@ -3280,7 +3547,7 @@ "name": "list-tags", "type": "option", "required": false, - "description": "Массив тегов, привязываемых к сотруднику" + "description": "Массив названий тегов, привязываемых к сотруднику. Список заменяет прежний целиком, пустой снимает все теги. Значение, которое не является массивом непустых строк, игнорируется: теги сотрудника не меняются." }, { "name": "custom-properties", diff --git a/packages/cli/src/data/endpoints.json b/packages/cli/src/data/endpoints.json index 5c38fd988..f92243547 100644 --- a/packages/cli/src/data/endpoints.json +++ b/packages/cli/src/data/endpoints.json @@ -1 +1 @@ -[{"method":"GET","path":"/audit_events","summary":"Журнал аудита событий","scope":"audit_events:read","plan":"corporation","auth":true,"paginated":true,"command":"pachca security list","docLink":"https://dev.pachca.com/api/security/list","describe":"# GET /audit_events — Журнал аудита событий\n\n> **Скоуп:** `audit_events:read`\n\n> **Тариф:** Корпорация\n\n> Пагинация: добавьте `--all` для автоматического обхода страниц\n\n## Параметры\n\n- `start_time` — query: Начальная метка времени, включительно (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Значение, которое не удалось разобрать, фильтр снимает — ответ придёт полным, без ошибки.\n- `end_time` — query: Конечная метка времени, включительно (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Значение, которое не удалось разобрать, фильтр снимает — ответ придёт полным, без ошибки.\n- `event_key` — query: Фильтр по конкретному типу события\n- `actor_id` — query: Идентификатор пользователя, выполнившего действие\n- `actor_type` — query: Тип актора\n- `entity_id` — query: Идентификатор затронутой сущности\n- `entity_type` — query: Тип сущности\n- `limit` — query: Количество записей для возврата\n- `cursor` — query: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n## Эквивалентная команда\n\n```bash\n# Добавьте --all для автоматической пагинации\npachca security list \\\n --start-time=2025-05-01T09:11:00.000Z \\\n --end-time=2025-05-02T09:11:00.000Z \\\n --event-key=user_login \\\n --actor-id=98765 \\\n --actor-type=User \\\n --entity-id=98765 \\\n --entity-type=User \\\n --limit=1 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/security/list\nПолная справка: `pachca api GET /audit_events --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/audit_events","description":"Журнал аудита событий\n\nЧто происходило в пространстве: входы и выходы, изменения ролей и настроек, действия с чатами, сотрудниками и ботами. Записи только читаются — изменить или удалить их нельзя ни через API, ни из интерфейса.\n\nМетод доступен владельцу пространства на тарифе «Корпорация», остальным сотрудникам он отвечает `403`. Само обращение к журналу тоже записывается в журнал — событием `audit_events_accessed`.\n\nСобытия приходят от новых к старым и отбираются фильтрами: период по `start_time` и `end_time`, вид события по `event_key`, инициатор по `actor_id` и `actor_type`. Без фильтров метод отдаёт все события пространства постранично.","parameters":[{"name":"start_time","in":"query","description":"Начальная метка времени, включительно (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Значение, которое не удалось разобрать, фильтр снимает — ответ придёт полным, без ошибки.","required":false,"schema":{"type":"string","format":"date-time","example":"2025-05-01T09:11:00.000Z"},"example":"2025-05-01T09:11:00.000Z","explode":false},{"name":"end_time","in":"query","description":"Конечная метка времени, включительно (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Значение, которое не удалось разобрать, фильтр снимает — ответ придёт полным, без ошибки.","required":false,"schema":{"type":"string","format":"date-time","example":"2025-05-02T09:11:00.000Z"},"example":"2025-05-02T09:11:00.000Z","explode":false},{"name":"event_key","in":"query","description":"Фильтр по конкретному типу события","required":false,"schema":{"type":"string","description":"Тип аудит-события","enum":["user_login","user_logout","user_2fa_fail","user_2fa_success","user_2fa_disabled","user_created","user_deleted","user_role_changed","user_updated","tag_created","tag_deleted","user_added_to_tag","user_removed_from_tag","chat_created","chat_renamed","chat_permission_changed","user_chat_join","user_chat_leave","tag_added_to_chat","tag_removed_from_chat","message_updated","message_deleted","message_created","reaction_created","reaction_deleted","thread_created","access_token_created","access_token_updated","access_token_destroy","kms_encrypt","kms_decrypt","audit_events_accessed","company_chats_accessed","company_bots_accessed","dlp_violation_detected","search_users_api","search_chats_api","search_messages_api","bot_scopes_updated","bot_webhook_settings_updated","bot_token_recreated","bot_deleted","bot_oauth_client_updated","oauth_authorization_granted","oauth_authorization_revoked","oauth_device_authorization_approved","oauth_device_authorization_denied","video_call_started","video_call_finished","video_call_recording_ready","exchange_disabled"],"x-enum-descriptions":{"user_login":"Пользователь успешно вошел в систему","user_logout":"Пользователь вышел из системы","user_2fa_fail":"Неудачная попытка двухфакторной аутентификации","user_2fa_success":"Успешная двухфакторная аутентификация","user_2fa_disabled":"Двухфакторная аутентификация отключена у сотрудника","user_created":"Создана новая учетная запись пользователя","user_deleted":"Учетная запись пользователя удалена","user_role_changed":"Роль пользователя была изменена","user_updated":"Данные пользователя обновлены","tag_created":"Создан новый тег","tag_deleted":"Тег удален","user_added_to_tag":"Пользователь добавлен в тег","user_removed_from_tag":"Пользователь удален из тега","chat_created":"Создан новый чат","chat_renamed":"Чат переименован","chat_permission_changed":"Изменены права доступа к чату","user_chat_join":"Пользователь присоединился к чату","user_chat_leave":"Пользователь покинул чат","tag_added_to_chat":"Тег добавлен в чат","tag_removed_from_chat":"Тег удален из чата","message_updated":"Сообщение отредактировано","message_deleted":"Сообщение удалено","message_created":"Сообщение создано","reaction_created":"Реакция добавлена","reaction_deleted":"Реакция удалена","thread_created":"Тред создан","access_token_created":"Создан новый токен доступа","access_token_updated":"Токен доступа обновлен","access_token_destroy":"Токен доступа удален","kms_encrypt":"Данные зашифрованы","kms_decrypt":"Данные расшифрованы","audit_events_accessed":"Доступ к журналам аудита получен","company_chats_accessed":"Получен список всех чатов пространства","company_bots_accessed":"Получен список всех ботов пространства","dlp_violation_detected":"Срабатывание правила DLP-системы","search_users_api":"Поиск сотрудников через API","search_chats_api":"Поиск чатов через API","search_messages_api":"Поиск сообщений через API","bot_scopes_updated":"Изменены скоупы токена бота","bot_webhook_settings_updated":"Изменены настройки исходящего вебхука бота","bot_token_recreated":"Токен бота перевыпущен (ротация)","bot_deleted":"Бот удалён","bot_oauth_client_updated":"Изменены параметры OAuth-клиента бота","oauth_authorization_granted":"Пользователь выдал OAuth-клиенту доступ к своим данным","oauth_authorization_revoked":"Доступ OAuth-клиента к данным пользователя отозван","oauth_device_authorization_approved":"Сотрудник подтвердил вход приложения с устройства","oauth_device_authorization_denied":"Сотрудник отклонил вход приложения с устройства","video_call_started":"Видеозвонок начат","video_call_finished":"Видеозвонок завершён","video_call_recording_ready":"Запись видеозвонка готова","exchange_disabled":"Отключена интеграция с Exchange"},"example":"user_login","$ref":"#/components/schemas/AuditEventKey"},"example":"user_login","explode":false},{"name":"actor_id","in":"query","description":"Идентификатор пользователя, выполнившего действие","required":false,"schema":{"type":"string","example":"98765"},"example":"98765","explode":false},{"name":"actor_type","in":"query","description":"Тип актора","required":false,"schema":{"type":"string","example":"User"},"example":"User","explode":false},{"name":"entity_id","in":"query","description":"Идентификатор затронутой сущности","required":false,"schema":{"type":"string","example":"98765"},"example":"98765","explode":false},{"name":"entity_type","in":"query","description":"Тип сущности","required":false,"schema":{"type":"string","example":"User"},"example":"User","explode":false},{"name":"limit","in":"query","description":"Количество записей для возврата","required":false,"schema":{"type":"integer","format":"int32","default":50,"example":1,"maximum":50},"example":1,"explode":false},{"name":"cursor","in":"query","description":"Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)","required":false,"schema":{"type":"string","example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9"},"example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9","explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными и пагинацией","required":["data","meta"],"properties":{"data":{"type":"array","items":{"type":"object","description":"Событие аудита","required":["id","created_at","event_key","entity_id","entity_type","actor_id","actor_type","details","ip_address","user_agent"],"properties":{"id":{"type":"string","description":"Уникальный идентификатор события","example":"a1b2c3d4-5e6f-7g8h-9i10-j11k12l13m14"},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания события (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2025-05-15T14:30:00.000Z"},"event_key":{"description":"Ключ типа события","example":"user_login","allOf":[{"type":"string","description":"Тип аудит-события","enum":["user_login","user_logout","user_2fa_fail","user_2fa_success","user_2fa_disabled","user_created","user_deleted","user_role_changed","user_updated","tag_created","tag_deleted","user_added_to_tag","user_removed_from_tag","chat_created","chat_renamed","chat_permission_changed","user_chat_join","user_chat_leave","tag_added_to_chat","tag_removed_from_chat","message_updated","message_deleted","message_created","reaction_created","reaction_deleted","thread_created","access_token_created","access_token_updated","access_token_destroy","kms_encrypt","kms_decrypt","audit_events_accessed","company_chats_accessed","company_bots_accessed","dlp_violation_detected","search_users_api","search_chats_api","search_messages_api","bot_scopes_updated","bot_webhook_settings_updated","bot_token_recreated","bot_deleted","bot_oauth_client_updated","oauth_authorization_granted","oauth_authorization_revoked","oauth_device_authorization_approved","oauth_device_authorization_denied","video_call_started","video_call_finished","video_call_recording_ready","exchange_disabled"],"x-enum-descriptions":{"user_login":"Пользователь успешно вошел в систему","user_logout":"Пользователь вышел из системы","user_2fa_fail":"Неудачная попытка двухфакторной аутентификации","user_2fa_success":"Успешная двухфакторная аутентификация","user_2fa_disabled":"Двухфакторная аутентификация отключена у сотрудника","user_created":"Создана новая учетная запись пользователя","user_deleted":"Учетная запись пользователя удалена","user_role_changed":"Роль пользователя была изменена","user_updated":"Данные пользователя обновлены","tag_created":"Создан новый тег","tag_deleted":"Тег удален","user_added_to_tag":"Пользователь добавлен в тег","user_removed_from_tag":"Пользователь удален из тега","chat_created":"Создан новый чат","chat_renamed":"Чат переименован","chat_permission_changed":"Изменены права доступа к чату","user_chat_join":"Пользователь присоединился к чату","user_chat_leave":"Пользователь покинул чат","tag_added_to_chat":"Тег добавлен в чат","tag_removed_from_chat":"Тег удален из чата","message_updated":"Сообщение отредактировано","message_deleted":"Сообщение удалено","message_created":"Сообщение создано","reaction_created":"Реакция добавлена","reaction_deleted":"Реакция удалена","thread_created":"Тред создан","access_token_created":"Создан новый токен доступа","access_token_updated":"Токен доступа обновлен","access_token_destroy":"Токен доступа удален","kms_encrypt":"Данные зашифрованы","kms_decrypt":"Данные расшифрованы","audit_events_accessed":"Доступ к журналам аудита получен","company_chats_accessed":"Получен список всех чатов пространства","company_bots_accessed":"Получен список всех ботов пространства","dlp_violation_detected":"Срабатывание правила DLP-системы","search_users_api":"Поиск сотрудников через API","search_chats_api":"Поиск чатов через API","search_messages_api":"Поиск сообщений через API","bot_scopes_updated":"Изменены скоупы токена бота","bot_webhook_settings_updated":"Изменены настройки исходящего вебхука бота","bot_token_recreated":"Токен бота перевыпущен (ротация)","bot_deleted":"Бот удалён","bot_oauth_client_updated":"Изменены параметры OAuth-клиента бота","oauth_authorization_granted":"Пользователь выдал OAuth-клиенту доступ к своим данным","oauth_authorization_revoked":"Доступ OAuth-клиента к данным пользователя отозван","oauth_device_authorization_approved":"Сотрудник подтвердил вход приложения с устройства","oauth_device_authorization_denied":"Сотрудник отклонил вход приложения с устройства","video_call_started":"Видеозвонок начат","video_call_finished":"Видеозвонок завершён","video_call_recording_ready":"Запись видеозвонка готова","exchange_disabled":"Отключена интеграция с Exchange"},"$ref":"#/components/schemas/AuditEventKey"}]},"entity_id":{"type":"string","description":"Идентификатор затронутой сущности","example":"98765"},"entity_type":{"type":"string","description":"Тип затронутой сущности","example":"User"},"actor_id":{"type":"string","description":"Идентификатор пользователя, выполнившего действие","example":"98765"},"actor_type":{"type":"string","description":"Тип актора","example":"User"},"details":{"description":"Дополнительные детали события. Структура зависит от значения event_key — см. описания значений поля event_key. Для событий без деталей возвращается пустой объект.","allOf":[{"description":"Дополнительные детали события аудита. Структура зависит от значения event_key.","anyOf":[{"type":"object","description":"Пустые детали. При: user_login, user_logout, user_2fa_fail, user_2fa_success, user_2fa_disabled, user_created, user_deleted, chat_created, message_created, message_updated, message_deleted, reaction_created, reaction_deleted, thread_created, audit_events_accessed, company_chats_accessed, company_bots_accessed, exchange_disabled.","$ref":"#/components/schemas/AuditDetailsEmpty"},{"type":"object","description":"При: user_updated","required":["changed_attrs"],"properties":{"changed_attrs":{"type":"array","description":"Список изменённых полей","items":{"type":"string"}},"context":{"type":"string","description":"Как было выполнено изменение. Значение `sso_login` — профиль обновился автоматически при входе через SSO. Поле отсутствует, если профиль изменили обычным способом."}},"$ref":"#/components/schemas/AuditDetailsUserUpdated"},{"type":"object","description":"При: user_role_changed","required":["new_company_role","previous_company_role","initiator_id"],"properties":{"new_company_role":{"type":"string","description":"Новая роль"},"previous_company_role":{"type":"string","description":"Предыдущая роль"},"initiator_id":{"type":"integer","format":"int32","description":"Идентификатор инициатора"}},"$ref":"#/components/schemas/AuditDetailsRoleChanged"},{"type":"object","description":"При: tag_created, tag_deleted","required":["name"],"properties":{"name":{"type":"string","description":"Название тега"}},"$ref":"#/components/schemas/AuditDetailsTagName"},{"type":"object","description":"При: user_added_to_tag, user_removed_from_tag, user_chat_leave","required":["initiator_id"],"properties":{"initiator_id":{"type":"integer","format":"int32","description":"Идентификатор инициатора действия"}},"$ref":"#/components/schemas/AuditDetailsInitiator"},{"type":"object","description":"При: user_chat_join","required":["inviter_id"],"properties":{"inviter_id":{"type":"integer","format":"int32","description":"Идентификатор пригласившего"}},"$ref":"#/components/schemas/AuditDetailsInviter"},{"type":"object","description":"При: chat_renamed","required":["old_name","new_name"],"properties":{"old_name":{"type":"string","description":"Прежнее название чата"},"new_name":{"type":"string","description":"Новое название чата"}},"$ref":"#/components/schemas/AuditDetailsChatRenamed"},{"type":"object","description":"При: chat_permission_changed","required":["public_access"],"properties":{"public_access":{"type":"boolean","description":"Публичный доступ"}},"$ref":"#/components/schemas/AuditDetailsChatPermission"},{"type":"object","description":"При: tag_added_to_chat","required":["chat_id","tag_name"],"properties":{"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата"},"tag_name":{"type":"string","description":"Название тега"}},"$ref":"#/components/schemas/AuditDetailsTagChat"},{"type":"object","description":"При: tag_removed_from_chat","required":["chat_id"],"properties":{"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата"}},"$ref":"#/components/schemas/AuditDetailsChatId"},{"type":"object","description":"При: access_token_created, access_token_updated, access_token_destroy","required":["scopes"],"properties":{"scopes":{"type":"array","description":"Скоупы токена","items":{"type":"string"}}},"$ref":"#/components/schemas/AuditDetailsTokenScopes"},{"type":"object","description":"При: kms_encrypt, kms_decrypt","required":["chat_id","message_id","reason"],"properties":{"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата"},"message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения"},"reason":{"type":"string","description":"Причина операции"}},"$ref":"#/components/schemas/AuditDetailsKms"},{"type":"object","description":"При: dlp_violation_detected","required":["dlp_rule_id","dlp_rule_name","message_id","chat_id","user_id","action_message","conditions_matched"],"properties":{"dlp_rule_id":{"type":"integer","format":"int32","description":"Идентификатор правила DLP"},"dlp_rule_name":{"type":"string","description":"Название правила DLP"},"message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения"},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата"},"user_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя"},"action_message":{"type":"string","description":"Описание действия. `null`, если у действия правила текст не задан.","nullable":true},"conditions_matched":{"type":"boolean","description":"Результат проверки условий правила (true — условия сработали)"}},"$ref":"#/components/schemas/AuditDetailsDlp"},{"type":"object","description":"При: search_users_api, search_chats_api, search_messages_api","required":["search_type","query_present","cursor_present","limit","filters"],"properties":{"search_type":{"type":"string","description":"Тип поиска"},"query_present":{"type":"boolean","description":"Указан ли поисковый запрос"},"cursor_present":{"type":"boolean","description":"Использован ли курсор"},"limit":{"type":"integer","format":"int32","description":"Количество возвращённых результатов"},"filters":{"type":"object","description":"Применённые фильтры. Возможные ключи зависят от типа поиска: order, sort, created_from, created_to, company_roles (users), active, chat_subtype, personal (chats), chat_ids, user_ids (messages).","additionalProperties":{}}},"$ref":"#/components/schemas/AuditDetailsSearch"},{"type":"object","description":"При: bot_deleted, bot_token_recreated","required":["bot_id","actor_id"],"properties":{"bot_id":{"type":"integer","format":"int32","description":"Идентификатор бота"},"actor_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора.","nullable":true}},"$ref":"#/components/schemas/AuditDetailsBot"},{"type":"object","description":"При: bot_scopes_updated","required":["added_scopes","removed_scopes"],"properties":{"added_scopes":{"type":"array","description":"Скоупы, добавленные токену бота","items":{"type":"string"}},"removed_scopes":{"type":"array","description":"Скоупы, отозванные у токена бота","items":{"type":"string"}}},"$ref":"#/components/schemas/AuditDetailsBotScopes"},{"type":"object","description":"При: bot_webhook_settings_updated","required":["changes"],"properties":{"changes":{"type":"object","description":"Изменённые настройки вебхука. Ключ — имя настройки (outgoing_url, ignore_self_messages, events_history_enabled), значение — объект с полями previous (прежнее значение) и new (новое значение).","additionalProperties":{}}},"$ref":"#/components/schemas/AuditDetailsBotWebhookSettings"},{"type":"object","description":"При: bot_oauth_client_updated","required":["client_id","changes"],"properties":{"client_id":{"type":"string","description":"Идентификатор OAuth-клиента бота"},"changes":{"type":"object","description":"Изменённые параметры клиента. Ключ — имя параметра (confidential, redirect_uris, scopes), значение — объект с полями previous (прежнее значение) и new (новое значение).","additionalProperties":{}}},"$ref":"#/components/schemas/AuditDetailsBotOAuthClient"},{"type":"object","description":"При: oauth_authorization_granted","required":["client_id","scopes"],"properties":{"client_id":{"type":"string","description":"Идентификатор OAuth-клиента, которому выдан доступ"},"scopes":{"type":"array","description":"Скоупы, на которые выдан доступ","items":{"type":"string"}}},"$ref":"#/components/schemas/AuditDetailsOAuthAuthorizationGranted"},{"type":"object","description":"При: oauth_authorization_revoked","required":["client_id","revoked_tokens_count"],"properties":{"client_id":{"type":"string","description":"Идентификатор OAuth-клиента, у которого отозван доступ"},"revoked_tokens_count":{"type":"integer","format":"int32","description":"Количество отозванных токенов"}},"$ref":"#/components/schemas/AuditDetailsOAuthAuthorizationRevoked"},{"type":"object","description":"При: oauth_device_authorization_approved","required":["client_id","scopes"],"properties":{"client_id":{"type":"string","description":"Идентификатор OAuth-клиента, которому разрешён вход"},"scopes":{"type":"array","description":"Скоупы, на которые согласился сотрудник","items":{"type":"string"}}},"$ref":"#/components/schemas/AuditDetailsDeviceAuthorizationApproved"},{"type":"object","description":"При: oauth_device_authorization_denied","required":["client_id","scopes"],"properties":{"client_id":{"type":"string","description":"Идентификатор OAuth-клиента, которому отказано во входе"},"scopes":{"type":"array","description":"Скоупы, которые клиент запрашивал","items":{"type":"string"}}},"$ref":"#/components/schemas/AuditDetailsDeviceAuthorizationDenied"},{"type":"object","description":"При: video_call_started","required":["chat_id","started_message_id"],"properties":{"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором проходит видеозвонок"},"started_message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения о начале звонка. `null`, если такого сообщения нет.","nullable":true}},"$ref":"#/components/schemas/AuditDetailsVideoCallStarted"},{"type":"object","description":"При: video_call_finished","required":["chat_id","started_message_id","duration","max_members_count"],"properties":{"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором проходил видеозвонок"},"started_message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения о начале звонка. `null`, если такого сообщения нет.","nullable":true},"duration":{"type":"integer","format":"int32","description":"Длительность звонка в секундах"},"max_members_count":{"type":"integer","format":"int32","description":"Максимальное число одновременных участников за время звонка"}},"$ref":"#/components/schemas/AuditDetailsVideoCallFinished"},{"type":"object","description":"При: video_call_recording_ready","required":["chat_id","started_message_id","recording_id","file_id","duration","size"],"properties":{"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором проходил видеозвонок"},"started_message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения о начале звонка. `null`, если такого сообщения нет.","nullable":true},"recording_id":{"type":"integer","format":"int32","description":"Идентификатор записи"},"file_id":{"type":"integer","format":"int32","description":"Идентификатор файла записи"},"duration":{"type":"integer","format":"int32","description":"Длительность записи в секундах"},"size":{"type":"integer","format":"int64","description":"Размер файла записи в байтах"}},"$ref":"#/components/schemas/AuditDetailsVideoCallRecording"}],"$ref":"#/components/schemas/AuditEventDetailsUnion"}]},"ip_address":{"type":"string","description":"IP-адрес, с которого было выполнено действие. `null` у событий, записанных без запроса пользователя.","example":"192.168.1.100","nullable":true},"user_agent":{"type":"string","description":"User agent клиента, обрезается до 255 символов. `null` у событий, записанных без запроса пользователя.","example":"Pachca/3.60.0 (co.staply.pachca; build:15; iOS 18.5.0) Alamofire/5.0.0","nullable":true}},"$ref":"#/components/schemas/AuditEvent"}},"meta":{"type":"object","description":"Метаданные пагинации","required":["paginate"],"properties":{"paginate":{"type":"object","description":"Вспомогательная информация","required":["next_page"],"properties":{"next_page":{"type":"string","description":"Курсор пагинации следующей страницы","example":"eyJxZCO2MiwiZGlyIjomSNYjIn3"},"prev_page":{"type":"string","description":"Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка.","example":"eyJxZCO2MiwiZGlyIjoiYXNjIn0"},"has_next":{"type":"boolean","description":"Есть ли ещё данные на следующей странице. На последней странице — `false`.","example":true},"has_prev":{"type":"boolean","description":"Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`.","example":false}}}},"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"audit_events:read","plan":"corporation","scopeRoles":["owner"]},"paginated":true},"docs":"# Журнал аудита событий\n\n**Метод**: `GET`\n\n**Путь**: `/audit_events`\n\n> **Скоуп:** `audit_events:read`\n\n> **Внимание:** Доступно только на тарифе **Корпорация**\n\nЧто происходило в пространстве: входы и выходы, изменения ролей и настроек, действия с чатами, сотрудниками и ботами. Записи только читаются — изменить или удалить их нельзя ни через API, ни из интерфейса.\n\nМетод доступен владельцу пространства на тарифе «Корпорация», остальным сотрудникам он отвечает `403`. Само обращение к журналу тоже записывается в журнал — событием `audit_events_accessed`.\n\nСобытия приходят от новых к старым и отбираются фильтрами: период по `start_time` и `end_time`, вид события по `event_key`, инициатор по `actor_id` и `actor_type`. Без фильтров метод отдаёт все события пространства постранично.\n\n## Параметры\n\n### Query параметры\n\n- `start_time: date-time` — Начальная метка времени, включительно (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Значение, которое не удалось разобрать, фильтр снимает — ответ придёт полным, без ошибки.\n- `end_time: date-time` — Конечная метка времени, включительно (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Значение, которое не удалось разобрать, фильтр снимает — ответ придёт полным, без ошибки.\n- `event_key: string` — Фильтр по конкретному типу события\n Значения: `user_login`, `user_logout`, `user_2fa_fail`, `user_2fa_success`, `user_2fa_disabled`, `user_created`, `user_deleted`, `user_role_changed`, `user_updated`, `tag_created`, `tag_deleted`, `user_added_to_tag`, `user_removed_from_tag`, `chat_created`, `chat_renamed`, `chat_permission_changed`, `user_chat_join`, `user_chat_leave`, `tag_added_to_chat`, `tag_removed_from_chat`, `message_updated`, `message_deleted`, `message_created`, `reaction_created`, `reaction_deleted`, `thread_created`, `access_token_created`, `access_token_updated`, `access_token_destroy`, `kms_encrypt`, `kms_decrypt`, `audit_events_accessed`, `company_chats_accessed`, `company_bots_accessed`, `dlp_violation_detected`, `search_users_api`, `search_chats_api`, `search_messages_api`, `bot_scopes_updated`, `bot_webhook_settings_updated`, `bot_token_recreated`, `bot_deleted`, `bot_oauth_client_updated`, `oauth_authorization_granted`, `oauth_authorization_revoked`, `oauth_device_authorization_approved`, `oauth_device_authorization_denied`, `video_call_started`, `video_call_finished`, `video_call_recording_ready`, `exchange_disabled`\n- `actor_id: string` — Идентификатор пользователя, выполнившего действие\n- `actor_type: string` — Тип актора\n- `entity_id: string` — Идентификатор затронутой сущности\n- `entity_type: string` — Тип сущности\n- `limit: integer, int32` (default: 50) — Количество записей для возврата\n- `cursor: string` — Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n\n## Пример запроса\n\n```bash\n# Для получения следующей страницы используйте cursor из meta.paginate.next_page\ncurl \"https://api.pachca.com/api/shared/v1/audit_events?start_time=2025-05-01T09:11:00.000Z&end_time=2025-05-02T09:11:00.000Z&event_key=user_login&actor_id=98765&actor_type=User&entity_id=98765&entity_type=User&limit=1\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: array of object` (required)\n - `id: string` (required) — Уникальный идентификатор события. Пример: `\"a1b2c3d4-5e6f-7g8h-9i10-j11k12l13m14\"`\n - `created_at: date-time` (required) — Дата и время создания события (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2025-05-15T14:30:00.000Z\"`\n - `event_key: string` (required) — Ключ типа события\n Значения: `user_login` — Пользователь успешно вошел в систему, `user_logout` — Пользователь вышел из системы, `user_2fa_fail` — Неудачная попытка двухфакторной аутентификации, `user_2fa_success` — Успешная двухфакторная аутентификация, `user_2fa_disabled` — Двухфакторная аутентификация отключена у сотрудника, `user_created` — Создана новая учетная запись пользователя, `user_deleted` — Учетная запись пользователя удалена, `user_role_changed` — Роль пользователя была изменена, `user_updated` — Данные пользователя обновлены, `tag_created` — Создан новый тег, `tag_deleted` — Тег удален, `user_added_to_tag` — Пользователь добавлен в тег, `user_removed_from_tag` — Пользователь удален из тега, `chat_created` — Создан новый чат, `chat_renamed` — Чат переименован, `chat_permission_changed` — Изменены права доступа к чату, `user_chat_join` — Пользователь присоединился к чату, `user_chat_leave` — Пользователь покинул чат, `tag_added_to_chat` — Тег добавлен в чат, `tag_removed_from_chat` — Тег удален из чата, `message_updated` — Сообщение отредактировано, `message_deleted` — Сообщение удалено, `message_created` — Сообщение создано, `reaction_created` — Реакция добавлена, `reaction_deleted` — Реакция удалена, `thread_created` — Тред создан, `access_token_created` — Создан новый токен доступа, `access_token_updated` — Токен доступа обновлен, `access_token_destroy` — Токен доступа удален, `kms_encrypt` — Данные зашифрованы, `kms_decrypt` — Данные расшифрованы, `audit_events_accessed` — Доступ к журналам аудита получен, `company_chats_accessed` — Получен список всех чатов пространства, `company_bots_accessed` — Получен список всех ботов пространства, `dlp_violation_detected` — Срабатывание правила DLP-системы, `search_users_api` — Поиск сотрудников через API, `search_chats_api` — Поиск чатов через API, `search_messages_api` — Поиск сообщений через API, `bot_scopes_updated` — Изменены скоупы токена бота, `bot_webhook_settings_updated` — Изменены настройки исходящего вебхука бота, `bot_token_recreated` — Токен бота перевыпущен (ротация), `bot_deleted` — Бот удалён, `bot_oauth_client_updated` — Изменены параметры OAuth-клиента бота, `oauth_authorization_granted` — Пользователь выдал OAuth-клиенту доступ к своим данным, `oauth_authorization_revoked` — Доступ OAuth-клиента к данным пользователя отозван, `oauth_device_authorization_approved` — Сотрудник подтвердил вход приложения с устройства, `oauth_device_authorization_denied` — Сотрудник отклонил вход приложения с устройства, `video_call_started` — Видеозвонок начат, `video_call_finished` — Видеозвонок завершён, `video_call_recording_ready` — Запись видеозвонка готова, `exchange_disabled` — Отключена интеграция с Exchange\n - `entity_id: string` (required) — Идентификатор затронутой сущности. Пример: `\"98765\"`\n - `entity_type: string` (required) — Тип затронутой сущности. Пример: `\"User\"`\n - `actor_id: string` (required) — Идентификатор пользователя, выполнившего действие. Пример: `\"98765\"`\n - `actor_type: string` (required) — Тип актора. Пример: `\"User\"`\n - `details: anyOf` (required) — Дополнительные детали события. Структура зависит от значения event_key — см. описания значений поля event_key. Для событий без деталей возвращается пустой объект.\n **Возможные варианты:**\n\n - **AuditDetailsEmpty**: Пустые детали. При: user_login, user_logout, user_2fa_fail, user_2fa_success, user_2fa_disabled, user_created, user_deleted, chat_created, message_created, message_updated, message_deleted, reaction_created, reaction_deleted, thread_created, audit_events_accessed, company_chats_accessed, company_bots_accessed, exchange_disabled.\n - **AuditDetailsUserUpdated**: При: user_updated\n - `changed_attrs: array of string` (required) — Список изменённых полей\n - `context: string` — Как было выполнено изменение. Значение `sso_login` — профиль обновился автоматически при входе через SSO. Поле отсутствует, если профиль изменили обычным способом.\n - **AuditDetailsRoleChanged**: При: user_role_changed\n - `new_company_role: string` (required) — Новая роль\n - `previous_company_role: string` (required) — Предыдущая роль\n - `initiator_id: integer, int32` (required) — Идентификатор инициатора\n - **AuditDetailsTagName**: При: tag_created, tag_deleted\n - `name: string` (required) — Название тега\n - **AuditDetailsInitiator**: При: user_added_to_tag, user_removed_from_tag, user_chat_leave\n - `initiator_id: integer, int32` (required) — Идентификатор инициатора действия\n - **AuditDetailsInviter**: При: user_chat_join\n - `inviter_id: integer, int32` (required) — Идентификатор пригласившего\n - **AuditDetailsChatRenamed**: При: chat_renamed\n - `old_name: string` (required) — Прежнее название чата\n - `new_name: string` (required) — Новое название чата\n - **AuditDetailsChatPermission**: При: chat_permission_changed\n - `public_access: boolean` (required) — Публичный доступ\n - **AuditDetailsTagChat**: При: tag_added_to_chat\n - `chat_id: integer, int32` (required) — Идентификатор чата\n - `tag_name: string` (required) — Название тега\n - **AuditDetailsChatId**: При: tag_removed_from_chat\n - `chat_id: integer, int32` (required) — Идентификатор чата\n - **AuditDetailsTokenScopes**: При: access_token_created, access_token_updated, access_token_destroy\n - `scopes: array of string` (required) — Скоупы токена\n - **AuditDetailsKms**: При: kms_encrypt, kms_decrypt\n - `chat_id: integer, int32` (required) — Идентификатор чата\n - `message_id: integer, int32` (required) — Идентификатор сообщения\n - `reason: string` (required) — Причина операции\n - **AuditDetailsDlp**: При: dlp_violation_detected\n - `dlp_rule_id: integer, int32` (required) — Идентификатор правила DLP\n - `dlp_rule_name: string` (required) — Название правила DLP\n - `message_id: integer, int32` (required) — Идентификатор сообщения\n - `chat_id: integer, int32` (required) — Идентификатор чата\n - `user_id: integer, int32` (required) — Идентификатор пользователя\n - `action_message: string` (required, nullable) — Описание действия. `null`, если у действия правила текст не задан.\n - `conditions_matched: boolean` (required) — Результат проверки условий правила (true — условия сработали)\n - **AuditDetailsSearch**: При: search_users_api, search_chats_api, search_messages_api\n - `search_type: string` (required) — Тип поиска\n - `query_present: boolean` (required) — Указан ли поисковый запрос\n - `cursor_present: boolean` (required) — Использован ли курсор\n - `limit: integer, int32` (required) — Количество возвращённых результатов\n - `filters: Record` (required) — Применённые фильтры. Возможные ключи зависят от типа поиска: order, sort, created_from, created_to, company_roles (users), active, chat_subtype, personal (chats), chat_ids, user_ids (messages).\n **Структура значений Record:**\n - Тип значения: `any`\n - **AuditDetailsBot**: При: bot_deleted, bot_token_recreated\n - `bot_id: integer, int32` (required) — Идентификатор бота\n - `actor_id: integer, int32` (required, nullable) — Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора.\n - **AuditDetailsBotScopes**: При: bot_scopes_updated\n - `added_scopes: array of string` (required) — Скоупы, добавленные токену бота\n - `removed_scopes: array of string` (required) — Скоупы, отозванные у токена бота\n - **AuditDetailsBotWebhookSettings**: При: bot_webhook_settings_updated\n - `changes: Record` (required) — Изменённые настройки вебхука. Ключ — имя настройки (outgoing_url, ignore_self_messages, events_history_enabled), значение — объект с полями previous (прежнее значение) и new (новое значение).\n **Структура значений Record:**\n - Тип значения: `any`\n - **AuditDetailsBotOAuthClient**: При: bot_oauth_client_updated\n - `client_id: string` (required) — Идентификатор OAuth-клиента бота\n - `changes: Record` (required) — Изменённые параметры клиента. Ключ — имя параметра (confidential, redirect_uris, scopes), значение — объект с полями previous (прежнее значение) и new (новое значение).\n **Структура значений Record:**\n - Тип значения: `any`\n - **AuditDetailsOAuthAuthorizationGranted**: При: oauth_authorization_granted\n - `client_id: string` (required) — Идентификатор OAuth-клиента, которому выдан доступ\n - `scopes: array of string` (required) — Скоупы, на которые выдан доступ\n - **AuditDetailsOAuthAuthorizationRevoked**: При: oauth_authorization_revoked\n - `client_id: string` (required) — Идентификатор OAuth-клиента, у которого отозван доступ\n - `revoked_tokens_count: integer, int32` (required) — Количество отозванных токенов\n - **AuditDetailsDeviceAuthorizationApproved**: При: oauth_device_authorization_approved\n - `client_id: string` (required) — Идентификатор OAuth-клиента, которому разрешён вход\n - `scopes: array of string` (required) — Скоупы, на которые согласился сотрудник\n - **AuditDetailsDeviceAuthorizationDenied**: При: oauth_device_authorization_denied\n - `client_id: string` (required) — Идентификатор OAuth-клиента, которому отказано во входе\n - `scopes: array of string` (required) — Скоупы, которые клиент запрашивал\n - **AuditDetailsVideoCallStarted**: При: video_call_started\n - `chat_id: integer, int32` (required) — Идентификатор чата, в котором проходит видеозвонок\n - `started_message_id: integer, int32` (required, nullable) — Идентификатор сообщения о начале звонка. `null`, если такого сообщения нет.\n - **AuditDetailsVideoCallFinished**: При: video_call_finished\n - `chat_id: integer, int32` (required) — Идентификатор чата, в котором проходил видеозвонок\n - `started_message_id: integer, int32` (required, nullable) — Идентификатор сообщения о начале звонка. `null`, если такого сообщения нет.\n - `duration: integer, int32` (required) — Длительность звонка в секундах\n - `max_members_count: integer, int32` (required) — Максимальное число одновременных участников за время звонка\n - **AuditDetailsVideoCallRecording**: При: video_call_recording_ready\n - `chat_id: integer, int32` (required) — Идентификатор чата, в котором проходил видеозвонок\n - `started_message_id: integer, int32` (required, nullable) — Идентификатор сообщения о начале звонка. `null`, если такого сообщения нет.\n - `recording_id: integer, int32` (required) — Идентификатор записи\n - `file_id: integer, int32` (required) — Идентификатор файла записи\n - `duration: integer, int32` (required) — Длительность записи в секундах\n - `size: integer, int64` (required) — Размер файла записи в байтах\n - `ip_address: string` (required, nullable) — IP-адрес, с которого было выполнено действие. `null` у событий, записанных без запроса пользователя. Пример: `\"192.168.1.100\"`\n - `user_agent: string` (required, nullable) — User agent клиента, обрезается до 255 символов. `null` у событий, записанных без запроса пользователя. Пример: `\"Pachca/3.60.0 (co.staply.pachca; build:15; iOS 18.5.0) Alamofire/5.0.0\"`\n- `meta: object` (required) — Метаданные пагинации\n - `paginate: object` (required) — Вспомогательная информация\n - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `\"eyJxZCO2MiwiZGlyIjomSNYjIn3\"`\n - `prev_page: string` — Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка. Пример: `\"eyJxZCO2MiwiZGlyIjoiYXNjIn0\"`\n - `has_next: boolean` — Есть ли ещё данные на следующей странице. На последней странице — `false`. Пример: `true`\n - `has_prev: boolean` — Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`. Пример: `false`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": [\n {\n \"id\": \"a1b2c3d4-5e6f-7g8h-9i10-j11k12l13m14\",\n \"created_at\": \"2025-05-15T14:30:00.000Z\",\n \"event_key\": \"user_login\",\n \"entity_id\": \"98765\",\n \"entity_type\": \"User\",\n \"actor_id\": \"98765\",\n \"actor_type\": \"User\",\n \"details\": null,\n \"ip_address\": \"192.168.1.100\",\n \"user_agent\": \"Pachca/3.60.0 (co.staply.pachca; build:15; iOS 18.5.0) Alamofire/5.0.0\"\n }\n ],\n \"meta\": {\n \"paginate\": {\n \"next_page\": \"eyJxZCO2MiwiZGlyIjomSNYjIn3\",\n \"prev_page\": \"eyJxZCO2MiwiZGlyIjoiYXNjIn0\",\n \"has_next\": true,\n \"has_prev\": false\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"POST","path":"/bot/recreate_token","summary":"Ротация собственного токена бота","scope":"bot_self:write","plan":null,"auth":true,"paginated":false,"command":"pachca bots recreate-token-self","docLink":"https://dev.pachca.com/api/bots/recreate-token-self","describe":"# POST /bot/recreate_token — Ротация собственного токена бота\n\n> **Скоуп:** `bot_self:write`\n\n## Эквивалентная команда\n\n```bash\npachca bots recreate-token-self \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/bots/recreate-token-self\nПолная справка: `pachca api POST /bot/recreate_token --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/bot/recreate_token","description":"Ротация собственного токена бота\n\nМетод позволяет боту сгенерировать себе новый `access_token` своим же токеном — без участия администратора и без знания собственного `id`.\n\nРотируется тот самый токен, которым сделан запрос, и он инвалидируется сразу.\n\nНовый токен возвращается в ответе один раз — обязательно сохраните его, иначе бот потеряет доступ к API. Скоупы переносятся с прежнего токена.","parameters":[],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Параметры созданного бота","required":["id","webhook","access_token"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор бота (совпадает с `user_id` бота)","example":1738816},"webhook":{"description":"Объект параметров вебхука","allOf":[{"type":"object","description":"Параметры вебхука бота","required":["name","nickname","outgoing_url","events","trigger_on","commands","scopes","template","template_engine","challenge_key","link_preview_enabled","ignore_self_messages","events_history_enabled","single_chat","can_edit","who_can_add"],"properties":{"name":{"type":"string","description":"Имя бота","example":"Бот задач","maxLength":255},"nickname":{"type":"string","description":"Никнейм бота","example":"tasks_bot","maxLength":255},"outgoing_url":{"type":"string","description":"URL исходящего вебхука. `null`, если исходящий вебхук у бота не настроен.","example":"https://www.website.com/tasks/new","nullable":true},"events":{"type":"array","description":"События, на которые подписан бот","example":["message_new"],"items":{"type":"string","description":"Событие исходящего вебхука бота","enum":["message_new","message_update","message_delete","reaction_new","reaction_delete","button_click","message_link_shared","chat_member_add","chat_member_remove","company_member_invite","company_member_confirm","company_member_suspend","company_member_activate","company_member_delete","company_member_update","video_call_started","video_call_finished","video_call_recording_ready"],"x-enum-descriptions":{"message_new":"Новое сообщение","message_update":"Сообщение отредактировано","message_delete":"Сообщение удалено","reaction_new":"Добавлена реакция","reaction_delete":"Реакция удалена","button_click":"Нажата кнопка","message_link_shared":"В сообщении отправлена ссылка (для unfurl)","chat_member_add":"Участник добавлен в чат","chat_member_remove":"Участник удалён из чата","company_member_invite":"Сотрудник приглашён в компанию","company_member_confirm":"Сотрудник подтвердил приглашение","company_member_suspend":"Сотрудник деактивирован","company_member_activate":"Сотрудник активирован","company_member_delete":"Сотрудник удалён из компании","company_member_update":"Данные сотрудника изменены","video_call_started":"Видеозвонок начался","video_call_finished":"Видеозвонок завершился","video_call_recording_ready":"Запись видеозвонка готова"},"$ref":"#/components/schemas/BotEventName"}},"trigger_on":{"description":"Условие срабатывания исходящего вебхука","example":"commands","allOf":[{"type":"string","description":"Условие срабатывания исходящего вебхука бота","enum":["commands","all_messages","unfurl"],"x-enum-descriptions":{"commands":"Только на команды (триггер-слова) из commands","all_messages":"На все сообщения в чатах, где есть бот","unfurl":"На развёртывание ссылок (link previews)"},"$ref":"#/components/schemas/BotTriggerOn"}]},"commands":{"type":"array","description":"Команды бота (триггер-слова)","example":["/task"],"items":{"type":"string"}},"scopes":{"type":"array","description":"Скоупы (права доступа) токена бота. Набор по умолчанию шире того, что можно назначить явно, поэтому здесь могут встречаться значения, недоступные для явной установки.","example":["messages:create"],"items":{"type":"string"}},"template":{"type":"string","description":"Шаблон форматирования входящего вебхука. `null`, если не задан.","example":"Заказ от {{ client }} на сумму {{ amount }} ₽","nullable":true},"template_engine":{"description":"Шаблонизатор для обработки шаблона входящего вебхука","example":"liquid","allOf":[{"type":"string","description":"Шаблонизатор для форматирования входящих вебхуков","enum":["liquid","mustache"],"x-enum-descriptions":{"liquid":"Liquid — условия, циклы и фильтры","mustache":"Mustache — простая подстановка без логики"},"$ref":"#/components/schemas/BotTemplateEngine"}]},"challenge_key":{"type":"string","description":"Название поля проверки для верификации входящего вебхука. `null`, если не задано.","example":"challenge","nullable":true},"link_preview_enabled":{"type":"boolean","description":"Показывать превью ссылок в сообщениях входящего вебхука","example":true},"ignore_self_messages":{"type":"boolean","description":"Игнорировать входящие сообщения, отправленные самим ботом","example":false},"events_history_enabled":{"type":"boolean","description":"Сохранять историю событий бота для последующего получения через метод истории событий","example":false},"single_chat":{"type":"boolean","description":"Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят.","example":false},"can_edit":{"type":"array","description":"Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель.","example":["admin"],"items":{"type":"string","description":"Роль, которой разрешено редактировать настройки бота","enum":["admin","chat_owners"],"x-enum-descriptions":{"admin":"Администраторы компании","chat_owners":"Владельцы чатов, в которые добавлен бот"},"$ref":"#/components/schemas/BotCanEdit"}},"who_can_add":{"description":"Кто может добавлять бота в чаты","example":"creator","allOf":[{"type":"string","description":"Кто может добавлять бота в чаты","enum":["creator","creator_admin","creator_admin_user","anyone"],"x-enum-descriptions":{"creator":"Только создатель бота","creator_admin":"Создатель и администраторы компании","creator_admin_user":"Создатель, администраторы и участники компании","anyone":"Любой пользователь, в том числе гости"},"$ref":"#/components/schemas/BotWhoCanAdd"}]}},"$ref":"#/components/schemas/BotWebhook"}]},"access_token":{"type":"string","description":"Токен доступа бота. Возвращается при создании бота и при ротации токена.","example":"bm90X2FfcmVhbF90b2tlbg"}},"$ref":"#/components/schemas/BotCreateResponse"}}},"example":{"data":{"id":1738816,"webhook":{"name":"Бот задач","nickname":"tasks_bot","outgoing_url":"https://www.website.com/tasks/new","events":["message_new"],"trigger_on":"commands","commands":["/task"],"scopes":["messages:create"],"template":"Заказ от {{ client }} на сумму {{ amount }} ₽","template_engine":"liquid","challenge_key":"challenge","link_preview_enabled":true,"ignore_self_messages":false,"events_history_enabled":false,"single_chat":false,"can_edit":["admin"],"who_can_add":"creator"},"access_token":"bm90X2FfcmVhbF90b2tlbg"}}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"bot_self:write","scopeRoles":["bot"]},"paginated":false},"docs":"# Ротация собственного токена бота\n\n**Метод**: `POST`\n\n**Путь**: `/bot/recreate_token`\n\n> **Скоуп:** `bot_self:write`\n\nМетод позволяет боту сгенерировать себе новый `access_token` своим же токеном — без участия администратора и без знания собственного `id`.\n\nРотируется тот самый токен, которым сделан запрос, и он инвалидируется сразу.\n\nНовый токен возвращается в ответе один раз — обязательно сохраните его, иначе бот потеряет доступ к API. Скоупы переносятся с прежнего токена.\n\n## Пример запроса\n\n```bash\ncurl -X POST \"https://api.pachca.com/api/shared/v1/bot/recreate_token\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Параметры созданного бота\n - `id: integer, int32` (required) — Идентификатор бота (совпадает с `user_id` бота). Пример: `1738816`\n - `webhook: object` (required) — Объект параметров вебхука\n - `name: string` (required, max length: 255) — Имя бота. Пример: `\"Бот задач\"`\n - `nickname: string` (required, max length: 255) — Никнейм бота. Пример: `\"tasks_bot\"`\n - `outgoing_url: string` (required, nullable) — URL исходящего вебхука. `null`, если исходящий вебхук у бота не настроен. Пример: `\"https://www.website.com/tasks/new\"`\n - `events: array of string` (required) — События, на которые подписан бот. Пример: `[\"message_new\"]`\n - `trigger_on: string` (required) — Условие срабатывания исходящего вебхука\n Значения: `commands` — Только на команды (триггер-слова) из commands, `all_messages` — На все сообщения в чатах, где есть бот, `unfurl` — На развёртывание ссылок (link previews)\n - `commands: array of string` (required) — Команды бота (триггер-слова). Пример: `[\"/task\"]`\n - `scopes: array of string` (required) — Скоупы (права доступа) токена бота. Набор по умолчанию шире того, что можно назначить явно, поэтому здесь могут встречаться значения, недоступные для явной установки. Пример: `[\"messages:create\"]`\n - `template: string` (required, nullable) — Шаблон форматирования входящего вебхука. `null`, если не задан. Пример: `\"Заказ от {{ client }} на сумму {{ amount }} ₽\"`\n - `template_engine: string` (required) — Шаблонизатор для обработки шаблона входящего вебхука\n Значения: `liquid` — Liquid — условия, циклы и фильтры, `mustache` — Mustache — простая подстановка без логики\n - `challenge_key: string` (required, nullable) — Название поля проверки для верификации входящего вебхука. `null`, если не задано. Пример: `\"challenge\"`\n - `link_preview_enabled: boolean` (required) — Показывать превью ссылок в сообщениях входящего вебхука. Пример: `true`\n - `ignore_self_messages: boolean` (required) — Игнорировать входящие сообщения, отправленные самим ботом. Пример: `false`\n - `events_history_enabled: boolean` (required) — Сохранять историю событий бота для последующего получения через метод истории событий. Пример: `false`\n - `single_chat: boolean` (required) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false`\n - `can_edit: array of string` (required) — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `[\"admin\"]`\n - `who_can_add: string` (required) — Кто может добавлять бота в чаты\n Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Любой пользователь, в том числе гости\n - `access_token: string` (required) — Токен доступа бота. Возвращается при создании бота и при ротации токена. Пример: `\"bm90X2FfcmVhbF90b2tlbg\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 1738816,\n \"webhook\": {\n \"name\": \"Бот задач\",\n \"nickname\": \"tasks_bot\",\n \"outgoing_url\": \"https://www.website.com/tasks/new\",\n \"events\": [\n \"message_new\"\n ],\n \"trigger_on\": \"commands\",\n \"commands\": [\n \"/task\"\n ],\n \"scopes\": [\n \"messages:create\"\n ],\n \"template\": \"Заказ от {{ client }} на сумму {{ amount }} ₽\",\n \"template_engine\": \"liquid\",\n \"challenge_key\": \"challenge\",\n \"link_preview_enabled\": true,\n \"ignore_self_messages\": false,\n \"events_history_enabled\": false,\n \"single_chat\": false,\n \"can_edit\": [\n \"admin\"\n ],\n \"who_can_add\": \"creator\"\n },\n \"access_token\": \"bm90X2FfcmVhbF90b2tlbg\"\n }\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"PUT","path":"/bot/webhook","summary":"Саморегистрация вебхука бота","scope":"bot_self:webhook:write","plan":null,"auth":true,"paginated":false,"command":"pachca bots update-webhook","docLink":"https://dev.pachca.com/api/bots/update-webhook","describe":"# PUT /bot/webhook — Саморегистрация вебхука бота\n\n> **Скоуп:** `bot_self:webhook:write`\n\n## Тело запроса\n\n- `webhook: object` (required) — Объект параметров вебхука\n - `outgoing_url: string` (required) — URL исходящего вебхука. Пустая строка отключает вебхук.\n\n## Эквивалентная команда\n\n```bash\npachca bots update-webhook \\\n --outgoing-url=https://www.website.com/tasks/new \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/bots/update-webhook\nПолная справка: `pachca api PUT /bot/webhook --docs` · схема: `--spec`\n","spec":{"method":"PUT","path":"/bot/webhook","description":"Саморегистрация вебхука бота\n\nМетод позволяет боту самостоятельно изменить `URL` своего исходящего вебхука своим же токеном — без участия администратора и без знания собственного `id`. Меняется вебхук того бота, которому принадлежит токен. Чтобы отключить вебхук, передайте пустую строку в `outgoing_url`.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на саморегистрацию вебхука бота","required":["webhook"],"properties":{"webhook":{"type":"object","description":"Объект параметров вебхука","required":["outgoing_url"],"properties":{"outgoing_url":{"type":"string","description":"URL исходящего вебхука. Пустая строка отключает вебхук.","example":"https://www.website.com/tasks/new"}}}},"$ref":"#/components/schemas/BotWebhookSelfUpdateRequest"},"example":{"webhook":{"outgoing_url":"https://www.website.com/tasks/new"}}}}},"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Параметры бота","required":["id","webhook"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор бота (совпадает с `user_id` бота)","example":1738816},"webhook":{"description":"Объект параметров вебхука","allOf":[{"type":"object","description":"Параметры вебхука бота","required":["name","nickname","outgoing_url","events","trigger_on","commands","scopes","template","template_engine","challenge_key","link_preview_enabled","ignore_self_messages","events_history_enabled","single_chat","can_edit","who_can_add"],"properties":{"name":{"type":"string","description":"Имя бота","example":"Бот задач","maxLength":255},"nickname":{"type":"string","description":"Никнейм бота","example":"tasks_bot","maxLength":255},"outgoing_url":{"type":"string","description":"URL исходящего вебхука. `null`, если исходящий вебхук у бота не настроен.","example":"https://www.website.com/tasks/new","nullable":true},"events":{"type":"array","description":"События, на которые подписан бот","example":["message_new"],"items":{"type":"string","description":"Событие исходящего вебхука бота","enum":["message_new","message_update","message_delete","reaction_new","reaction_delete","button_click","message_link_shared","chat_member_add","chat_member_remove","company_member_invite","company_member_confirm","company_member_suspend","company_member_activate","company_member_delete","company_member_update","video_call_started","video_call_finished","video_call_recording_ready"],"x-enum-descriptions":{"message_new":"Новое сообщение","message_update":"Сообщение отредактировано","message_delete":"Сообщение удалено","reaction_new":"Добавлена реакция","reaction_delete":"Реакция удалена","button_click":"Нажата кнопка","message_link_shared":"В сообщении отправлена ссылка (для unfurl)","chat_member_add":"Участник добавлен в чат","chat_member_remove":"Участник удалён из чата","company_member_invite":"Сотрудник приглашён в компанию","company_member_confirm":"Сотрудник подтвердил приглашение","company_member_suspend":"Сотрудник деактивирован","company_member_activate":"Сотрудник активирован","company_member_delete":"Сотрудник удалён из компании","company_member_update":"Данные сотрудника изменены","video_call_started":"Видеозвонок начался","video_call_finished":"Видеозвонок завершился","video_call_recording_ready":"Запись видеозвонка готова"},"$ref":"#/components/schemas/BotEventName"}},"trigger_on":{"description":"Условие срабатывания исходящего вебхука","example":"commands","allOf":[{"type":"string","description":"Условие срабатывания исходящего вебхука бота","enum":["commands","all_messages","unfurl"],"x-enum-descriptions":{"commands":"Только на команды (триггер-слова) из commands","all_messages":"На все сообщения в чатах, где есть бот","unfurl":"На развёртывание ссылок (link previews)"},"$ref":"#/components/schemas/BotTriggerOn"}]},"commands":{"type":"array","description":"Команды бота (триггер-слова)","example":["/task"],"items":{"type":"string"}},"scopes":{"type":"array","description":"Скоупы (права доступа) токена бота. Набор по умолчанию шире того, что можно назначить явно, поэтому здесь могут встречаться значения, недоступные для явной установки.","example":["messages:create"],"items":{"type":"string"}},"template":{"type":"string","description":"Шаблон форматирования входящего вебхука. `null`, если не задан.","example":"Заказ от {{ client }} на сумму {{ amount }} ₽","nullable":true},"template_engine":{"description":"Шаблонизатор для обработки шаблона входящего вебхука","example":"liquid","allOf":[{"type":"string","description":"Шаблонизатор для форматирования входящих вебхуков","enum":["liquid","mustache"],"x-enum-descriptions":{"liquid":"Liquid — условия, циклы и фильтры","mustache":"Mustache — простая подстановка без логики"},"$ref":"#/components/schemas/BotTemplateEngine"}]},"challenge_key":{"type":"string","description":"Название поля проверки для верификации входящего вебхука. `null`, если не задано.","example":"challenge","nullable":true},"link_preview_enabled":{"type":"boolean","description":"Показывать превью ссылок в сообщениях входящего вебхука","example":true},"ignore_self_messages":{"type":"boolean","description":"Игнорировать входящие сообщения, отправленные самим ботом","example":false},"events_history_enabled":{"type":"boolean","description":"Сохранять историю событий бота для последующего получения через метод истории событий","example":false},"single_chat":{"type":"boolean","description":"Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят.","example":false},"can_edit":{"type":"array","description":"Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель.","example":["admin"],"items":{"type":"string","description":"Роль, которой разрешено редактировать настройки бота","enum":["admin","chat_owners"],"x-enum-descriptions":{"admin":"Администраторы компании","chat_owners":"Владельцы чатов, в которые добавлен бот"},"$ref":"#/components/schemas/BotCanEdit"}},"who_can_add":{"description":"Кто может добавлять бота в чаты","example":"creator","allOf":[{"type":"string","description":"Кто может добавлять бота в чаты","enum":["creator","creator_admin","creator_admin_user","anyone"],"x-enum-descriptions":{"creator":"Только создатель бота","creator_admin":"Создатель и администраторы компании","creator_admin_user":"Создатель, администраторы и участники компании","anyone":"Любой пользователь, в том числе гости"},"$ref":"#/components/schemas/BotWhoCanAdd"}]}},"$ref":"#/components/schemas/BotWebhook"}]}},"$ref":"#/components/schemas/BotResponse"}}},"example":{"data":{"id":1738816,"webhook":{"name":"Бот задач","nickname":"tasks_bot","outgoing_url":"https://www.website.com/tasks/new","events":["message_new"],"trigger_on":"commands","commands":["/task"],"scopes":["messages:create"],"template":"Заказ от {{ client }} на сумму {{ amount }} ₽","template_engine":"liquid","challenge_key":"challenge","link_preview_enabled":true,"ignore_self_messages":false,"events_history_enabled":false,"single_chat":false,"can_edit":["admin"],"who_can_add":"creator"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"bot_self:webhook:write","scopeRoles":["bot"]},"paginated":false},"docs":"# Саморегистрация вебхука бота\n\n**Метод**: `PUT`\n\n**Путь**: `/bot/webhook`\n\n> **Скоуп:** `bot_self:webhook:write`\n\nМетод позволяет боту самостоятельно изменить `URL` своего исходящего вебхука своим же токеном — без участия администратора и без знания собственного `id`. Меняется вебхук того бота, которому принадлежит токен. Чтобы отключить вебхук, передайте пустую строку в `outgoing_url`.\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `webhook: object` (required) — Объект параметров вебхука\n - `outgoing_url: string` (required) — URL исходящего вебхука. Пустая строка отключает вебхук. Пример: `\"https://www.website.com/tasks/new\"`\n\n### Пример\n\n```json\n{\n \"webhook\": {\n \"outgoing_url\": \"https://www.website.com/tasks/new\"\n }\n}\n```\n\n## Пример запроса\n\n```bash\ncurl -X PUT \"https://api.pachca.com/api/shared/v1/bot/webhook\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"webhook\": {\n \"outgoing_url\": \"https://www.website.com/tasks/new\"\n }\n}'\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Параметры бота\n - `id: integer, int32` (required) — Идентификатор бота (совпадает с `user_id` бота). Пример: `1738816`\n - `webhook: object` (required) — Объект параметров вебхука\n - `name: string` (required, max length: 255) — Имя бота. Пример: `\"Бот задач\"`\n - `nickname: string` (required, max length: 255) — Никнейм бота. Пример: `\"tasks_bot\"`\n - `outgoing_url: string` (required, nullable) — URL исходящего вебхука. `null`, если исходящий вебхук у бота не настроен. Пример: `\"https://www.website.com/tasks/new\"`\n - `events: array of string` (required) — События, на которые подписан бот. Пример: `[\"message_new\"]`\n - `trigger_on: string` (required) — Условие срабатывания исходящего вебхука\n Значения: `commands` — Только на команды (триггер-слова) из commands, `all_messages` — На все сообщения в чатах, где есть бот, `unfurl` — На развёртывание ссылок (link previews)\n - `commands: array of string` (required) — Команды бота (триггер-слова). Пример: `[\"/task\"]`\n - `scopes: array of string` (required) — Скоупы (права доступа) токена бота. Набор по умолчанию шире того, что можно назначить явно, поэтому здесь могут встречаться значения, недоступные для явной установки. Пример: `[\"messages:create\"]`\n - `template: string` (required, nullable) — Шаблон форматирования входящего вебхука. `null`, если не задан. Пример: `\"Заказ от {{ client }} на сумму {{ amount }} ₽\"`\n - `template_engine: string` (required) — Шаблонизатор для обработки шаблона входящего вебхука\n Значения: `liquid` — Liquid — условия, циклы и фильтры, `mustache` — Mustache — простая подстановка без логики\n - `challenge_key: string` (required, nullable) — Название поля проверки для верификации входящего вебхука. `null`, если не задано. Пример: `\"challenge\"`\n - `link_preview_enabled: boolean` (required) — Показывать превью ссылок в сообщениях входящего вебхука. Пример: `true`\n - `ignore_self_messages: boolean` (required) — Игнорировать входящие сообщения, отправленные самим ботом. Пример: `false`\n - `events_history_enabled: boolean` (required) — Сохранять историю событий бота для последующего получения через метод истории событий. Пример: `false`\n - `single_chat: boolean` (required) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false`\n - `can_edit: array of string` (required) — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `[\"admin\"]`\n - `who_can_add: string` (required) — Кто может добавлять бота в чаты\n Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Любой пользователь, в том числе гости\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 1738816,\n \"webhook\": {\n \"name\": \"Бот задач\",\n \"nickname\": \"tasks_bot\",\n \"outgoing_url\": \"https://www.website.com/tasks/new\",\n \"events\": [\n \"message_new\"\n ],\n \"trigger_on\": \"commands\",\n \"commands\": [\n \"/task\"\n ],\n \"scopes\": [\n \"messages:create\"\n ],\n \"template\": \"Заказ от {{ client }} на сумму {{ amount }} ₽\",\n \"template_engine\": \"liquid\",\n \"challenge_key\": \"challenge\",\n \"link_preview_enabled\": true,\n \"ignore_self_messages\": false,\n \"events_history_enabled\": false,\n \"single_chat\": false,\n \"can_edit\": [\n \"admin\"\n ],\n \"who_can_add\": \"creator\"\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/bots","summary":"Список ботов","scope":"bots:read","plan":null,"auth":true,"paginated":true,"command":"pachca bots list","docLink":"https://dev.pachca.com/api/bots/list","describe":"# GET /bots — Список ботов\n\n> **Скоуп:** `bots:read`\n\n> Пагинация: добавьте `--all` для автоматического обхода страниц\n\n## Параметры\n\n- `query` — query: Поисковая фраза для фильтрации ботов по имени\n- `limit` — query: Количество возвращаемых сущностей за один запрос\n- `cursor` — query: Курсор для пагинации (из `meta.paginate.next_page`)\n\n## Эквивалентная команда\n\n```bash\n# Добавьте --all для автоматической пагинации\npachca bots list \\\n --query=задач \\\n --limit=1 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/bots/list\nПолная справка: `pachca api GET /bots --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/bots","description":"Список ботов\n\nБоты, которых вызывающий вправе настраивать: созданные им самим и те, чьи настройки открывают ему доступ к редактированию.\n\nПараметр `query` отбирает ботов по части имени, без опечаток. Токены ботов в списке не приходят — их показывают один раз при создании и при ротации.\n\nПеречень всех ботов пространства, включая чужих, доступен владельцу на тарифе «Корпорация» — [Список ботов пространства](GET /company/bots). Там чужие боты приходят с одними лишь именем и ником, остальные настройки скрыты.","parameters":[{"name":"query","in":"query","description":"Поисковая фраза для фильтрации ботов по имени","required":false,"schema":{"type":"string","example":"задач"},"example":"задач","explode":false},{"name":"limit","in":"query","description":"Количество возвращаемых сущностей за один запрос","required":false,"schema":{"type":"integer","format":"int32","default":50,"example":1,"minimum":1,"maximum":50},"example":1,"explode":false},{"name":"cursor","in":"query","description":"Курсор для пагинации (из `meta.paginate.next_page`)","required":false,"schema":{"type":"string","example":"eyJpZCI6MTczODgxNn0"},"example":"eyJpZCI6MTczODgxNn0","explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными и пагинацией","required":["data","meta"],"properties":{"data":{"type":"array","items":{"type":"object","description":"Параметры бота","required":["id","webhook"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор бота (совпадает с `user_id` бота)","example":1738816},"webhook":{"description":"Объект параметров вебхука","allOf":[{"type":"object","description":"Параметры вебхука бота","required":["name","nickname","outgoing_url","events","trigger_on","commands","scopes","template","template_engine","challenge_key","link_preview_enabled","ignore_self_messages","events_history_enabled","single_chat","can_edit","who_can_add"],"properties":{"name":{"type":"string","description":"Имя бота","example":"Бот задач","maxLength":255},"nickname":{"type":"string","description":"Никнейм бота","example":"tasks_bot","maxLength":255},"outgoing_url":{"type":"string","description":"URL исходящего вебхука. `null`, если исходящий вебхук у бота не настроен.","example":"https://www.website.com/tasks/new","nullable":true},"events":{"type":"array","description":"События, на которые подписан бот","example":["message_new"],"items":{"type":"string","description":"Событие исходящего вебхука бота","enum":["message_new","message_update","message_delete","reaction_new","reaction_delete","button_click","message_link_shared","chat_member_add","chat_member_remove","company_member_invite","company_member_confirm","company_member_suspend","company_member_activate","company_member_delete","company_member_update","video_call_started","video_call_finished","video_call_recording_ready"],"x-enum-descriptions":{"message_new":"Новое сообщение","message_update":"Сообщение отредактировано","message_delete":"Сообщение удалено","reaction_new":"Добавлена реакция","reaction_delete":"Реакция удалена","button_click":"Нажата кнопка","message_link_shared":"В сообщении отправлена ссылка (для unfurl)","chat_member_add":"Участник добавлен в чат","chat_member_remove":"Участник удалён из чата","company_member_invite":"Сотрудник приглашён в компанию","company_member_confirm":"Сотрудник подтвердил приглашение","company_member_suspend":"Сотрудник деактивирован","company_member_activate":"Сотрудник активирован","company_member_delete":"Сотрудник удалён из компании","company_member_update":"Данные сотрудника изменены","video_call_started":"Видеозвонок начался","video_call_finished":"Видеозвонок завершился","video_call_recording_ready":"Запись видеозвонка готова"},"$ref":"#/components/schemas/BotEventName"}},"trigger_on":{"description":"Условие срабатывания исходящего вебхука","example":"commands","allOf":[{"type":"string","description":"Условие срабатывания исходящего вебхука бота","enum":["commands","all_messages","unfurl"],"x-enum-descriptions":{"commands":"Только на команды (триггер-слова) из commands","all_messages":"На все сообщения в чатах, где есть бот","unfurl":"На развёртывание ссылок (link previews)"},"$ref":"#/components/schemas/BotTriggerOn"}]},"commands":{"type":"array","description":"Команды бота (триггер-слова)","example":["/task"],"items":{"type":"string"}},"scopes":{"type":"array","description":"Скоупы (права доступа) токена бота. Набор по умолчанию шире того, что можно назначить явно, поэтому здесь могут встречаться значения, недоступные для явной установки.","example":["messages:create"],"items":{"type":"string"}},"template":{"type":"string","description":"Шаблон форматирования входящего вебхука. `null`, если не задан.","example":"Заказ от {{ client }} на сумму {{ amount }} ₽","nullable":true},"template_engine":{"description":"Шаблонизатор для обработки шаблона входящего вебхука","example":"liquid","allOf":[{"type":"string","description":"Шаблонизатор для форматирования входящих вебхуков","enum":["liquid","mustache"],"x-enum-descriptions":{"liquid":"Liquid — условия, циклы и фильтры","mustache":"Mustache — простая подстановка без логики"},"$ref":"#/components/schemas/BotTemplateEngine"}]},"challenge_key":{"type":"string","description":"Название поля проверки для верификации входящего вебхука. `null`, если не задано.","example":"challenge","nullable":true},"link_preview_enabled":{"type":"boolean","description":"Показывать превью ссылок в сообщениях входящего вебхука","example":true},"ignore_self_messages":{"type":"boolean","description":"Игнорировать входящие сообщения, отправленные самим ботом","example":false},"events_history_enabled":{"type":"boolean","description":"Сохранять историю событий бота для последующего получения через метод истории событий","example":false},"single_chat":{"type":"boolean","description":"Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят.","example":false},"can_edit":{"type":"array","description":"Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель.","example":["admin"],"items":{"type":"string","description":"Роль, которой разрешено редактировать настройки бота","enum":["admin","chat_owners"],"x-enum-descriptions":{"admin":"Администраторы компании","chat_owners":"Владельцы чатов, в которые добавлен бот"},"$ref":"#/components/schemas/BotCanEdit"}},"who_can_add":{"description":"Кто может добавлять бота в чаты","example":"creator","allOf":[{"type":"string","description":"Кто может добавлять бота в чаты","enum":["creator","creator_admin","creator_admin_user","anyone"],"x-enum-descriptions":{"creator":"Только создатель бота","creator_admin":"Создатель и администраторы компании","creator_admin_user":"Создатель, администраторы и участники компании","anyone":"Любой пользователь, в том числе гости"},"$ref":"#/components/schemas/BotWhoCanAdd"}]}},"$ref":"#/components/schemas/BotWebhook"}]}},"$ref":"#/components/schemas/BotResponse"}},"meta":{"type":"object","description":"Метаданные пагинации","required":["paginate"],"properties":{"paginate":{"type":"object","description":"Вспомогательная информация","required":["next_page"],"properties":{"next_page":{"type":"string","description":"Курсор пагинации следующей страницы","example":"eyJxZCO2MiwiZGlyIjomSNYjIn3"},"prev_page":{"type":"string","description":"Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка.","example":"eyJxZCO2MiwiZGlyIjoiYXNjIn0"},"has_next":{"type":"boolean","description":"Есть ли ещё данные на следующей странице. На последней странице — `false`.","example":true},"has_prev":{"type":"boolean","description":"Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`.","example":false}}}},"$ref":"#/components/schemas/PaginationMeta"}}},"example":{"data":[{"id":1738816,"webhook":{"name":"Бот задач","nickname":"tasks_bot","outgoing_url":"https://www.website.com/tasks/new","events":["message_new"],"trigger_on":"commands","commands":["/task"],"scopes":["messages:create"],"template":"Заказ от {{ client }} на сумму {{ amount }} ₽","template_engine":"liquid","challenge_key":"challenge","link_preview_enabled":true,"ignore_self_messages":false,"events_history_enabled":false,"single_chat":false,"can_edit":["admin"],"who_can_add":"creator"}}],"meta":{"paginate":{"next_page":"eyJpZCI6MTczODgxNn0"}}}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}}},"requirements":{"scope":"bots:read","scopeRoles":["owner","admin","user"]},"paginated":true},"docs":"# Список ботов\n\n**Метод**: `GET`\n\n**Путь**: `/bots`\n\n> **Скоуп:** `bots:read`\n\nБоты, которых вызывающий вправе настраивать: созданные им самим и те, чьи настройки открывают ему доступ к редактированию.\n\nПараметр `query` отбирает ботов по части имени, без опечаток. Токены ботов в списке не приходят — их показывают один раз при создании и при ротации.\n\nПеречень всех ботов пространства, включая чужих, доступен владельцу на тарифе «Корпорация» — [Список ботов пространства](GET /company/bots). Там чужие боты приходят с одними лишь именем и ником, остальные настройки скрыты.\n\n## Параметры\n\n### Query параметры\n\n- `query: string` — Поисковая фраза для фильтрации ботов по имени\n- `limit: integer, int32` (default: 50) — Количество возвращаемых сущностей за один запрос\n- `cursor: string` — Курсор для пагинации (из `meta.paginate.next_page`)\n\n\n## Пример запроса\n\n```bash\n# Для получения следующей страницы используйте cursor из meta.paginate.next_page\ncurl \"https://api.pachca.com/api/shared/v1/bots?query=задач&limit=1\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: array of object` (required)\n - `id: integer, int32` (required) — Идентификатор бота (совпадает с `user_id` бота). Пример: `1738816`\n - `webhook: object` (required) — Объект параметров вебхука\n - `name: string` (required, max length: 255) — Имя бота. Пример: `\"Бот задач\"`\n - `nickname: string` (required, max length: 255) — Никнейм бота. Пример: `\"tasks_bot\"`\n - `outgoing_url: string` (required, nullable) — URL исходящего вебхука. `null`, если исходящий вебхук у бота не настроен. Пример: `\"https://www.website.com/tasks/new\"`\n - `events: array of string` (required) — События, на которые подписан бот. Пример: `[\"message_new\"]`\n - `trigger_on: string` (required) — Условие срабатывания исходящего вебхука\n Значения: `commands` — Только на команды (триггер-слова) из commands, `all_messages` — На все сообщения в чатах, где есть бот, `unfurl` — На развёртывание ссылок (link previews)\n - `commands: array of string` (required) — Команды бота (триггер-слова). Пример: `[\"/task\"]`\n - `scopes: array of string` (required) — Скоупы (права доступа) токена бота. Набор по умолчанию шире того, что можно назначить явно, поэтому здесь могут встречаться значения, недоступные для явной установки. Пример: `[\"messages:create\"]`\n - `template: string` (required, nullable) — Шаблон форматирования входящего вебхука. `null`, если не задан. Пример: `\"Заказ от {{ client }} на сумму {{ amount }} ₽\"`\n - `template_engine: string` (required) — Шаблонизатор для обработки шаблона входящего вебхука\n Значения: `liquid` — Liquid — условия, циклы и фильтры, `mustache` — Mustache — простая подстановка без логики\n - `challenge_key: string` (required, nullable) — Название поля проверки для верификации входящего вебхука. `null`, если не задано. Пример: `\"challenge\"`\n - `link_preview_enabled: boolean` (required) — Показывать превью ссылок в сообщениях входящего вебхука. Пример: `true`\n - `ignore_self_messages: boolean` (required) — Игнорировать входящие сообщения, отправленные самим ботом. Пример: `false`\n - `events_history_enabled: boolean` (required) — Сохранять историю событий бота для последующего получения через метод истории событий. Пример: `false`\n - `single_chat: boolean` (required) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false`\n - `can_edit: array of string` (required) — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `[\"admin\"]`\n - `who_can_add: string` (required) — Кто может добавлять бота в чаты\n Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Любой пользователь, в том числе гости\n- `meta: object` (required) — Метаданные пагинации\n - `paginate: object` (required) — Вспомогательная информация\n - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `\"eyJxZCO2MiwiZGlyIjomSNYjIn3\"`\n - `prev_page: string` — Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка. Пример: `\"eyJxZCO2MiwiZGlyIjoiYXNjIn0\"`\n - `has_next: boolean` — Есть ли ещё данные на следующей странице. На последней странице — `false`. Пример: `true`\n - `has_prev: boolean` — Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`. Пример: `false`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": [\n {\n \"id\": 1738816,\n \"webhook\": {\n \"name\": \"Бот задач\",\n \"nickname\": \"tasks_bot\",\n \"outgoing_url\": \"https://www.website.com/tasks/new\",\n \"events\": [\n \"message_new\"\n ],\n \"trigger_on\": \"commands\",\n \"commands\": [\n \"/task\"\n ],\n \"scopes\": [\n \"messages:create\"\n ],\n \"template\": \"Заказ от {{ client }} на сумму {{ amount }} ₽\",\n \"template_engine\": \"liquid\",\n \"challenge_key\": \"challenge\",\n \"link_preview_enabled\": true,\n \"ignore_self_messages\": false,\n \"events_history_enabled\": false,\n \"single_chat\": false,\n \"can_edit\": [\n \"admin\"\n ],\n \"who_can_add\": \"creator\"\n }\n }\n ],\n \"meta\": {\n \"paginate\": {\n \"next_page\": \"eyJpZCI6MTczODgxNn0\"\n }\n }\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n"},{"method":"POST","path":"/bots","summary":"Новый бот","scope":"bots:write","plan":null,"auth":true,"paginated":false,"command":"pachca bots create","docLink":"https://dev.pachca.com/api/bots/create","describe":"# POST /bots — Новый бот\n\n> **Скоуп:** `bots:write`\n\n## Тело запроса\n\n- `webhook: object` (required) — Объект параметров вебхука создаваемого бота\n - `name: string` (required, max length: 255) — Имя бота\n - `nickname: string` (max length: 255) — Никнейм бота. Должен заканчиваться на `_bot`.\n - `outgoing_url: string` — URL исходящего вебхука\n - `events: array of string` — События, на которые подписан бот\n - `trigger_on: string` — Условие срабатывания исходящего вебхука\n Значения: `commands` — Только на команды (триггер-слова) из commands, `all_messages` — На все сообщения в чатах, где есть бот, `unfurl` — На развёртывание ссылок (link previews)\n - `commands: array of string` — Команды бота (триггер-слова), на которые он реагирует при trigger_on = commands. Суммарная длина команд, объединённых через запятую, не должна превышать 255 символов.\n - `scopes: array of string` — Скоупы (права доступа) токена бота. Если не указано, бот получает набор по умолчанию. Боту доступны не все скоупы: часть из них разрешена только пользовательским ролям, и попытка назначить такой скоуп возвращает `400`. Служебные значения `bot` и `all` назначать нельзя.\n - `template: string` — Шаблон форматирования входящего вебхука\n - `template_engine: string` — Шаблонизатор для обработки шаблона входящего вебхука\n Значения: `liquid` — Liquid — условия, циклы и фильтры, `mustache` — Mustache — простая подстановка без логики\n - `challenge_key: string` — Название поля проверки для верификации входящего вебхука\n - `link_preview_enabled: boolean` (default: true) — Показывать превью ссылок в сообщениях входящего вебхука\n - `ignore_self_messages: boolean` (default: false) — Игнорировать входящие сообщения, отправленные самим ботом\n - `events_history_enabled: boolean` (default: false) — Сохранять историю событий бота для последующего получения через метод истории событий\n - `who_can_add: string` — Кто может добавлять бота в чаты\n Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Любой пользователь, в том числе гости\n - `can_edit: array of string` — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель.\n - `single_chat: boolean` (default: false) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Задаётся только при создании, при редактировании не меняется.\n\n## Эквивалентная команда\n\n```bash\npachca bots create \\\n --name='Бот задач' \\\n --nickname=tasks_bot \\\n --outgoing-url=https://www.website.com/tasks/new \\\n --events='[\"message_new\"]' \\\n --commands='[\"/task\",\"/help\"]' \\\n --scopes='[\"messages:create\"]' \\\n --template='Заказ от {{ client }} на сумму {{ amount }} ₽' \\\n --challenge-key=challenge \\\n --can-edit='[\"admin\"]' \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/bots/create\nПолная справка: `pachca api POST /bots --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/bots","description":"Новый бот\n\nСоздаёт бота в пространстве и сразу отдаёт его `access_token`. Сохраните токен при создании: тот же самый повторно не показывают, останется перевыпустить его методом [Ротация токена бота](POST /bots/{id}/recreate_token).\n\nСозданный бот ещё никуда не пишет. В беседу и канал он пишет только как участник, а добавляют его как сотрудника — методом [Добавление пользователей](POST /chats/{id}/members), передав `id` бота. В канале бот получает роль редактора. Личные сообщения и треды в открытых чатах членства не требуют.\n\nВходящий вебхук бота отправляет сообщение сразу во все беседы и каналы, где бот состоит, поэтому набор его чатов и решает, куда оно попадёт. Токен для этого не нужен, достаточно адреса вебхука. Чтобы написать в один конкретный чат, берите метод [Новое сообщение](POST /messages) — вот там токен уже нужен.\n\nНик обязан заканчиваться на `_bot` и быть свободным в пространстве. Ограничение `single_chat` задаётся только здесь: при редактировании бота оно уже не меняется.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на создание бота","required":["webhook"],"properties":{"webhook":{"type":"object","description":"Объект параметров вебхука создаваемого бота","required":["name"],"properties":{"name":{"type":"string","description":"Имя бота","example":"Бот задач","maxLength":255},"nickname":{"type":"string","description":"Никнейм бота. Должен заканчиваться на `_bot`.","example":"tasks_bot","maxLength":255},"outgoing_url":{"type":"string","description":"URL исходящего вебхука","example":"https://www.website.com/tasks/new"},"events":{"type":"array","description":"События, на которые подписан бот","example":["message_new"],"items":{"type":"string","description":"Событие исходящего вебхука бота","enum":["message_new","message_update","message_delete","reaction_new","reaction_delete","button_click","message_link_shared","chat_member_add","chat_member_remove","company_member_invite","company_member_confirm","company_member_suspend","company_member_activate","company_member_delete","company_member_update","video_call_started","video_call_finished","video_call_recording_ready"],"x-enum-descriptions":{"message_new":"Новое сообщение","message_update":"Сообщение отредактировано","message_delete":"Сообщение удалено","reaction_new":"Добавлена реакция","reaction_delete":"Реакция удалена","button_click":"Нажата кнопка","message_link_shared":"В сообщении отправлена ссылка (для unfurl)","chat_member_add":"Участник добавлен в чат","chat_member_remove":"Участник удалён из чата","company_member_invite":"Сотрудник приглашён в компанию","company_member_confirm":"Сотрудник подтвердил приглашение","company_member_suspend":"Сотрудник деактивирован","company_member_activate":"Сотрудник активирован","company_member_delete":"Сотрудник удалён из компании","company_member_update":"Данные сотрудника изменены","video_call_started":"Видеозвонок начался","video_call_finished":"Видеозвонок завершился","video_call_recording_ready":"Запись видеозвонка готова"},"$ref":"#/components/schemas/BotEventName"}},"trigger_on":{"description":"Условие срабатывания исходящего вебхука","default":"commands","example":"commands","allOf":[{"type":"string","description":"Условие срабатывания исходящего вебхука бота","enum":["commands","all_messages","unfurl"],"x-enum-descriptions":{"commands":"Только на команды (триггер-слова) из commands","all_messages":"На все сообщения в чатах, где есть бот","unfurl":"На развёртывание ссылок (link previews)"},"$ref":"#/components/schemas/BotTriggerOn"}]},"commands":{"type":"array","description":"Команды бота (триггер-слова), на которые он реагирует при trigger_on = commands. Суммарная длина команд, объединённых через запятую, не должна превышать 255 символов.","example":["/task","/help"],"items":{"type":"string"}},"scopes":{"type":"array","description":"Скоупы (права доступа) токена бота. Если не указано, бот получает набор по умолчанию. Боту доступны не все скоупы: часть из них разрешена только пользовательским ролям, и попытка назначить такой скоуп возвращает `400`. Служебные значения `bot` и `all` назначать нельзя.","example":["messages:create"],"items":{"type":"string"}},"template":{"type":"string","description":"Шаблон форматирования входящего вебхука","example":"Заказ от {{ client }} на сумму {{ amount }} ₽"},"template_engine":{"description":"Шаблонизатор для обработки шаблона входящего вебхука","default":"liquid","example":"liquid","allOf":[{"type":"string","description":"Шаблонизатор для форматирования входящих вебхуков","enum":["liquid","mustache"],"x-enum-descriptions":{"liquid":"Liquid — условия, циклы и фильтры","mustache":"Mustache — простая подстановка без логики"},"$ref":"#/components/schemas/BotTemplateEngine"}]},"challenge_key":{"type":"string","description":"Название поля проверки для верификации входящего вебхука","example":"challenge"},"link_preview_enabled":{"type":"boolean","description":"Показывать превью ссылок в сообщениях входящего вебхука","default":true,"example":true},"ignore_self_messages":{"type":"boolean","description":"Игнорировать входящие сообщения, отправленные самим ботом","default":false,"example":false},"events_history_enabled":{"type":"boolean","description":"Сохранять историю событий бота для последующего получения через метод истории событий","default":false,"example":false},"who_can_add":{"description":"Кто может добавлять бота в чаты","default":"creator","example":"creator","allOf":[{"type":"string","description":"Кто может добавлять бота в чаты","enum":["creator","creator_admin","creator_admin_user","anyone"],"x-enum-descriptions":{"creator":"Только создатель бота","creator_admin":"Создатель и администраторы компании","creator_admin_user":"Создатель, администраторы и участники компании","anyone":"Любой пользователь, в том числе гости"},"$ref":"#/components/schemas/BotWhoCanAdd"}]},"can_edit":{"type":"array","description":"Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель.","example":["admin"],"items":{"type":"string","description":"Роль, которой разрешено редактировать настройки бота","enum":["admin","chat_owners"],"x-enum-descriptions":{"admin":"Администраторы компании","chat_owners":"Владельцы чатов, в которые добавлен бот"},"$ref":"#/components/schemas/BotCanEdit"}},"single_chat":{"type":"boolean","description":"Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Задаётся только при создании, при редактировании не меняется.","default":false,"example":false}}}},"$ref":"#/components/schemas/BotCreateRequest"},"example":{"webhook":{"name":"Бот задач","nickname":"tasks_bot","outgoing_url":"https://www.website.com/tasks/new","events":["message_new"],"trigger_on":"commands","commands":["/task"],"scopes":["messages:create"]}}}}},"responses":{"201":{"description":"The request has succeeded and a new resource has been created as a result.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Параметры созданного бота","required":["id","webhook","access_token"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор бота (совпадает с `user_id` бота)","example":1738816},"webhook":{"description":"Объект параметров вебхука","allOf":[{"type":"object","description":"Параметры вебхука бота","required":["name","nickname","outgoing_url","events","trigger_on","commands","scopes","template","template_engine","challenge_key","link_preview_enabled","ignore_self_messages","events_history_enabled","single_chat","can_edit","who_can_add"],"properties":{"name":{"type":"string","description":"Имя бота","example":"Бот задач","maxLength":255},"nickname":{"type":"string","description":"Никнейм бота","example":"tasks_bot","maxLength":255},"outgoing_url":{"type":"string","description":"URL исходящего вебхука. `null`, если исходящий вебхук у бота не настроен.","example":"https://www.website.com/tasks/new","nullable":true},"events":{"type":"array","description":"События, на которые подписан бот","example":["message_new"],"items":{"type":"string","description":"Событие исходящего вебхука бота","enum":["message_new","message_update","message_delete","reaction_new","reaction_delete","button_click","message_link_shared","chat_member_add","chat_member_remove","company_member_invite","company_member_confirm","company_member_suspend","company_member_activate","company_member_delete","company_member_update","video_call_started","video_call_finished","video_call_recording_ready"],"x-enum-descriptions":{"message_new":"Новое сообщение","message_update":"Сообщение отредактировано","message_delete":"Сообщение удалено","reaction_new":"Добавлена реакция","reaction_delete":"Реакция удалена","button_click":"Нажата кнопка","message_link_shared":"В сообщении отправлена ссылка (для unfurl)","chat_member_add":"Участник добавлен в чат","chat_member_remove":"Участник удалён из чата","company_member_invite":"Сотрудник приглашён в компанию","company_member_confirm":"Сотрудник подтвердил приглашение","company_member_suspend":"Сотрудник деактивирован","company_member_activate":"Сотрудник активирован","company_member_delete":"Сотрудник удалён из компании","company_member_update":"Данные сотрудника изменены","video_call_started":"Видеозвонок начался","video_call_finished":"Видеозвонок завершился","video_call_recording_ready":"Запись видеозвонка готова"},"$ref":"#/components/schemas/BotEventName"}},"trigger_on":{"description":"Условие срабатывания исходящего вебхука","example":"commands","allOf":[{"type":"string","description":"Условие срабатывания исходящего вебхука бота","enum":["commands","all_messages","unfurl"],"x-enum-descriptions":{"commands":"Только на команды (триггер-слова) из commands","all_messages":"На все сообщения в чатах, где есть бот","unfurl":"На развёртывание ссылок (link previews)"},"$ref":"#/components/schemas/BotTriggerOn"}]},"commands":{"type":"array","description":"Команды бота (триггер-слова)","example":["/task"],"items":{"type":"string"}},"scopes":{"type":"array","description":"Скоупы (права доступа) токена бота. Набор по умолчанию шире того, что можно назначить явно, поэтому здесь могут встречаться значения, недоступные для явной установки.","example":["messages:create"],"items":{"type":"string"}},"template":{"type":"string","description":"Шаблон форматирования входящего вебхука. `null`, если не задан.","example":"Заказ от {{ client }} на сумму {{ amount }} ₽","nullable":true},"template_engine":{"description":"Шаблонизатор для обработки шаблона входящего вебхука","example":"liquid","allOf":[{"type":"string","description":"Шаблонизатор для форматирования входящих вебхуков","enum":["liquid","mustache"],"x-enum-descriptions":{"liquid":"Liquid — условия, циклы и фильтры","mustache":"Mustache — простая подстановка без логики"},"$ref":"#/components/schemas/BotTemplateEngine"}]},"challenge_key":{"type":"string","description":"Название поля проверки для верификации входящего вебхука. `null`, если не задано.","example":"challenge","nullable":true},"link_preview_enabled":{"type":"boolean","description":"Показывать превью ссылок в сообщениях входящего вебхука","example":true},"ignore_self_messages":{"type":"boolean","description":"Игнорировать входящие сообщения, отправленные самим ботом","example":false},"events_history_enabled":{"type":"boolean","description":"Сохранять историю событий бота для последующего получения через метод истории событий","example":false},"single_chat":{"type":"boolean","description":"Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят.","example":false},"can_edit":{"type":"array","description":"Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель.","example":["admin"],"items":{"type":"string","description":"Роль, которой разрешено редактировать настройки бота","enum":["admin","chat_owners"],"x-enum-descriptions":{"admin":"Администраторы компании","chat_owners":"Владельцы чатов, в которые добавлен бот"},"$ref":"#/components/schemas/BotCanEdit"}},"who_can_add":{"description":"Кто может добавлять бота в чаты","example":"creator","allOf":[{"type":"string","description":"Кто может добавлять бота в чаты","enum":["creator","creator_admin","creator_admin_user","anyone"],"x-enum-descriptions":{"creator":"Только создатель бота","creator_admin":"Создатель и администраторы компании","creator_admin_user":"Создатель, администраторы и участники компании","anyone":"Любой пользователь, в том числе гости"},"$ref":"#/components/schemas/BotWhoCanAdd"}]}},"$ref":"#/components/schemas/BotWebhook"}]},"access_token":{"type":"string","description":"Токен доступа бота. Возвращается при создании бота и при ротации токена.","example":"bm90X2FfcmVhbF90b2tlbg"}},"$ref":"#/components/schemas/BotCreateResponse"}}},"example":{"data":{"id":1738816,"webhook":{"name":"Бот задач","nickname":"tasks_bot","outgoing_url":"https://www.website.com/tasks/new","events":["message_new"],"trigger_on":"commands","commands":["/task"],"scopes":["messages:create"],"template":"Заказ от {{ client }} на сумму {{ amount }} ₽","template_engine":"liquid","challenge_key":"challenge","link_preview_enabled":true,"ignore_self_messages":false,"events_history_enabled":false,"single_chat":false,"can_edit":["admin"],"who_can_add":"creator"},"access_token":"bm90X2FfcmVhbF90b2tlbg"}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}}},"requirements":{"scope":"bots:write","scopeRoles":["owner","admin","user"]},"paginated":false},"docs":"# Новый бот\n\n**Метод**: `POST`\n\n**Путь**: `/bots`\n\n> **Скоуп:** `bots:write`\n\nСоздаёт бота в пространстве и сразу отдаёт его `access_token`. Сохраните токен при создании: тот же самый повторно не показывают, останется перевыпустить его методом [Ротация токена бота](POST /bots/{id}/recreate_token).\n\nСозданный бот ещё никуда не пишет. В беседу и канал он пишет только как участник, а добавляют его как сотрудника — методом [Добавление пользователей](POST /chats/{id}/members), передав `id` бота. В канале бот получает роль редактора. Личные сообщения и треды в открытых чатах членства не требуют.\n\nВходящий вебхук бота отправляет сообщение сразу во все беседы и каналы, где бот состоит, поэтому набор его чатов и решает, куда оно попадёт. Токен для этого не нужен, достаточно адреса вебхука. Чтобы написать в один конкретный чат, берите метод [Новое сообщение](POST /messages) — вот там токен уже нужен.\n\nНик обязан заканчиваться на `_bot` и быть свободным в пространстве. Ограничение `single_chat` задаётся только здесь: при редактировании бота оно уже не меняется.\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `webhook: object` (required) — Объект параметров вебхука создаваемого бота\n - `name: string` (required, max length: 255) — Имя бота. Пример: `\"Бот задач\"`\n - `nickname: string` (max length: 255) — Никнейм бота. Должен заканчиваться на `_bot`. Пример: `\"tasks_bot\"`\n - `outgoing_url: string` — URL исходящего вебхука. Пример: `\"https://www.website.com/tasks/new\"`\n - `events: array of string` — События, на которые подписан бот. Пример: `[\"message_new\"]`\n - `trigger_on: string` — Условие срабатывания исходящего вебхука\n Значения: `commands` — Только на команды (триггер-слова) из commands, `all_messages` — На все сообщения в чатах, где есть бот, `unfurl` — На развёртывание ссылок (link previews)\n - `commands: array of string` — Команды бота (триггер-слова), на которые он реагирует при trigger_on = commands. Суммарная длина команд, объединённых через запятую, не должна превышать 255 символов. Пример: `[\"/task\",\"/help\"]`\n - `scopes: array of string` — Скоупы (права доступа) токена бота. Если не указано, бот получает набор по умолчанию. Боту доступны не все скоупы: часть из них разрешена только пользовательским ролям, и попытка назначить такой скоуп возвращает `400`. Служебные значения `bot` и `all` назначать нельзя. Пример: `[\"messages:create\"]`\n - `template: string` — Шаблон форматирования входящего вебхука. Пример: `\"Заказ от {{ client }} на сумму {{ amount }} ₽\"`\n - `template_engine: string` — Шаблонизатор для обработки шаблона входящего вебхука\n Значения: `liquid` — Liquid — условия, циклы и фильтры, `mustache` — Mustache — простая подстановка без логики\n - `challenge_key: string` — Название поля проверки для верификации входящего вебхука. Пример: `\"challenge\"`\n - `link_preview_enabled: boolean` (default: true) — Показывать превью ссылок в сообщениях входящего вебхука. Пример: `true`\n - `ignore_self_messages: boolean` (default: false) — Игнорировать входящие сообщения, отправленные самим ботом. Пример: `false`\n - `events_history_enabled: boolean` (default: false) — Сохранять историю событий бота для последующего получения через метод истории событий. Пример: `false`\n - `who_can_add: string` — Кто может добавлять бота в чаты\n Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Любой пользователь, в том числе гости\n - `can_edit: array of string` — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `[\"admin\"]`\n - `single_chat: boolean` (default: false) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Задаётся только при создании, при редактировании не меняется. Пример: `false`\n\n### Пример\n\n```json\n{\n \"webhook\": {\n \"name\": \"Бот задач\",\n \"nickname\": \"tasks_bot\",\n \"outgoing_url\": \"https://www.website.com/tasks/new\",\n \"events\": [\n \"message_new\"\n ],\n \"trigger_on\": \"commands\",\n \"commands\": [\n \"/task\"\n ],\n \"scopes\": [\n \"messages:create\"\n ]\n }\n}\n```\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/bots\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"webhook\": {\n \"name\": \"Бот задач\",\n \"nickname\": \"tasks_bot\",\n \"outgoing_url\": \"https://www.website.com/tasks/new\",\n \"events\": [\n \"message_new\"\n ],\n \"trigger_on\": \"commands\",\n \"commands\": [\n \"/task\"\n ],\n \"scopes\": [\n \"messages:create\"\n ]\n }\n}'\n```\n\n## Ответы\n\n### 201: The request has succeeded and a new resource has been created as a result.\n\n**Схема ответа:**\n\n- `data: object` (required) — Параметры созданного бота\n - `id: integer, int32` (required) — Идентификатор бота (совпадает с `user_id` бота). Пример: `1738816`\n - `webhook: object` (required) — Объект параметров вебхука\n - `name: string` (required, max length: 255) — Имя бота. Пример: `\"Бот задач\"`\n - `nickname: string` (required, max length: 255) — Никнейм бота. Пример: `\"tasks_bot\"`\n - `outgoing_url: string` (required, nullable) — URL исходящего вебхука. `null`, если исходящий вебхук у бота не настроен. Пример: `\"https://www.website.com/tasks/new\"`\n - `events: array of string` (required) — События, на которые подписан бот. Пример: `[\"message_new\"]`\n - `trigger_on: string` (required) — Условие срабатывания исходящего вебхука\n Значения: `commands` — Только на команды (триггер-слова) из commands, `all_messages` — На все сообщения в чатах, где есть бот, `unfurl` — На развёртывание ссылок (link previews)\n - `commands: array of string` (required) — Команды бота (триггер-слова). Пример: `[\"/task\"]`\n - `scopes: array of string` (required) — Скоупы (права доступа) токена бота. Набор по умолчанию шире того, что можно назначить явно, поэтому здесь могут встречаться значения, недоступные для явной установки. Пример: `[\"messages:create\"]`\n - `template: string` (required, nullable) — Шаблон форматирования входящего вебхука. `null`, если не задан. Пример: `\"Заказ от {{ client }} на сумму {{ amount }} ₽\"`\n - `template_engine: string` (required) — Шаблонизатор для обработки шаблона входящего вебхука\n Значения: `liquid` — Liquid — условия, циклы и фильтры, `mustache` — Mustache — простая подстановка без логики\n - `challenge_key: string` (required, nullable) — Название поля проверки для верификации входящего вебхука. `null`, если не задано. Пример: `\"challenge\"`\n - `link_preview_enabled: boolean` (required) — Показывать превью ссылок в сообщениях входящего вебхука. Пример: `true`\n - `ignore_self_messages: boolean` (required) — Игнорировать входящие сообщения, отправленные самим ботом. Пример: `false`\n - `events_history_enabled: boolean` (required) — Сохранять историю событий бота для последующего получения через метод истории событий. Пример: `false`\n - `single_chat: boolean` (required) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false`\n - `can_edit: array of string` (required) — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `[\"admin\"]`\n - `who_can_add: string` (required) — Кто может добавлять бота в чаты\n Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Любой пользователь, в том числе гости\n - `access_token: string` (required) — Токен доступа бота. Возвращается при создании бота и при ротации токена. Пример: `\"bm90X2FfcmVhbF90b2tlbg\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 1738816,\n \"webhook\": {\n \"name\": \"Бот задач\",\n \"nickname\": \"tasks_bot\",\n \"outgoing_url\": \"https://www.website.com/tasks/new\",\n \"events\": [\n \"message_new\"\n ],\n \"trigger_on\": \"commands\",\n \"commands\": [\n \"/task\"\n ],\n \"scopes\": [\n \"messages:create\"\n ],\n \"template\": \"Заказ от {{ client }} на сумму {{ amount }} ₽\",\n \"template_engine\": \"liquid\",\n \"challenge_key\": \"challenge\",\n \"link_preview_enabled\": true,\n \"ignore_self_messages\": false,\n \"events_history_enabled\": false,\n \"single_chat\": false,\n \"can_edit\": [\n \"admin\"\n ],\n \"who_can_add\": \"creator\"\n },\n \"access_token\": \"bm90X2FfcmVhbF90b2tlbg\"\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n"},{"method":"GET","path":"/bots/{id}","summary":"Информация о боте","scope":"bots:read","plan":null,"auth":true,"paginated":false,"command":"pachca bots get","docLink":"https://dev.pachca.com/api/bots/get","describe":"# GET /bots/{id} — Информация о боте\n\n> **Скоуп:** `bots:read`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор бота\n\n## Эквивалентная команда\n\n```bash\npachca bots get 1738816 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/bots/get\nПолная справка: `pachca api GET /bots/{id} --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/bots/{id}","description":"Информация о боте\n\nНастройки бота. Токен в ответе не приходит — его показывают один раз при создании бота и при вызове метода [Ротация токена бота](POST /bots/{id}/recreate_token).\n\nМетод отдаёт только тех ботов, которых вызывающий вправе настраивать: своих, а также чужих, если настройки бота открывают доступ администратору пространства или владельцу чата, где бот состоит. На остальных метод ответит `403`.\n\nПеречень всех ботов пространства, включая чужих, доступен владельцу на тарифе «Корпорация» — [Список ботов пространства](GET /company/bots).","parameters":[{"name":"id","in":"path","description":"Идентификатор бота","required":true,"schema":{"type":"integer","format":"int32","example":1738816},"example":1738816}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Параметры бота","required":["id","webhook"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор бота (совпадает с `user_id` бота)","example":1738816},"webhook":{"description":"Объект параметров вебхука","allOf":[{"type":"object","description":"Параметры вебхука бота","required":["name","nickname","outgoing_url","events","trigger_on","commands","scopes","template","template_engine","challenge_key","link_preview_enabled","ignore_self_messages","events_history_enabled","single_chat","can_edit","who_can_add"],"properties":{"name":{"type":"string","description":"Имя бота","example":"Бот задач","maxLength":255},"nickname":{"type":"string","description":"Никнейм бота","example":"tasks_bot","maxLength":255},"outgoing_url":{"type":"string","description":"URL исходящего вебхука. `null`, если исходящий вебхук у бота не настроен.","example":"https://www.website.com/tasks/new","nullable":true},"events":{"type":"array","description":"События, на которые подписан бот","example":["message_new"],"items":{"type":"string","description":"Событие исходящего вебхука бота","enum":["message_new","message_update","message_delete","reaction_new","reaction_delete","button_click","message_link_shared","chat_member_add","chat_member_remove","company_member_invite","company_member_confirm","company_member_suspend","company_member_activate","company_member_delete","company_member_update","video_call_started","video_call_finished","video_call_recording_ready"],"x-enum-descriptions":{"message_new":"Новое сообщение","message_update":"Сообщение отредактировано","message_delete":"Сообщение удалено","reaction_new":"Добавлена реакция","reaction_delete":"Реакция удалена","button_click":"Нажата кнопка","message_link_shared":"В сообщении отправлена ссылка (для unfurl)","chat_member_add":"Участник добавлен в чат","chat_member_remove":"Участник удалён из чата","company_member_invite":"Сотрудник приглашён в компанию","company_member_confirm":"Сотрудник подтвердил приглашение","company_member_suspend":"Сотрудник деактивирован","company_member_activate":"Сотрудник активирован","company_member_delete":"Сотрудник удалён из компании","company_member_update":"Данные сотрудника изменены","video_call_started":"Видеозвонок начался","video_call_finished":"Видеозвонок завершился","video_call_recording_ready":"Запись видеозвонка готова"},"$ref":"#/components/schemas/BotEventName"}},"trigger_on":{"description":"Условие срабатывания исходящего вебхука","example":"commands","allOf":[{"type":"string","description":"Условие срабатывания исходящего вебхука бота","enum":["commands","all_messages","unfurl"],"x-enum-descriptions":{"commands":"Только на команды (триггер-слова) из commands","all_messages":"На все сообщения в чатах, где есть бот","unfurl":"На развёртывание ссылок (link previews)"},"$ref":"#/components/schemas/BotTriggerOn"}]},"commands":{"type":"array","description":"Команды бота (триггер-слова)","example":["/task"],"items":{"type":"string"}},"scopes":{"type":"array","description":"Скоупы (права доступа) токена бота. Набор по умолчанию шире того, что можно назначить явно, поэтому здесь могут встречаться значения, недоступные для явной установки.","example":["messages:create"],"items":{"type":"string"}},"template":{"type":"string","description":"Шаблон форматирования входящего вебхука. `null`, если не задан.","example":"Заказ от {{ client }} на сумму {{ amount }} ₽","nullable":true},"template_engine":{"description":"Шаблонизатор для обработки шаблона входящего вебхука","example":"liquid","allOf":[{"type":"string","description":"Шаблонизатор для форматирования входящих вебхуков","enum":["liquid","mustache"],"x-enum-descriptions":{"liquid":"Liquid — условия, циклы и фильтры","mustache":"Mustache — простая подстановка без логики"},"$ref":"#/components/schemas/BotTemplateEngine"}]},"challenge_key":{"type":"string","description":"Название поля проверки для верификации входящего вебхука. `null`, если не задано.","example":"challenge","nullable":true},"link_preview_enabled":{"type":"boolean","description":"Показывать превью ссылок в сообщениях входящего вебхука","example":true},"ignore_self_messages":{"type":"boolean","description":"Игнорировать входящие сообщения, отправленные самим ботом","example":false},"events_history_enabled":{"type":"boolean","description":"Сохранять историю событий бота для последующего получения через метод истории событий","example":false},"single_chat":{"type":"boolean","description":"Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят.","example":false},"can_edit":{"type":"array","description":"Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель.","example":["admin"],"items":{"type":"string","description":"Роль, которой разрешено редактировать настройки бота","enum":["admin","chat_owners"],"x-enum-descriptions":{"admin":"Администраторы компании","chat_owners":"Владельцы чатов, в которые добавлен бот"},"$ref":"#/components/schemas/BotCanEdit"}},"who_can_add":{"description":"Кто может добавлять бота в чаты","example":"creator","allOf":[{"type":"string","description":"Кто может добавлять бота в чаты","enum":["creator","creator_admin","creator_admin_user","anyone"],"x-enum-descriptions":{"creator":"Только создатель бота","creator_admin":"Создатель и администраторы компании","creator_admin_user":"Создатель, администраторы и участники компании","anyone":"Любой пользователь, в том числе гости"},"$ref":"#/components/schemas/BotWhoCanAdd"}]}},"$ref":"#/components/schemas/BotWebhook"}]}},"$ref":"#/components/schemas/BotResponse"}}},"example":{"data":{"id":1738816,"webhook":{"name":"Бот задач","nickname":"tasks_bot","outgoing_url":"https://www.website.com/tasks/new","events":["message_new"],"trigger_on":"commands","commands":["/task"],"scopes":["messages:create"],"template":"Заказ от {{ client }} на сумму {{ amount }} ₽","template_engine":"liquid","challenge_key":"challenge","link_preview_enabled":true,"ignore_self_messages":false,"events_history_enabled":false,"single_chat":false,"can_edit":["admin"],"who_can_add":"creator"}}}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"bots:read","scopeRoles":["owner","admin","user"]},"paginated":false},"docs":"# Информация о боте\n\n**Метод**: `GET`\n\n**Путь**: `/bots/{id}`\n\n> **Скоуп:** `bots:read`\n\nНастройки бота. Токен в ответе не приходит — его показывают один раз при создании бота и при вызове метода [Ротация токена бота](POST /bots/{id}/recreate_token).\n\nМетод отдаёт только тех ботов, которых вызывающий вправе настраивать: своих, а также чужих, если настройки бота открывают доступ администратору пространства или владельцу чата, где бот состоит. На остальных метод ответит `403`.\n\nПеречень всех ботов пространства, включая чужих, доступен владельцу на тарифе «Корпорация» — [Список ботов пространства](GET /company/bots).\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор бота\n\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/bots/1738816\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Параметры бота\n - `id: integer, int32` (required) — Идентификатор бота (совпадает с `user_id` бота). Пример: `1738816`\n - `webhook: object` (required) — Объект параметров вебхука\n - `name: string` (required, max length: 255) — Имя бота. Пример: `\"Бот задач\"`\n - `nickname: string` (required, max length: 255) — Никнейм бота. Пример: `\"tasks_bot\"`\n - `outgoing_url: string` (required, nullable) — URL исходящего вебхука. `null`, если исходящий вебхук у бота не настроен. Пример: `\"https://www.website.com/tasks/new\"`\n - `events: array of string` (required) — События, на которые подписан бот. Пример: `[\"message_new\"]`\n - `trigger_on: string` (required) — Условие срабатывания исходящего вебхука\n Значения: `commands` — Только на команды (триггер-слова) из commands, `all_messages` — На все сообщения в чатах, где есть бот, `unfurl` — На развёртывание ссылок (link previews)\n - `commands: array of string` (required) — Команды бота (триггер-слова). Пример: `[\"/task\"]`\n - `scopes: array of string` (required) — Скоупы (права доступа) токена бота. Набор по умолчанию шире того, что можно назначить явно, поэтому здесь могут встречаться значения, недоступные для явной установки. Пример: `[\"messages:create\"]`\n - `template: string` (required, nullable) — Шаблон форматирования входящего вебхука. `null`, если не задан. Пример: `\"Заказ от {{ client }} на сумму {{ amount }} ₽\"`\n - `template_engine: string` (required) — Шаблонизатор для обработки шаблона входящего вебхука\n Значения: `liquid` — Liquid — условия, циклы и фильтры, `mustache` — Mustache — простая подстановка без логики\n - `challenge_key: string` (required, nullable) — Название поля проверки для верификации входящего вебхука. `null`, если не задано. Пример: `\"challenge\"`\n - `link_preview_enabled: boolean` (required) — Показывать превью ссылок в сообщениях входящего вебхука. Пример: `true`\n - `ignore_self_messages: boolean` (required) — Игнорировать входящие сообщения, отправленные самим ботом. Пример: `false`\n - `events_history_enabled: boolean` (required) — Сохранять историю событий бота для последующего получения через метод истории событий. Пример: `false`\n - `single_chat: boolean` (required) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false`\n - `can_edit: array of string` (required) — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `[\"admin\"]`\n - `who_can_add: string` (required) — Кто может добавлять бота в чаты\n Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Любой пользователь, в том числе гости\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 1738816,\n \"webhook\": {\n \"name\": \"Бот задач\",\n \"nickname\": \"tasks_bot\",\n \"outgoing_url\": \"https://www.website.com/tasks/new\",\n \"events\": [\n \"message_new\"\n ],\n \"trigger_on\": \"commands\",\n \"commands\": [\n \"/task\"\n ],\n \"scopes\": [\n \"messages:create\"\n ],\n \"template\": \"Заказ от {{ client }} на сумму {{ amount }} ₽\",\n \"template_engine\": \"liquid\",\n \"challenge_key\": \"challenge\",\n \"link_preview_enabled\": true,\n \"ignore_self_messages\": false,\n \"events_history_enabled\": false,\n \"single_chat\": false,\n \"can_edit\": [\n \"admin\"\n ],\n \"who_can_add\": \"creator\"\n }\n }\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"PUT","path":"/bots/{id}","summary":"Редактирование бота","scope":"bots:write","plan":null,"auth":true,"paginated":false,"command":"pachca bots update","docLink":"https://dev.pachca.com/api/bots/update","describe":"# PUT /bots/{id} — Редактирование бота\n\n> **Скоуп:** `bots:write`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор бота\n\n## Тело запроса\n\n- `webhook: object` (required) — Объект параметров вебхука редактируемого бота\n - `name: string` (max length: 255) — Имя бота\n - `nickname: string` (max length: 255) — Никнейм бота. Должен заканчиваться на `_bot`.\n - `outgoing_url: string` — URL исходящего вебхука\n - `events: array of string` — События, на которые подписан бот\n - `trigger_on: string` — Условие срабатывания исходящего вебхука\n Значения: `commands` — Только на команды (триггер-слова) из commands, `all_messages` — На все сообщения в чатах, где есть бот, `unfurl` — На развёртывание ссылок (link previews)\n - `commands: array of string` — Команды бота (триггер-слова), на которые он реагирует при trigger_on = commands. Суммарная длина команд, объединённых через запятую, не должна превышать 255 символов.\n - `scopes: array of string` — Скоупы (права доступа) токена бота. Если не указано, бот получает набор по умолчанию. Боту доступны не все скоупы: часть из них разрешена только пользовательским ролям, и попытка назначить такой скоуп возвращает `400`. Служебные значения `bot` и `all` назначать нельзя.\n - `template: string` — Шаблон форматирования входящего вебхука\n - `template_engine: string` — Шаблонизатор для обработки шаблона входящего вебхука\n Значения: `liquid` — Liquid — условия, циклы и фильтры, `mustache` — Mustache — простая подстановка без логики\n - `challenge_key: string` — Название поля проверки для верификации входящего вебхука\n - `link_preview_enabled: boolean` (default: true) — Показывать превью ссылок в сообщениях входящего вебхука\n - `ignore_self_messages: boolean` (default: false) — Игнорировать входящие сообщения, отправленные самим ботом\n - `events_history_enabled: boolean` (default: false) — Сохранять историю событий бота для последующего получения через метод истории событий\n - `who_can_add: string` — Кто может добавлять бота в чаты\n Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Любой пользователь, в том числе гости\n - `can_edit: array of string` — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель.\n\n## Эквивалентная команда\n\n```bash\npachca bots update 1738816 \\\n --name='Бот задач' \\\n --nickname=tasks_bot \\\n --outgoing-url=https://www.website.com/tasks/new \\\n --events='[\"message_new\"]' \\\n --commands='[\"/task\",\"/help\"]' \\\n --scopes='[\"messages:create\"]' \\\n --template='Заказ от {{ client }} на сумму {{ amount }} ₽' \\\n --challenge-key=challenge \\\n --can-edit='[\"admin\"]' \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/bots/update\nПолная справка: `pachca api PUT /bots/{id} --docs` · схема: `--spec`\n","spec":{"method":"PUT","path":"/bots/{id}","description":"Редактирование бота\n\nМеняет настройки бота: перезаписываются только переданные поля.\n\nПоле `single_chat` принимается только при создании бота. В этом методе оно молча игнорируется: ответ приходит успешный, а режим бота не меняется.\n\nНик обязан заканчиваться на `_bot` и быть свободным в пространстве, иначе метод отвечает ошибкой валидации. Команды и скоупы заменяются переданным списком целиком, а новый набор скоупов сразу применяется к действующему токену бота — перевыпускать его не нужно.\n\nВы не можете редактировать бота, настройки которого вам недоступны (поле «Кто может редактировать настройки бота» находится во вкладке «Основное» в настройках бота).","parameters":[{"name":"id","in":"path","description":"Идентификатор бота","required":true,"schema":{"type":"integer","format":"int32","example":1738816},"example":1738816}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на обновление бота","required":["webhook"],"properties":{"webhook":{"type":"object","description":"Объект параметров вебхука редактируемого бота","properties":{"name":{"type":"string","description":"Имя бота","example":"Бот задач","maxLength":255},"nickname":{"type":"string","description":"Никнейм бота. Должен заканчиваться на `_bot`.","example":"tasks_bot","maxLength":255},"outgoing_url":{"type":"string","description":"URL исходящего вебхука","example":"https://www.website.com/tasks/new"},"events":{"type":"array","description":"События, на которые подписан бот","example":["message_new"],"items":{"type":"string","description":"Событие исходящего вебхука бота","enum":["message_new","message_update","message_delete","reaction_new","reaction_delete","button_click","message_link_shared","chat_member_add","chat_member_remove","company_member_invite","company_member_confirm","company_member_suspend","company_member_activate","company_member_delete","company_member_update","video_call_started","video_call_finished","video_call_recording_ready"],"x-enum-descriptions":{"message_new":"Новое сообщение","message_update":"Сообщение отредактировано","message_delete":"Сообщение удалено","reaction_new":"Добавлена реакция","reaction_delete":"Реакция удалена","button_click":"Нажата кнопка","message_link_shared":"В сообщении отправлена ссылка (для unfurl)","chat_member_add":"Участник добавлен в чат","chat_member_remove":"Участник удалён из чата","company_member_invite":"Сотрудник приглашён в компанию","company_member_confirm":"Сотрудник подтвердил приглашение","company_member_suspend":"Сотрудник деактивирован","company_member_activate":"Сотрудник активирован","company_member_delete":"Сотрудник удалён из компании","company_member_update":"Данные сотрудника изменены","video_call_started":"Видеозвонок начался","video_call_finished":"Видеозвонок завершился","video_call_recording_ready":"Запись видеозвонка готова"},"$ref":"#/components/schemas/BotEventName"}},"trigger_on":{"description":"Условие срабатывания исходящего вебхука","default":"commands","example":"commands","allOf":[{"type":"string","description":"Условие срабатывания исходящего вебхука бота","enum":["commands","all_messages","unfurl"],"x-enum-descriptions":{"commands":"Только на команды (триггер-слова) из commands","all_messages":"На все сообщения в чатах, где есть бот","unfurl":"На развёртывание ссылок (link previews)"},"$ref":"#/components/schemas/BotTriggerOn"}]},"commands":{"type":"array","description":"Команды бота (триггер-слова), на которые он реагирует при trigger_on = commands. Суммарная длина команд, объединённых через запятую, не должна превышать 255 символов.","example":["/task","/help"],"items":{"type":"string"}},"scopes":{"type":"array","description":"Скоупы (права доступа) токена бота. Если не указано, бот получает набор по умолчанию. Боту доступны не все скоупы: часть из них разрешена только пользовательским ролям, и попытка назначить такой скоуп возвращает `400`. Служебные значения `bot` и `all` назначать нельзя.","example":["messages:create"],"items":{"type":"string"}},"template":{"type":"string","description":"Шаблон форматирования входящего вебхука","example":"Заказ от {{ client }} на сумму {{ amount }} ₽"},"template_engine":{"description":"Шаблонизатор для обработки шаблона входящего вебхука","default":"liquid","example":"liquid","allOf":[{"type":"string","description":"Шаблонизатор для форматирования входящих вебхуков","enum":["liquid","mustache"],"x-enum-descriptions":{"liquid":"Liquid — условия, циклы и фильтры","mustache":"Mustache — простая подстановка без логики"},"$ref":"#/components/schemas/BotTemplateEngine"}]},"challenge_key":{"type":"string","description":"Название поля проверки для верификации входящего вебхука","example":"challenge"},"link_preview_enabled":{"type":"boolean","description":"Показывать превью ссылок в сообщениях входящего вебхука","default":true,"example":true},"ignore_self_messages":{"type":"boolean","description":"Игнорировать входящие сообщения, отправленные самим ботом","default":false,"example":false},"events_history_enabled":{"type":"boolean","description":"Сохранять историю событий бота для последующего получения через метод истории событий","default":false,"example":false},"who_can_add":{"description":"Кто может добавлять бота в чаты","default":"creator","example":"creator","allOf":[{"type":"string","description":"Кто может добавлять бота в чаты","enum":["creator","creator_admin","creator_admin_user","anyone"],"x-enum-descriptions":{"creator":"Только создатель бота","creator_admin":"Создатель и администраторы компании","creator_admin_user":"Создатель, администраторы и участники компании","anyone":"Любой пользователь, в том числе гости"},"$ref":"#/components/schemas/BotWhoCanAdd"}]},"can_edit":{"type":"array","description":"Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель.","example":["admin"],"items":{"type":"string","description":"Роль, которой разрешено редактировать настройки бота","enum":["admin","chat_owners"],"x-enum-descriptions":{"admin":"Администраторы компании","chat_owners":"Владельцы чатов, в которые добавлен бот"},"$ref":"#/components/schemas/BotCanEdit"}}}}},"$ref":"#/components/schemas/BotUpdateRequest"}}}},"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Параметры бота","required":["id","webhook"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор бота (совпадает с `user_id` бота)","example":1738816},"webhook":{"description":"Объект параметров вебхука","allOf":[{"type":"object","description":"Параметры вебхука бота","required":["name","nickname","outgoing_url","events","trigger_on","commands","scopes","template","template_engine","challenge_key","link_preview_enabled","ignore_self_messages","events_history_enabled","single_chat","can_edit","who_can_add"],"properties":{"name":{"type":"string","description":"Имя бота","example":"Бот задач","maxLength":255},"nickname":{"type":"string","description":"Никнейм бота","example":"tasks_bot","maxLength":255},"outgoing_url":{"type":"string","description":"URL исходящего вебхука. `null`, если исходящий вебхук у бота не настроен.","example":"https://www.website.com/tasks/new","nullable":true},"events":{"type":"array","description":"События, на которые подписан бот","example":["message_new"],"items":{"type":"string","description":"Событие исходящего вебхука бота","enum":["message_new","message_update","message_delete","reaction_new","reaction_delete","button_click","message_link_shared","chat_member_add","chat_member_remove","company_member_invite","company_member_confirm","company_member_suspend","company_member_activate","company_member_delete","company_member_update","video_call_started","video_call_finished","video_call_recording_ready"],"x-enum-descriptions":{"message_new":"Новое сообщение","message_update":"Сообщение отредактировано","message_delete":"Сообщение удалено","reaction_new":"Добавлена реакция","reaction_delete":"Реакция удалена","button_click":"Нажата кнопка","message_link_shared":"В сообщении отправлена ссылка (для unfurl)","chat_member_add":"Участник добавлен в чат","chat_member_remove":"Участник удалён из чата","company_member_invite":"Сотрудник приглашён в компанию","company_member_confirm":"Сотрудник подтвердил приглашение","company_member_suspend":"Сотрудник деактивирован","company_member_activate":"Сотрудник активирован","company_member_delete":"Сотрудник удалён из компании","company_member_update":"Данные сотрудника изменены","video_call_started":"Видеозвонок начался","video_call_finished":"Видеозвонок завершился","video_call_recording_ready":"Запись видеозвонка готова"},"$ref":"#/components/schemas/BotEventName"}},"trigger_on":{"description":"Условие срабатывания исходящего вебхука","example":"commands","allOf":[{"type":"string","description":"Условие срабатывания исходящего вебхука бота","enum":["commands","all_messages","unfurl"],"x-enum-descriptions":{"commands":"Только на команды (триггер-слова) из commands","all_messages":"На все сообщения в чатах, где есть бот","unfurl":"На развёртывание ссылок (link previews)"},"$ref":"#/components/schemas/BotTriggerOn"}]},"commands":{"type":"array","description":"Команды бота (триггер-слова)","example":["/task"],"items":{"type":"string"}},"scopes":{"type":"array","description":"Скоупы (права доступа) токена бота. Набор по умолчанию шире того, что можно назначить явно, поэтому здесь могут встречаться значения, недоступные для явной установки.","example":["messages:create"],"items":{"type":"string"}},"template":{"type":"string","description":"Шаблон форматирования входящего вебхука. `null`, если не задан.","example":"Заказ от {{ client }} на сумму {{ amount }} ₽","nullable":true},"template_engine":{"description":"Шаблонизатор для обработки шаблона входящего вебхука","example":"liquid","allOf":[{"type":"string","description":"Шаблонизатор для форматирования входящих вебхуков","enum":["liquid","mustache"],"x-enum-descriptions":{"liquid":"Liquid — условия, циклы и фильтры","mustache":"Mustache — простая подстановка без логики"},"$ref":"#/components/schemas/BotTemplateEngine"}]},"challenge_key":{"type":"string","description":"Название поля проверки для верификации входящего вебхука. `null`, если не задано.","example":"challenge","nullable":true},"link_preview_enabled":{"type":"boolean","description":"Показывать превью ссылок в сообщениях входящего вебхука","example":true},"ignore_self_messages":{"type":"boolean","description":"Игнорировать входящие сообщения, отправленные самим ботом","example":false},"events_history_enabled":{"type":"boolean","description":"Сохранять историю событий бота для последующего получения через метод истории событий","example":false},"single_chat":{"type":"boolean","description":"Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят.","example":false},"can_edit":{"type":"array","description":"Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель.","example":["admin"],"items":{"type":"string","description":"Роль, которой разрешено редактировать настройки бота","enum":["admin","chat_owners"],"x-enum-descriptions":{"admin":"Администраторы компании","chat_owners":"Владельцы чатов, в которые добавлен бот"},"$ref":"#/components/schemas/BotCanEdit"}},"who_can_add":{"description":"Кто может добавлять бота в чаты","example":"creator","allOf":[{"type":"string","description":"Кто может добавлять бота в чаты","enum":["creator","creator_admin","creator_admin_user","anyone"],"x-enum-descriptions":{"creator":"Только создатель бота","creator_admin":"Создатель и администраторы компании","creator_admin_user":"Создатель, администраторы и участники компании","anyone":"Любой пользователь, в том числе гости"},"$ref":"#/components/schemas/BotWhoCanAdd"}]}},"$ref":"#/components/schemas/BotWebhook"}]}},"$ref":"#/components/schemas/BotResponse"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"bots:write","scopeRoles":["owner","admin","user"]},"paginated":false},"docs":"# Редактирование бота\n\n**Метод**: `PUT`\n\n**Путь**: `/bots/{id}`\n\n> **Скоуп:** `bots:write`\n\nМеняет настройки бота: перезаписываются только переданные поля.\n\nПоле `single_chat` принимается только при создании бота. В этом методе оно молча игнорируется: ответ приходит успешный, а режим бота не меняется.\n\nНик обязан заканчиваться на `_bot` и быть свободным в пространстве, иначе метод отвечает ошибкой валидации. Команды и скоупы заменяются переданным списком целиком, а новый набор скоупов сразу применяется к действующему токену бота — перевыпускать его не нужно.\n\nВы не можете редактировать бота, настройки которого вам недоступны (поле «Кто может редактировать настройки бота» находится во вкладке «Основное» в настройках бота).\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор бота\n\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `webhook: object` (required) — Объект параметров вебхука редактируемого бота\n - `name: string` (max length: 255) — Имя бота. Пример: `\"Бот задач\"`\n - `nickname: string` (max length: 255) — Никнейм бота. Должен заканчиваться на `_bot`. Пример: `\"tasks_bot\"`\n - `outgoing_url: string` — URL исходящего вебхука. Пример: `\"https://www.website.com/tasks/new\"`\n - `events: array of string` — События, на которые подписан бот. Пример: `[\"message_new\"]`\n - `trigger_on: string` — Условие срабатывания исходящего вебхука\n Значения: `commands` — Только на команды (триггер-слова) из commands, `all_messages` — На все сообщения в чатах, где есть бот, `unfurl` — На развёртывание ссылок (link previews)\n - `commands: array of string` — Команды бота (триггер-слова), на которые он реагирует при trigger_on = commands. Суммарная длина команд, объединённых через запятую, не должна превышать 255 символов. Пример: `[\"/task\",\"/help\"]`\n - `scopes: array of string` — Скоупы (права доступа) токена бота. Если не указано, бот получает набор по умолчанию. Боту доступны не все скоупы: часть из них разрешена только пользовательским ролям, и попытка назначить такой скоуп возвращает `400`. Служебные значения `bot` и `all` назначать нельзя. Пример: `[\"messages:create\"]`\n - `template: string` — Шаблон форматирования входящего вебхука. Пример: `\"Заказ от {{ client }} на сумму {{ amount }} ₽\"`\n - `template_engine: string` — Шаблонизатор для обработки шаблона входящего вебхука\n Значения: `liquid` — Liquid — условия, циклы и фильтры, `mustache` — Mustache — простая подстановка без логики\n - `challenge_key: string` — Название поля проверки для верификации входящего вебхука. Пример: `\"challenge\"`\n - `link_preview_enabled: boolean` (default: true) — Показывать превью ссылок в сообщениях входящего вебхука. Пример: `true`\n - `ignore_self_messages: boolean` (default: false) — Игнорировать входящие сообщения, отправленные самим ботом. Пример: `false`\n - `events_history_enabled: boolean` (default: false) — Сохранять историю событий бота для последующего получения через метод истории событий. Пример: `false`\n - `who_can_add: string` — Кто может добавлять бота в чаты\n Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Любой пользователь, в том числе гости\n - `can_edit: array of string` — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `[\"admin\"]`\n\n### Пример\n\n```json\n{\n \"webhook\": {\n \"name\": \"Бот задач\",\n \"nickname\": \"tasks_bot\",\n \"outgoing_url\": \"https://www.website.com/tasks/new\",\n \"events\": [\n \"message_new\"\n ],\n \"commands\": [\n \"/task\",\n \"/help\"\n ],\n \"scopes\": [\n \"messages:create\"\n ],\n \"template\": \"Заказ от {{ client }} на сумму {{ amount }} ₽\",\n \"challenge_key\": \"challenge\",\n \"can_edit\": [\n \"admin\"\n ]\n }\n}\n```\n\n## Пример запроса\n\n```bash\ncurl -X PUT \"https://api.pachca.com/api/shared/v1/bots/1738816\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"webhook\": {\n \"name\": \"Бот задач\",\n \"nickname\": \"tasks_bot\",\n \"outgoing_url\": \"https://www.website.com/tasks/new\",\n \"events\": [\n \"message_new\"\n ],\n \"commands\": [\n \"/task\",\n \"/help\"\n ],\n \"scopes\": [\n \"messages:create\"\n ],\n \"template\": \"Заказ от {{ client }} на сумму {{ amount }} ₽\",\n \"challenge_key\": \"challenge\",\n \"can_edit\": [\n \"admin\"\n ]\n }\n}'\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Параметры бота\n - `id: integer, int32` (required) — Идентификатор бота (совпадает с `user_id` бота). Пример: `1738816`\n - `webhook: object` (required) — Объект параметров вебхука\n - `name: string` (required, max length: 255) — Имя бота. Пример: `\"Бот задач\"`\n - `nickname: string` (required, max length: 255) — Никнейм бота. Пример: `\"tasks_bot\"`\n - `outgoing_url: string` (required, nullable) — URL исходящего вебхука. `null`, если исходящий вебхук у бота не настроен. Пример: `\"https://www.website.com/tasks/new\"`\n - `events: array of string` (required) — События, на которые подписан бот. Пример: `[\"message_new\"]`\n - `trigger_on: string` (required) — Условие срабатывания исходящего вебхука\n Значения: `commands` — Только на команды (триггер-слова) из commands, `all_messages` — На все сообщения в чатах, где есть бот, `unfurl` — На развёртывание ссылок (link previews)\n - `commands: array of string` (required) — Команды бота (триггер-слова). Пример: `[\"/task\"]`\n - `scopes: array of string` (required) — Скоупы (права доступа) токена бота. Набор по умолчанию шире того, что можно назначить явно, поэтому здесь могут встречаться значения, недоступные для явной установки. Пример: `[\"messages:create\"]`\n - `template: string` (required, nullable) — Шаблон форматирования входящего вебхука. `null`, если не задан. Пример: `\"Заказ от {{ client }} на сумму {{ amount }} ₽\"`\n - `template_engine: string` (required) — Шаблонизатор для обработки шаблона входящего вебхука\n Значения: `liquid` — Liquid — условия, циклы и фильтры, `mustache` — Mustache — простая подстановка без логики\n - `challenge_key: string` (required, nullable) — Название поля проверки для верификации входящего вебхука. `null`, если не задано. Пример: `\"challenge\"`\n - `link_preview_enabled: boolean` (required) — Показывать превью ссылок в сообщениях входящего вебхука. Пример: `true`\n - `ignore_self_messages: boolean` (required) — Игнорировать входящие сообщения, отправленные самим ботом. Пример: `false`\n - `events_history_enabled: boolean` (required) — Сохранять историю событий бота для последующего получения через метод истории событий. Пример: `false`\n - `single_chat: boolean` (required) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false`\n - `can_edit: array of string` (required) — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `[\"admin\"]`\n - `who_can_add: string` (required) — Кто может добавлять бота в чаты\n Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Любой пользователь, в том числе гости\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 1738816,\n \"webhook\": {\n \"name\": \"Бот задач\",\n \"nickname\": \"tasks_bot\",\n \"outgoing_url\": \"https://www.website.com/tasks/new\",\n \"events\": [\n \"message_new\"\n ],\n \"trigger_on\": \"commands\",\n \"commands\": [\n \"/task\"\n ],\n \"scopes\": [\n \"messages:create\"\n ],\n \"template\": \"Заказ от {{ client }} на сумму {{ amount }} ₽\",\n \"template_engine\": \"liquid\",\n \"challenge_key\": \"challenge\",\n \"link_preview_enabled\": true,\n \"ignore_self_messages\": false,\n \"events_history_enabled\": false,\n \"single_chat\": false,\n \"can_edit\": [\n \"admin\"\n ],\n \"who_can_add\": \"creator\"\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"DELETE","path":"/bots/{id}","summary":"Удаление бота","scope":"bots:write","plan":null,"auth":true,"paginated":false,"command":"pachca bots delete","docLink":"https://dev.pachca.com/api/bots/delete","describe":"# DELETE /bots/{id} — Удаление бота\n\n> **Скоуп:** `bots:write`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор бота\n\n## Эквивалентная команда\n\n```bash\npachca bots delete 1738816 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/bots/delete\nПолная справка: `pachca api DELETE /bots/{id} --docs` · схема: `--spec`\n","spec":{"method":"DELETE","path":"/bots/{id}","description":"Удаление бота\n\nУбирает бота из пространства насовсем. Прежний `access_token` бота сразу инвалидируется, бот исключается из всех чатов, его исходящий вебхук удаляется.\n\nУдаление доступно создателю бота, а также администратору пространства, если настройки бота открывают администраторам доступ к редактированию. Владельцы и администраторы чатов удалять бота не могут, даже если им разрешено его редактировать.","parameters":[{"name":"id","in":"path","description":"Идентификатор бота","required":true,"schema":{"type":"integer","format":"int32","example":1738816},"example":1738816}],"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"bots:write","scopeRoles":["owner","admin","user"]},"paginated":false},"docs":"# Удаление бота\n\n**Метод**: `DELETE`\n\n**Путь**: `/bots/{id}`\n\n> **Скоуп:** `bots:write`\n\nУбирает бота из пространства насовсем. Прежний `access_token` бота сразу инвалидируется, бот исключается из всех чатов, его исходящий вебхук удаляется.\n\nУдаление доступно создателю бота, а также администратору пространства, если настройки бота открывают администраторам доступ к редактированию. Владельцы и администраторы чатов удалять бота не могут, даже если им разрешено его редактировать.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор бота\n\n\n## Пример запроса\n\n```bash\ncurl -X DELETE \"https://api.pachca.com/api/shared/v1/bots/1738816\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"POST","path":"/bots/{id}/recreate_token","summary":"Ротация токена бота","scope":"bots:write","plan":null,"auth":true,"paginated":false,"command":"pachca bots recreate-token","docLink":"https://dev.pachca.com/api/bots/recreate-token","describe":"# POST /bots/{id}/recreate_token — Ротация токена бота\n\n> **Скоуп:** `bots:write`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор бота\n\n## Эквивалентная команда\n\n```bash\npachca bots recreate-token 1738816 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/bots/recreate-token\nПолная справка: `pachca api POST /bots/{id}/recreate_token --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/bots/{id}/recreate_token","description":"Ротация токена бота\n\nМетод генерирует боту новый `access_token` и сразу инвалидирует прежний. Используйте его при компрометации токена или плановой ротации секрета в `CI`.\n\nНовый токен возвращается в ответе только один раз — сохраните его сразу. Права у него те же: скоупы переносятся с прежнего токена.\n\n\nРотация доступна создателю бота, а также администратору пространства, если настройки бота открывают администраторам доступ к редактированию. Владелец чата, где состоит бот, ротировать токен не может, даже когда остальные настройки бота ему открыты.","parameters":[{"name":"id","in":"path","description":"Идентификатор бота","required":true,"schema":{"type":"integer","format":"int32","example":1738816},"example":1738816}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Параметры созданного бота","required":["id","webhook","access_token"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор бота (совпадает с `user_id` бота)","example":1738816},"webhook":{"description":"Объект параметров вебхука","allOf":[{"type":"object","description":"Параметры вебхука бота","required":["name","nickname","outgoing_url","events","trigger_on","commands","scopes","template","template_engine","challenge_key","link_preview_enabled","ignore_self_messages","events_history_enabled","single_chat","can_edit","who_can_add"],"properties":{"name":{"type":"string","description":"Имя бота","example":"Бот задач","maxLength":255},"nickname":{"type":"string","description":"Никнейм бота","example":"tasks_bot","maxLength":255},"outgoing_url":{"type":"string","description":"URL исходящего вебхука. `null`, если исходящий вебхук у бота не настроен.","example":"https://www.website.com/tasks/new","nullable":true},"events":{"type":"array","description":"События, на которые подписан бот","example":["message_new"],"items":{"type":"string","description":"Событие исходящего вебхука бота","enum":["message_new","message_update","message_delete","reaction_new","reaction_delete","button_click","message_link_shared","chat_member_add","chat_member_remove","company_member_invite","company_member_confirm","company_member_suspend","company_member_activate","company_member_delete","company_member_update","video_call_started","video_call_finished","video_call_recording_ready"],"x-enum-descriptions":{"message_new":"Новое сообщение","message_update":"Сообщение отредактировано","message_delete":"Сообщение удалено","reaction_new":"Добавлена реакция","reaction_delete":"Реакция удалена","button_click":"Нажата кнопка","message_link_shared":"В сообщении отправлена ссылка (для unfurl)","chat_member_add":"Участник добавлен в чат","chat_member_remove":"Участник удалён из чата","company_member_invite":"Сотрудник приглашён в компанию","company_member_confirm":"Сотрудник подтвердил приглашение","company_member_suspend":"Сотрудник деактивирован","company_member_activate":"Сотрудник активирован","company_member_delete":"Сотрудник удалён из компании","company_member_update":"Данные сотрудника изменены","video_call_started":"Видеозвонок начался","video_call_finished":"Видеозвонок завершился","video_call_recording_ready":"Запись видеозвонка готова"},"$ref":"#/components/schemas/BotEventName"}},"trigger_on":{"description":"Условие срабатывания исходящего вебхука","example":"commands","allOf":[{"type":"string","description":"Условие срабатывания исходящего вебхука бота","enum":["commands","all_messages","unfurl"],"x-enum-descriptions":{"commands":"Только на команды (триггер-слова) из commands","all_messages":"На все сообщения в чатах, где есть бот","unfurl":"На развёртывание ссылок (link previews)"},"$ref":"#/components/schemas/BotTriggerOn"}]},"commands":{"type":"array","description":"Команды бота (триггер-слова)","example":["/task"],"items":{"type":"string"}},"scopes":{"type":"array","description":"Скоупы (права доступа) токена бота. Набор по умолчанию шире того, что можно назначить явно, поэтому здесь могут встречаться значения, недоступные для явной установки.","example":["messages:create"],"items":{"type":"string"}},"template":{"type":"string","description":"Шаблон форматирования входящего вебхука. `null`, если не задан.","example":"Заказ от {{ client }} на сумму {{ amount }} ₽","nullable":true},"template_engine":{"description":"Шаблонизатор для обработки шаблона входящего вебхука","example":"liquid","allOf":[{"type":"string","description":"Шаблонизатор для форматирования входящих вебхуков","enum":["liquid","mustache"],"x-enum-descriptions":{"liquid":"Liquid — условия, циклы и фильтры","mustache":"Mustache — простая подстановка без логики"},"$ref":"#/components/schemas/BotTemplateEngine"}]},"challenge_key":{"type":"string","description":"Название поля проверки для верификации входящего вебхука. `null`, если не задано.","example":"challenge","nullable":true},"link_preview_enabled":{"type":"boolean","description":"Показывать превью ссылок в сообщениях входящего вебхука","example":true},"ignore_self_messages":{"type":"boolean","description":"Игнорировать входящие сообщения, отправленные самим ботом","example":false},"events_history_enabled":{"type":"boolean","description":"Сохранять историю событий бота для последующего получения через метод истории событий","example":false},"single_chat":{"type":"boolean","description":"Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят.","example":false},"can_edit":{"type":"array","description":"Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель.","example":["admin"],"items":{"type":"string","description":"Роль, которой разрешено редактировать настройки бота","enum":["admin","chat_owners"],"x-enum-descriptions":{"admin":"Администраторы компании","chat_owners":"Владельцы чатов, в которые добавлен бот"},"$ref":"#/components/schemas/BotCanEdit"}},"who_can_add":{"description":"Кто может добавлять бота в чаты","example":"creator","allOf":[{"type":"string","description":"Кто может добавлять бота в чаты","enum":["creator","creator_admin","creator_admin_user","anyone"],"x-enum-descriptions":{"creator":"Только создатель бота","creator_admin":"Создатель и администраторы компании","creator_admin_user":"Создатель, администраторы и участники компании","anyone":"Любой пользователь, в том числе гости"},"$ref":"#/components/schemas/BotWhoCanAdd"}]}},"$ref":"#/components/schemas/BotWebhook"}]},"access_token":{"type":"string","description":"Токен доступа бота. Возвращается при создании бота и при ротации токена.","example":"bm90X2FfcmVhbF90b2tlbg"}},"$ref":"#/components/schemas/BotCreateResponse"}}},"example":{"data":{"id":1738816,"webhook":{"name":"Бот задач","nickname":"tasks_bot","outgoing_url":"https://www.website.com/tasks/new","events":["message_new"],"trigger_on":"commands","commands":["/task"],"scopes":["messages:create"],"template":"Заказ от {{ client }} на сумму {{ amount }} ₽","template_engine":"liquid","challenge_key":"challenge","link_preview_enabled":true,"ignore_self_messages":false,"events_history_enabled":false,"single_chat":false,"can_edit":["admin"],"who_can_add":"creator"},"access_token":"bm90X2FfcmVhbF90b2tlbg"}}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"bots:write","scopeRoles":["owner","admin","user"]},"paginated":false},"docs":"# Ротация токена бота\n\n**Метод**: `POST`\n\n**Путь**: `/bots/{id}/recreate_token`\n\n> **Скоуп:** `bots:write`\n\nМетод генерирует боту новый `access_token` и сразу инвалидирует прежний. Используйте его при компрометации токена или плановой ротации секрета в `CI`.\n\nНовый токен возвращается в ответе только один раз — сохраните его сразу. Права у него те же: скоупы переносятся с прежнего токена.\n\n\nРотация доступна создателю бота, а также администратору пространства, если настройки бота открывают администраторам доступ к редактированию. Владелец чата, где состоит бот, ротировать токен не может, даже когда остальные настройки бота ему открыты.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор бота\n\n\n## Пример запроса\n\n```bash\ncurl -X POST \"https://api.pachca.com/api/shared/v1/bots/1738816/recreate_token\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Параметры созданного бота\n - `id: integer, int32` (required) — Идентификатор бота (совпадает с `user_id` бота). Пример: `1738816`\n - `webhook: object` (required) — Объект параметров вебхука\n - `name: string` (required, max length: 255) — Имя бота. Пример: `\"Бот задач\"`\n - `nickname: string` (required, max length: 255) — Никнейм бота. Пример: `\"tasks_bot\"`\n - `outgoing_url: string` (required, nullable) — URL исходящего вебхука. `null`, если исходящий вебхук у бота не настроен. Пример: `\"https://www.website.com/tasks/new\"`\n - `events: array of string` (required) — События, на которые подписан бот. Пример: `[\"message_new\"]`\n - `trigger_on: string` (required) — Условие срабатывания исходящего вебхука\n Значения: `commands` — Только на команды (триггер-слова) из commands, `all_messages` — На все сообщения в чатах, где есть бот, `unfurl` — На развёртывание ссылок (link previews)\n - `commands: array of string` (required) — Команды бота (триггер-слова). Пример: `[\"/task\"]`\n - `scopes: array of string` (required) — Скоупы (права доступа) токена бота. Набор по умолчанию шире того, что можно назначить явно, поэтому здесь могут встречаться значения, недоступные для явной установки. Пример: `[\"messages:create\"]`\n - `template: string` (required, nullable) — Шаблон форматирования входящего вебхука. `null`, если не задан. Пример: `\"Заказ от {{ client }} на сумму {{ amount }} ₽\"`\n - `template_engine: string` (required) — Шаблонизатор для обработки шаблона входящего вебхука\n Значения: `liquid` — Liquid — условия, циклы и фильтры, `mustache` — Mustache — простая подстановка без логики\n - `challenge_key: string` (required, nullable) — Название поля проверки для верификации входящего вебхука. `null`, если не задано. Пример: `\"challenge\"`\n - `link_preview_enabled: boolean` (required) — Показывать превью ссылок в сообщениях входящего вебхука. Пример: `true`\n - `ignore_self_messages: boolean` (required) — Игнорировать входящие сообщения, отправленные самим ботом. Пример: `false`\n - `events_history_enabled: boolean` (required) — Сохранять историю событий бота для последующего получения через метод истории событий. Пример: `false`\n - `single_chat: boolean` (required) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false`\n - `can_edit: array of string` (required) — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `[\"admin\"]`\n - `who_can_add: string` (required) — Кто может добавлять бота в чаты\n Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Любой пользователь, в том числе гости\n - `access_token: string` (required) — Токен доступа бота. Возвращается при создании бота и при ротации токена. Пример: `\"bm90X2FfcmVhbF90b2tlbg\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 1738816,\n \"webhook\": {\n \"name\": \"Бот задач\",\n \"nickname\": \"tasks_bot\",\n \"outgoing_url\": \"https://www.website.com/tasks/new\",\n \"events\": [\n \"message_new\"\n ],\n \"trigger_on\": \"commands\",\n \"commands\": [\n \"/task\"\n ],\n \"scopes\": [\n \"messages:create\"\n ],\n \"template\": \"Заказ от {{ client }} на сумму {{ amount }} ₽\",\n \"template_engine\": \"liquid\",\n \"challenge_key\": \"challenge\",\n \"link_preview_enabled\": true,\n \"ignore_self_messages\": false,\n \"events_history_enabled\": false,\n \"single_chat\": false,\n \"can_edit\": [\n \"admin\"\n ],\n \"who_can_add\": \"creator\"\n },\n \"access_token\": \"bm90X2FfcmVhbF90b2tlbg\"\n }\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"POST","path":"/chats","summary":"Новый чат","scope":"chats:create","plan":null,"auth":true,"paginated":false,"command":"pachca chats create","docLink":"https://dev.pachca.com/api/chats/create","describe":"# POST /chats — Новый чат\n\n> **Скоуп:** `chats:create`\n\n## Тело запроса\n\n- `chat: object` (required) — Собранный объект параметров создаваемого чата\n - `name: string` (required, max length: 255) — Название\n - `member_ids: array of integer` — Массив идентификаторов пользователей, которые станут участниками\n - `group_tag_ids: array of integer` — Массив идентификаторов тегов, которые станут участниками\n - `channel: boolean` (default: false) — Является каналом\n - `public: boolean` (default: false) — Открытый доступ\n\n## Эквивалентная команда\n\n```bash\npachca chats create \\\n --name='🤿 aqua' \\\n --member-ids='[186,187]' \\\n --group-tag-ids='[86,18]' \\\n --channel \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/chats/create\nПолная справка: `pachca api POST /chats --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/chats","description":"Новый чат\n\nСоздаёт беседу или канал. Владелец токена становится владельцем чата, и роль эта в дальнейшем не передаётся.\n\nДля создания личной переписки 1 на 1 с пользователем пользуйтесь методом [Новое сообщение](POST /messages). Чтобы обсудить конкретное сообщение, чат заводить не нужно — под ним заводят тред методом [Новый тред](POST /messages/{id}/thread).\n\nУчастников можно передать сразу: `member_ids` добавляет поимённо, `group_tag_ids` приводит всех, кто состоит в теге, и дальше поддерживает состав сам. Идентификаторы, которых в пространстве нет, а также приостановленные и удалённые сотрудники молча отбрасываются — ответ приходит успешным, а сотрудника в чате не оказывается, поэтому сверяйте состав в ответе.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на создание чата","required":["chat"],"properties":{"chat":{"type":"object","description":"Собранный объект параметров создаваемого чата","required":["name"],"properties":{"name":{"type":"string","description":"Название","example":"🤿 aqua","maxLength":255},"member_ids":{"type":"array","description":"Массив идентификаторов пользователей, которые станут участниками","example":[186,187],"items":{"type":"integer","format":"int32"}},"group_tag_ids":{"type":"array","description":"Массив идентификаторов тегов, которые станут участниками","example":[86,18],"items":{"type":"integer","format":"int32"}},"channel":{"type":"boolean","description":"Является каналом","default":false,"example":true},"public":{"type":"boolean","description":"Открытый доступ","default":false,"example":false}}}},"$ref":"#/components/schemas/ChatCreateRequest"}}}},"responses":{"201":{"description":"The request has succeeded and a new resource has been created as a result.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Чат","required":["id","name","created_at","owner_id","member_ids","group_tag_ids","channel","archived","personal","public","last_message_at","meet_room_url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор созданного чата","example":334},"name":{"type":"string","description":"Название","example":"🤿 aqua","maxLength":255},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания чата (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2021-08-28T15:56:53.000Z"},"owner_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, создавшего чат","example":185},"member_ids":{"type":"array","description":"Массив идентификаторов пользователей, участников","example":[185,186,187],"items":{"type":"integer","format":"int32"}},"group_tag_ids":{"type":"array","description":"Массив идентификаторов тегов, участников","example":[9111],"items":{"type":"integer","format":"int32"}},"channel":{"type":"boolean","description":"Является каналом","example":true},"archived":{"type":"boolean","description":"Находится в архиве","example":false},"personal":{"type":"boolean","description":"Является личным чатом","example":false},"public":{"type":"boolean","description":"Открытый доступ","example":false},"last_message_at":{"type":"string","format":"date-time","description":"Дата и время создания последнего сообщения в чате (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2021-08-28T15:56:53.000Z"},"meet_room_url":{"type":"string","description":"Ссылка на Видеочат","example":"https://meet.pachca.com/aqua-94bb21b5"}},"$ref":"#/components/schemas/Chat"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"chats:create","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Новый чат\n\n**Метод**: `POST`\n\n**Путь**: `/chats`\n\n> **Скоуп:** `chats:create`\n\nСоздаёт беседу или канал. Владелец токена становится владельцем чата, и роль эта в дальнейшем не передаётся.\n\nДля создания личной переписки 1 на 1 с пользователем пользуйтесь методом [Новое сообщение](POST /messages). Чтобы обсудить конкретное сообщение, чат заводить не нужно — под ним заводят тред методом [Новый тред](POST /messages/{id}/thread).\n\nУчастников можно передать сразу: `member_ids` добавляет поимённо, `group_tag_ids` приводит всех, кто состоит в теге, и дальше поддерживает состав сам. Идентификаторы, которых в пространстве нет, а также приостановленные и удалённые сотрудники молча отбрасываются — ответ приходит успешным, а сотрудника в чате не оказывается, поэтому сверяйте состав в ответе.\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `chat: object` (required) — Собранный объект параметров создаваемого чата\n - `name: string` (required, max length: 255) — Название. Пример: `\"🤿 aqua\"`\n - `member_ids: array of integer` — Массив идентификаторов пользователей, которые станут участниками. Пример: `[186,187]`\n - `group_tag_ids: array of integer` — Массив идентификаторов тегов, которые станут участниками. Пример: `[86,18]`\n - `channel: boolean` (default: false) — Является каналом. Пример: `true`\n - `public: boolean` (default: false) — Открытый доступ. Пример: `false`\n\n### Пример\n\n```json\n{\n \"chat\": {\n \"name\": \"🤿 aqua\",\n \"member_ids\": [\n 186,\n 187\n ],\n \"group_tag_ids\": [\n 86,\n 18\n ],\n \"channel\": true\n }\n}\n```\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/chats\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"chat\": {\n \"name\": \"🤿 aqua\",\n \"member_ids\": [\n 186,\n 187\n ],\n \"group_tag_ids\": [\n 86,\n 18\n ],\n \"channel\": true\n }\n}'\n```\n\n## Ответы\n\n### 201: The request has succeeded and a new resource has been created as a result.\n\n**Схема ответа:**\n\n- `data: object` (required) — Чат\n - `id: integer, int32` (required) — Идентификатор созданного чата. Пример: `334`\n - `name: string` (required, max length: 255) — Название. Пример: `\"🤿 aqua\"`\n - `created_at: date-time` (required) — Дата и время создания чата (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2021-08-28T15:56:53.000Z\"`\n - `owner_id: integer, int32` (required) — Идентификатор пользователя, создавшего чат. Пример: `185`\n - `member_ids: array of integer` (required) — Массив идентификаторов пользователей, участников. Пример: `[185,186,187]`\n - `group_tag_ids: array of integer` (required) — Массив идентификаторов тегов, участников. Пример: `[9111]`\n - `channel: boolean` (required) — Является каналом. Пример: `true`\n - `archived: boolean` (required) — Находится в архиве. Пример: `false`\n - `personal: boolean` (required) — Является личным чатом. Пример: `false`\n - `public: boolean` (required) — Открытый доступ. Пример: `false`\n - `last_message_at: date-time` (required) — Дата и время создания последнего сообщения в чате (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2021-08-28T15:56:53.000Z\"`\n - `meet_room_url: string` (required) — Ссылка на Видеочат. Пример: `\"https://meet.pachca.com/aqua-94bb21b5\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 334,\n \"name\": \"🤿 aqua\",\n \"created_at\": \"2021-08-28T15:56:53.000Z\",\n \"owner_id\": 185,\n \"member_ids\": [\n 185,\n 186,\n 187\n ],\n \"group_tag_ids\": [\n 9111\n ],\n \"channel\": true,\n \"archived\": false,\n \"personal\": false,\n \"public\": false,\n \"last_message_at\": \"2021-08-28T15:56:53.000Z\",\n \"meet_room_url\": \"https://meet.pachca.com/aqua-94bb21b5\"\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/chats","summary":"Список чатов","scope":"chats:read","plan":null,"auth":true,"paginated":true,"command":"pachca chats list","docLink":"https://dev.pachca.com/api/chats/list","describe":"# GET /chats — Список чатов\n\n> **Скоуп:** `chats:read`\n\n> Пагинация: добавьте `--all` для автоматического обхода страниц\n\n## Параметры\n\n- `sort` — query: Поле сортировки\n- `order` — query: Направление сортировки\n- `availability` — query: Параметр, который отвечает за доступность и выборку чатов для пользователя\n- `archived` — query: Добавляет к выдаче архивные чаты. По умолчанию возвращаются только активные. Работает при любом значении `availability`.\n- `last_message_at_after` — query: Фильтрация по времени создания последнего сообщения: вернутся чаты, где оно позже указанного. Значение в ISO-8601, смещение вида `+03:00` учитывается, время без смещения считается UTC.\n- `last_message_at_before` — query: Фильтрация по времени создания последнего сообщения: вернутся чаты, где оно раньше указанного. Значение в ISO-8601, смещение вида `+03:00` учитывается, время без смещения считается UTC.\n- `personal` — query: Фильтрация по личным и групповым чатам. Если параметр не указан, возвращаются любые чаты.\n- `limit` — query: Количество возвращаемых сущностей за один запрос\n- `cursor` — query: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n## Эквивалентная команда\n\n```bash\n# Добавьте --all для автоматической пагинации\npachca chats list \\\n --sort=id \\\n --order=desc \\\n --availability=is_member \\\n --archived \\\n --last-message-at-after=2025-01-01T00:00:00.000Z \\\n --last-message-at-before=2025-02-01T00:00:00.000Z \\\n --no-personal \\\n --limit=1 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/chats/list\nПолная справка: `pachca api GET /chats --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/chats","description":"Список чатов\n\nПо умолчанию — беседы, каналы и личные переписки, где состоит владелец токена. С `availability=public` метод отдаёт вместо этого все открытые чаты пространства, включая те, куда вызывающий не вступал.\n\nТреды в списке не приходят никогда, для них есть [Список тредов](GET /threads).\n\n`archived=true` не переключает выдачу на архив, а добавляет архивные чаты к активным.","parameters":[{"name":"sort","in":"query","description":"Поле сортировки","required":false,"schema":{"default":"id","allOf":[{"type":"string","description":"Поле сортировки чатов","enum":["id","last_message_at"],"x-enum-descriptions":{"id":"По идентификатору чата","last_message_at":"По дате и времени создания последнего сообщения"},"$ref":"#/components/schemas/ChatSortField"}]},"example":"id","explode":false},{"name":"order","in":"query","description":"Направление сортировки","required":false,"schema":{"default":"desc","allOf":[{"type":"string","description":"Порядок сортировки","enum":["asc","desc"],"x-enum-descriptions":{"asc":"По возрастанию","desc":"По убыванию"},"$ref":"#/components/schemas/SortOrder"}]},"example":"desc","explode":false},{"name":"availability","in":"query","description":"Параметр, который отвечает за доступность и выборку чатов для пользователя","required":false,"schema":{"default":"is_member","allOf":[{"type":"string","description":"Доступность чатов для пользователя","enum":["is_member","public"],"x-enum-descriptions":{"is_member":"Чаты, где пользователь является участником","public":"Все открытые чаты компании, вне зависимости от участия в них пользователя"},"$ref":"#/components/schemas/ChatAvailability"}]},"example":"is_member","explode":false},{"name":"archived","in":"query","description":"Добавляет к выдаче архивные чаты. По умолчанию возвращаются только активные. Работает при любом значении `availability`.","required":false,"schema":{"type":"boolean","default":false,"example":true},"example":true,"explode":false},{"name":"last_message_at_after","in":"query","description":"Фильтрация по времени создания последнего сообщения: вернутся чаты, где оно позже указанного. Значение в ISO-8601, смещение вида `+03:00` учитывается, время без смещения считается UTC.","required":false,"schema":{"type":"string","format":"date-time","example":"2025-01-01T00:00:00.000Z"},"example":"2025-01-01T00:00:00.000Z","explode":false},{"name":"last_message_at_before","in":"query","description":"Фильтрация по времени создания последнего сообщения: вернутся чаты, где оно раньше указанного. Значение в ISO-8601, смещение вида `+03:00` учитывается, время без смещения считается UTC.","required":false,"schema":{"type":"string","format":"date-time","example":"2025-02-01T00:00:00.000Z"},"example":"2025-02-01T00:00:00.000Z","explode":false},{"name":"personal","in":"query","description":"Фильтрация по личным и групповым чатам. Если параметр не указан, возвращаются любые чаты.","required":false,"schema":{"type":"boolean","example":false},"example":false,"explode":false},{"name":"limit","in":"query","description":"Количество возвращаемых сущностей за один запрос","required":false,"schema":{"type":"integer","format":"int32","default":50,"example":1,"minimum":1,"maximum":50},"example":1,"explode":false},{"name":"cursor","in":"query","description":"Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)","required":false,"schema":{"type":"string","example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9"},"example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9","explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными и пагинацией","required":["data","meta"],"properties":{"data":{"type":"array","items":{"type":"object","description":"Чат","required":["id","name","created_at","owner_id","member_ids","group_tag_ids","channel","archived","personal","public","last_message_at","meet_room_url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор созданного чата","example":334},"name":{"type":"string","description":"Название","example":"🤿 aqua","maxLength":255},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания чата (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2021-08-28T15:56:53.000Z"},"owner_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, создавшего чат","example":185},"member_ids":{"type":"array","description":"Массив идентификаторов пользователей, участников","example":[185,186,187],"items":{"type":"integer","format":"int32"}},"group_tag_ids":{"type":"array","description":"Массив идентификаторов тегов, участников","example":[9111],"items":{"type":"integer","format":"int32"}},"channel":{"type":"boolean","description":"Является каналом","example":true},"archived":{"type":"boolean","description":"Находится в архиве","example":false},"personal":{"type":"boolean","description":"Является личным чатом","example":false},"public":{"type":"boolean","description":"Открытый доступ","example":false},"last_message_at":{"type":"string","format":"date-time","description":"Дата и время создания последнего сообщения в чате (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2021-08-28T15:56:53.000Z"},"meet_room_url":{"type":"string","description":"Ссылка на Видеочат","example":"https://meet.pachca.com/aqua-94bb21b5"}},"$ref":"#/components/schemas/Chat"}},"meta":{"type":"object","description":"Метаданные пагинации","required":["paginate"],"properties":{"paginate":{"type":"object","description":"Вспомогательная информация","required":["next_page"],"properties":{"next_page":{"type":"string","description":"Курсор пагинации следующей страницы","example":"eyJxZCO2MiwiZGlyIjomSNYjIn3"},"prev_page":{"type":"string","description":"Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка.","example":"eyJxZCO2MiwiZGlyIjoiYXNjIn0"},"has_next":{"type":"boolean","description":"Есть ли ещё данные на следующей странице. На последней странице — `false`.","example":true},"has_prev":{"type":"boolean","description":"Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`.","example":false}}}},"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"chats:read","scopeRoles":["owner","admin","user","bot"]},"paginated":true},"docs":"# Список чатов\n\n**Метод**: `GET`\n\n**Путь**: `/chats`\n\n> **Скоуп:** `chats:read`\n\nПо умолчанию — беседы, каналы и личные переписки, где состоит владелец токена. С `availability=public` метод отдаёт вместо этого все открытые чаты пространства, включая те, куда вызывающий не вступал.\n\nТреды в списке не приходят никогда, для них есть [Список тредов](GET /threads).\n\n`archived=true` не переключает выдачу на архив, а добавляет архивные чаты к активным.\n\n## Параметры\n\n### Query параметры\n\n- `sort: string` (default: id) — Поле сортировки\n- `order: string` (default: desc) — Направление сортировки\n- `availability: string` (default: is_member) — Параметр, который отвечает за доступность и выборку чатов для пользователя\n- `archived: boolean` (default: false) — Добавляет к выдаче архивные чаты. По умолчанию возвращаются только активные. Работает при любом значении `availability`.\n- `last_message_at_after: date-time` — Фильтрация по времени создания последнего сообщения: вернутся чаты, где оно позже указанного. Значение в ISO-8601, смещение вида `+03:00` учитывается, время без смещения считается UTC.\n- `last_message_at_before: date-time` — Фильтрация по времени создания последнего сообщения: вернутся чаты, где оно раньше указанного. Значение в ISO-8601, смещение вида `+03:00` учитывается, время без смещения считается UTC.\n- `personal: boolean` — Фильтрация по личным и групповым чатам. Если параметр не указан, возвращаются любые чаты.\n- `limit: integer, int32` (default: 50) — Количество возвращаемых сущностей за один запрос\n- `cursor: string` — Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n\n## Пример запроса\n\n```bash\n# Для получения следующей страницы используйте cursor из meta.paginate.next_page\ncurl \"https://api.pachca.com/api/shared/v1/chats?sort=id&order=desc&availability=is_member&archived=true&last_message_at_after=2025-01-01T00:00:00.000Z&last_message_at_before=2025-02-01T00:00:00.000Z&personal=false&limit=1\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: array of object` (required)\n - `id: integer, int32` (required) — Идентификатор созданного чата. Пример: `334`\n - `name: string` (required, max length: 255) — Название. Пример: `\"🤿 aqua\"`\n - `created_at: date-time` (required) — Дата и время создания чата (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2021-08-28T15:56:53.000Z\"`\n - `owner_id: integer, int32` (required) — Идентификатор пользователя, создавшего чат. Пример: `185`\n - `member_ids: array of integer` (required) — Массив идентификаторов пользователей, участников. Пример: `[185,186,187]`\n - `group_tag_ids: array of integer` (required) — Массив идентификаторов тегов, участников. Пример: `[9111]`\n - `channel: boolean` (required) — Является каналом. Пример: `true`\n - `archived: boolean` (required) — Находится в архиве. Пример: `false`\n - `personal: boolean` (required) — Является личным чатом. Пример: `false`\n - `public: boolean` (required) — Открытый доступ. Пример: `false`\n - `last_message_at: date-time` (required) — Дата и время создания последнего сообщения в чате (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2021-08-28T15:56:53.000Z\"`\n - `meet_room_url: string` (required) — Ссылка на Видеочат. Пример: `\"https://meet.pachca.com/aqua-94bb21b5\"`\n- `meta: object` (required) — Метаданные пагинации\n - `paginate: object` (required) — Вспомогательная информация\n - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `\"eyJxZCO2MiwiZGlyIjomSNYjIn3\"`\n - `prev_page: string` — Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка. Пример: `\"eyJxZCO2MiwiZGlyIjoiYXNjIn0\"`\n - `has_next: boolean` — Есть ли ещё данные на следующей странице. На последней странице — `false`. Пример: `true`\n - `has_prev: boolean` — Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`. Пример: `false`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": [\n {\n \"id\": 334,\n \"name\": \"🤿 aqua\",\n \"created_at\": \"2021-08-28T15:56:53.000Z\",\n \"owner_id\": 185,\n \"member_ids\": [\n 185,\n 186,\n 187\n ],\n \"group_tag_ids\": [\n 9111\n ],\n \"channel\": true,\n \"archived\": false,\n \"personal\": false,\n \"public\": false,\n \"last_message_at\": \"2021-08-28T15:56:53.000Z\",\n \"meet_room_url\": \"https://meet.pachca.com/aqua-94bb21b5\"\n }\n ],\n \"meta\": {\n \"paginate\": {\n \"next_page\": \"eyJxZCO2MiwiZGlyIjomSNYjIn3\",\n \"prev_page\": \"eyJxZCO2MiwiZGlyIjoiYXNjIn0\",\n \"has_next\": true,\n \"has_prev\": false\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"POST","path":"/chats/exports","summary":"Экспорт сообщений","scope":"chat_exports:write","plan":"corporation","auth":true,"paginated":false,"command":"pachca chats request-export","docLink":"https://dev.pachca.com/api/chats/request-export","describe":"# POST /chats/exports — Экспорт сообщений\n\n> **Скоуп:** `chat_exports:write`\n\n> **Тариф:** Корпорация\n\n## Тело запроса\n\n- `start_at: date` (required) — Дата начала для экспорта в формате YYYY-MM-DD. Если прислать дату со временем, время молча отбрасывается — экспорт всегда идёт по календарным дням.\n- `end_at: date` (required) — Дата окончания для экспорта в формате YYYY-MM-DD, включительно. Если прислать дату со временем, время молча отбрасывается.\n- `webhook_url: string` — Адрес, на который придёт вебхук с номером готовой выгрузки. Без него узнать номер неоткуда: заказавший получит письмо и уведомление, а вызывающая программа — ничего.\n- `chat_ids: array of integer` — Массив идентификаторов чатов. Указывается, если нужно получить сообщения только некоторых чатов.\n- `skip_chats_file: boolean` (default: false) — Пропуск формирования файла со списком чатов (chats.json)\n\n## Эквивалентная команда\n\n```bash\npachca chats request-export \\\n --start-at=2025-03-20 \\\n --end-at=2025-03-20 \\\n --webhook-url=https://webhook.site/9227d3b8-6e82-4e64-bf5d-ad972ad270f2 \\\n --chat-ids='[1381521]' \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/chats/request-export\nПолная справка: `pachca api POST /chats/exports --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/chats/exports","description":"Экспорт сообщений\n\nЗаказ выгрузки сообщений пространства за период. Архив готовится в фоне, поэтому ответ приходит пустым и идентификатора выгрузки не содержит.\n\nНомер готовой выгрузки приходит в поле `export_id` вебхука на адрес из `webhook_url`. Заказавший дополнительно получает письмо и уведомление в Пачке со ссылкой вида `/full_exports/{id}` — число в ней и есть идентификатор. Адрес вебхука необязателен, но без него программе номер взять неоткуда: остаются только письмо и уведомление заказавшему.\n\nС этим идентификатором архив забирают методом [Скачать архив экспорта](GET /chats/exports/{id}).","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на экспорт сообщений","required":["start_at","end_at"],"properties":{"start_at":{"type":"string","format":"date","description":"Дата начала для экспорта в формате YYYY-MM-DD. Если прислать дату со временем, время молча отбрасывается — экспорт всегда идёт по календарным дням.","example":"2025-03-20"},"end_at":{"type":"string","format":"date","description":"Дата окончания для экспорта в формате YYYY-MM-DD, включительно. Если прислать дату со временем, время молча отбрасывается.","example":"2025-03-20"},"webhook_url":{"type":"string","description":"Адрес, на который придёт вебхук с номером готовой выгрузки. Без него узнать номер неоткуда: заказавший получит письмо и уведомление, а вызывающая программа — ничего.","example":"https://webhook.site/9227d3b8-6e82-4e64-bf5d-ad972ad270f2"},"chat_ids":{"type":"array","description":"Массив идентификаторов чатов. Указывается, если нужно получить сообщения только некоторых чатов.","example":[1381521],"items":{"type":"integer","format":"int32"}},"skip_chats_file":{"type":"boolean","description":"Пропуск формирования файла со списком чатов (chats.json)","default":false,"example":false}},"$ref":"#/components/schemas/ExportRequest"}}}},"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"},{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}]}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"chat_exports:write","plan":"corporation","scopeRoles":["owner"]},"paginated":false},"docs":"# Экспорт сообщений\n\n**Метод**: `POST`\n\n**Путь**: `/chats/exports`\n\n> **Скоуп:** `chat_exports:write`\n\n> **Внимание:** Доступно только на тарифе **Корпорация**\n\nЗаказ выгрузки сообщений пространства за период. Архив готовится в фоне, поэтому ответ приходит пустым и идентификатора выгрузки не содержит.\n\nНомер готовой выгрузки приходит в поле `export_id` вебхука на адрес из `webhook_url`. Заказавший дополнительно получает письмо и уведомление в Пачке со ссылкой вида `/full_exports/{id}` — число в ней и есть идентификатор. Адрес вебхука необязателен, но без него программе номер взять неоткуда: остаются только письмо и уведомление заказавшему.\n\nС этим идентификатором архив забирают методом [Скачать архив экспорта](GET /chats/exports/{id}).\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `start_at: date` (required) — Дата начала для экспорта в формате YYYY-MM-DD. Если прислать дату со временем, время молча отбрасывается — экспорт всегда идёт по календарным дням. Пример: `\"2025-03-20\"`\n- `end_at: date` (required) — Дата окончания для экспорта в формате YYYY-MM-DD, включительно. Если прислать дату со временем, время молча отбрасывается. Пример: `\"2025-03-20\"`\n- `webhook_url: string` — Адрес, на который придёт вебхук с номером готовой выгрузки. Без него узнать номер неоткуда: заказавший получит письмо и уведомление, а вызывающая программа — ничего. Пример: `\"https://webhook.site/9227d3b8-6e82-4e64-bf5d-ad972ad270f2\"`\n- `chat_ids: array of integer` — Массив идентификаторов чатов. Указывается, если нужно получить сообщения только некоторых чатов. Пример: `[1381521]`\n- `skip_chats_file: boolean` (default: false) — Пропуск формирования файла со списком чатов (chats.json). Пример: `false`\n\n### Пример\n\n```json\n{\n \"start_at\": \"2025-03-20\",\n \"end_at\": \"2025-03-20\",\n \"webhook_url\": \"https://webhook.site/9227d3b8-6e82-4e64-bf5d-ad972ad270f2\",\n \"chat_ids\": [\n 1381521\n ]\n}\n```\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/chats/exports\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"start_at\": \"2025-03-20\",\n \"end_at\": \"2025-03-20\",\n \"webhook_url\": \"https://webhook.site/9227d3b8-6e82-4e64-bf5d-ad972ad270f2\",\n \"chat_ids\": [\n 1381521\n ]\n}'\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n**anyOf** - один из вариантов:\n\n- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)\n - `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403)\n - `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n - `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/chats/exports/{id}","summary":"Скачать архив экспорта","scope":"chat_exports:read","plan":"corporation","auth":true,"paginated":false,"command":"pachca chats download-export","docLink":"https://dev.pachca.com/api/chats/download-export","describe":"# GET /chats/exports/{id} — Скачать архив экспорта\n\n> **Скоуп:** `chat_exports:read`\n\n> **Тариф:** Корпорация\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор экспорта\n\n## Эквивалентная команда\n\n```bash\npachca chats download-export 22322 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/chats/download-export\nПолная справка: `pachca api GET /chats/exports/{id} --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/chats/exports/{id}","description":"Скачать архив экспорта\n\nВ ответ на запрос сервер вернёт `302 Found` с заголовком `Location`, содержащим временную ссылку на скачивание файла. Большинство HTTP-клиентов автоматически следуют редиректу и скачивают файл.\n\nСсылка действует 5 минут, поэтому скачивайте архив сразу после запроса. Сам архив хранится 7 дней, а скачать его может только тот, кто заказал выгрузку. Другому сотруднику с тем же правом метод откажет.","parameters":[{"name":"id","in":"path","description":"Идентификатор экспорта","required":true,"schema":{"type":"integer","format":"int32","example":22322},"example":22322}],"responses":{"302":{"description":"Redirection","headers":{"location":{"description":"Временная ссылка на архив в хранилище, действует 5 минут","schema":{"type":"string","format":"uri"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"},{"anyOf":[{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"},{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}]}]}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"chat_exports:read","plan":"corporation","scopeRoles":["owner"]},"paginated":false},"docs":"# Скачать архив экспорта\n\n**Метод**: `GET`\n\n**Путь**: `/chats/exports/{id}`\n\n> **Скоуп:** `chat_exports:read`\n\n> **Внимание:** Доступно только на тарифе **Корпорация**\n\nВ ответ на запрос сервер вернёт `302 Found` с заголовком `Location`, содержащим временную ссылку на скачивание файла. Большинство HTTP-клиентов автоматически следуют редиректу и скачивают файл.\n\nСсылка действует 5 минут, поэтому скачивайте архив сразу после запроса. Сам архив хранится 7 дней, а скачать его может только тот, кто заказал выгрузку. Другому сотруднику с тем же правом метод откажет.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор экспорта\n\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/chats/exports/22322\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 302: Redirection\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n**anyOf** - один из вариантов:\n\n- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403)\n - `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n - `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n- **Вариант 2**\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/chats/{id}","summary":"Информация о чате","scope":"chats:read","plan":null,"auth":true,"paginated":false,"command":"pachca chats get","docLink":"https://dev.pachca.com/api/chats/get","describe":"# GET /chats/{id} — Информация о чате\n\n> **Скоуп:** `chats:read`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор чата\n\n## Эквивалентная команда\n\n```bash\npachca chats get 334 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/chats/get\nПолная справка: `pachca api GET /chats/{id} --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/chats/{id}","description":"Информация о чате\n\nКарточка чата вместе с составом участников и привязанными тегами.\n\nЗакрытая беседа, в которой вызывающий не состоит, отвечает `403`, а не `404`: существование чата этим методом не скрывается. Открытый канал своего пространства отдаётся и тому, кто в него не вступал. Владельцу пространства метод тоже не открывает чужие закрытые чаты — весь их перечень отдаёт [Список чатов пространства](GET /company/chats).\n\nВ `member_ids` приходят только действующие участники: приостановленные в список не попадают, хотя членство у них сохраняется.","parameters":[{"name":"id","in":"path","description":"Идентификатор чата","required":true,"schema":{"type":"integer","format":"int32","example":334},"example":334}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Чат","required":["id","name","created_at","owner_id","member_ids","group_tag_ids","channel","archived","personal","public","last_message_at","meet_room_url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор созданного чата","example":334},"name":{"type":"string","description":"Название","example":"🤿 aqua","maxLength":255},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания чата (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2021-08-28T15:56:53.000Z"},"owner_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, создавшего чат","example":185},"member_ids":{"type":"array","description":"Массив идентификаторов пользователей, участников","example":[185,186,187],"items":{"type":"integer","format":"int32"}},"group_tag_ids":{"type":"array","description":"Массив идентификаторов тегов, участников","example":[9111],"items":{"type":"integer","format":"int32"}},"channel":{"type":"boolean","description":"Является каналом","example":true},"archived":{"type":"boolean","description":"Находится в архиве","example":false},"personal":{"type":"boolean","description":"Является личным чатом","example":false},"public":{"type":"boolean","description":"Открытый доступ","example":false},"last_message_at":{"type":"string","format":"date-time","description":"Дата и время создания последнего сообщения в чате (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2021-08-28T15:56:53.000Z"},"meet_room_url":{"type":"string","description":"Ссылка на Видеочат","example":"https://meet.pachca.com/aqua-94bb21b5"}},"$ref":"#/components/schemas/Chat"}}}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"chats:read","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Информация о чате\n\n**Метод**: `GET`\n\n**Путь**: `/chats/{id}`\n\n> **Скоуп:** `chats:read`\n\nКарточка чата вместе с составом участников и привязанными тегами.\n\nЗакрытая беседа, в которой вызывающий не состоит, отвечает `403`, а не `404`: существование чата этим методом не скрывается. Открытый канал своего пространства отдаётся и тому, кто в него не вступал. Владельцу пространства метод тоже не открывает чужие закрытые чаты — весь их перечень отдаёт [Список чатов пространства](GET /company/chats).\n\nВ `member_ids` приходят только действующие участники: приостановленные в список не попадают, хотя членство у них сохраняется.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор чата\n\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/chats/334\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Чат\n - `id: integer, int32` (required) — Идентификатор созданного чата. Пример: `334`\n - `name: string` (required, max length: 255) — Название. Пример: `\"🤿 aqua\"`\n - `created_at: date-time` (required) — Дата и время создания чата (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2021-08-28T15:56:53.000Z\"`\n - `owner_id: integer, int32` (required) — Идентификатор пользователя, создавшего чат. Пример: `185`\n - `member_ids: array of integer` (required) — Массив идентификаторов пользователей, участников. Пример: `[185,186,187]`\n - `group_tag_ids: array of integer` (required) — Массив идентификаторов тегов, участников. Пример: `[9111]`\n - `channel: boolean` (required) — Является каналом. Пример: `true`\n - `archived: boolean` (required) — Находится в архиве. Пример: `false`\n - `personal: boolean` (required) — Является личным чатом. Пример: `false`\n - `public: boolean` (required) — Открытый доступ. Пример: `false`\n - `last_message_at: date-time` (required) — Дата и время создания последнего сообщения в чате (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2021-08-28T15:56:53.000Z\"`\n - `meet_room_url: string` (required) — Ссылка на Видеочат. Пример: `\"https://meet.pachca.com/aqua-94bb21b5\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 334,\n \"name\": \"🤿 aqua\",\n \"created_at\": \"2021-08-28T15:56:53.000Z\",\n \"owner_id\": 185,\n \"member_ids\": [\n 185,\n 186,\n 187\n ],\n \"group_tag_ids\": [\n 9111\n ],\n \"channel\": true,\n \"archived\": false,\n \"personal\": false,\n \"public\": false,\n \"last_message_at\": \"2021-08-28T15:56:53.000Z\",\n \"meet_room_url\": \"https://meet.pachca.com/aqua-94bb21b5\"\n }\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"PUT","path":"/chats/{id}","summary":"Редактирование чата","scope":"chats:update","plan":null,"auth":true,"paginated":false,"command":"pachca chats update","docLink":"https://dev.pachca.com/api/chats/update","describe":"# PUT /chats/{id} — Редактирование чата\n\n> **Скоуп:** `chats:update`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор чата\n\n## Тело запроса\n\n- `chat: object` (required) — Собранный объект параметров обновляемого чата\n - `name: string` (max length: 255) — Название\n - `public: boolean` — Открытый доступ\n\n## Эквивалентная команда\n\n```bash\npachca chats update 334 \\\n --name=Бассейн \\\n --public \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/chats/update\nПолная справка: `pachca api PUT /chats/{id} --docs` · схема: `--spec`\n","spec":{"method":"PUT","path":"/chats/{id}","description":"Редактирование чата\n\nМеняет название беседы или канала и его доступность. Оба изменения видны участникам системным сообщением в ленте чата.\n\nЛичный чат переименовать нельзя, архивный — тоже: сначала верните его из архива методом [Разархивация чата](PUT /chats/{id}/unarchive). В закрытом чате метод доступен владельцу и администратору чата, в открытом — любому сотруднику пространства, даже не участнику.\n\nСостав участников этим методом не меняется, для него есть [Добавление пользователей](POST /chats/{id}/members) и [Исключение пользователя](DELETE /chats/{id}/members/{user_id}).","parameters":[{"name":"id","in":"path","description":"Идентификатор чата","required":true,"schema":{"type":"integer","format":"int32","example":334},"example":334}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на обновление чата","required":["chat"],"properties":{"chat":{"type":"object","description":"Собранный объект параметров обновляемого чата","properties":{"name":{"type":"string","description":"Название","example":"Бассейн","maxLength":255},"public":{"type":"boolean","description":"Открытый доступ","example":true}}}},"$ref":"#/components/schemas/ChatUpdateRequest"}}}},"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Чат","required":["id","name","created_at","owner_id","member_ids","group_tag_ids","channel","archived","personal","public","last_message_at","meet_room_url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор созданного чата","example":334},"name":{"type":"string","description":"Название","example":"🤿 aqua","maxLength":255},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания чата (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2021-08-28T15:56:53.000Z"},"owner_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, создавшего чат","example":185},"member_ids":{"type":"array","description":"Массив идентификаторов пользователей, участников","example":[185,186,187],"items":{"type":"integer","format":"int32"}},"group_tag_ids":{"type":"array","description":"Массив идентификаторов тегов, участников","example":[9111],"items":{"type":"integer","format":"int32"}},"channel":{"type":"boolean","description":"Является каналом","example":true},"archived":{"type":"boolean","description":"Находится в архиве","example":false},"personal":{"type":"boolean","description":"Является личным чатом","example":false},"public":{"type":"boolean","description":"Открытый доступ","example":false},"last_message_at":{"type":"string","format":"date-time","description":"Дата и время создания последнего сообщения в чате (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2021-08-28T15:56:53.000Z"},"meet_room_url":{"type":"string","description":"Ссылка на Видеочат","example":"https://meet.pachca.com/aqua-94bb21b5"}},"$ref":"#/components/schemas/Chat"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"chats:update","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Редактирование чата\n\n**Метод**: `PUT`\n\n**Путь**: `/chats/{id}`\n\n> **Скоуп:** `chats:update`\n\nМеняет название беседы или канала и его доступность. Оба изменения видны участникам системным сообщением в ленте чата.\n\nЛичный чат переименовать нельзя, архивный — тоже: сначала верните его из архива методом [Разархивация чата](PUT /chats/{id}/unarchive). В закрытом чате метод доступен владельцу и администратору чата, в открытом — любому сотруднику пространства, даже не участнику.\n\nСостав участников этим методом не меняется, для него есть [Добавление пользователей](POST /chats/{id}/members) и [Исключение пользователя](DELETE /chats/{id}/members/{user_id}).\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор чата\n\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `chat: object` (required) — Собранный объект параметров обновляемого чата\n - `name: string` (max length: 255) — Название. Пример: `\"Бассейн\"`\n - `public: boolean` — Открытый доступ. Пример: `true`\n\n### Пример\n\n```json\n{\n \"chat\": {\n \"name\": \"Бассейн\",\n \"public\": true\n }\n}\n```\n\n## Пример запроса\n\n```bash\ncurl -X PUT \"https://api.pachca.com/api/shared/v1/chats/334\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"chat\": {\n \"name\": \"Бассейн\",\n \"public\": true\n }\n}'\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Чат\n - `id: integer, int32` (required) — Идентификатор созданного чата. Пример: `334`\n - `name: string` (required, max length: 255) — Название. Пример: `\"🤿 aqua\"`\n - `created_at: date-time` (required) — Дата и время создания чата (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2021-08-28T15:56:53.000Z\"`\n - `owner_id: integer, int32` (required) — Идентификатор пользователя, создавшего чат. Пример: `185`\n - `member_ids: array of integer` (required) — Массив идентификаторов пользователей, участников. Пример: `[185,186,187]`\n - `group_tag_ids: array of integer` (required) — Массив идентификаторов тегов, участников. Пример: `[9111]`\n - `channel: boolean` (required) — Является каналом. Пример: `true`\n - `archived: boolean` (required) — Находится в архиве. Пример: `false`\n - `personal: boolean` (required) — Является личным чатом. Пример: `false`\n - `public: boolean` (required) — Открытый доступ. Пример: `false`\n - `last_message_at: date-time` (required) — Дата и время создания последнего сообщения в чате (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2021-08-28T15:56:53.000Z\"`\n - `meet_room_url: string` (required) — Ссылка на Видеочат. Пример: `\"https://meet.pachca.com/aqua-94bb21b5\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 334,\n \"name\": \"🤿 aqua\",\n \"created_at\": \"2021-08-28T15:56:53.000Z\",\n \"owner_id\": 185,\n \"member_ids\": [\n 185,\n 186,\n 187\n ],\n \"group_tag_ids\": [\n 9111\n ],\n \"channel\": true,\n \"archived\": false,\n \"personal\": false,\n \"public\": false,\n \"last_message_at\": \"2021-08-28T15:56:53.000Z\",\n \"meet_room_url\": \"https://meet.pachca.com/aqua-94bb21b5\"\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"PUT","path":"/chats/{id}/archive","summary":"Архивация чата","scope":"chats:archive","plan":null,"auth":true,"paginated":false,"command":"pachca chats archive","docLink":"https://dev.pachca.com/api/chats/archive","describe":"# PUT /chats/{id}/archive — Архивация чата\n\n> **Скоуп:** `chats:archive`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор чата\n\n## Эквивалентная команда\n\n```bash\npachca chats archive 334 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/chats/archive\nПолная справка: `pachca api PUT /chats/{id}/archive --docs` · схема: `--spec`\n","spec":{"method":"PUT","path":"/chats/{id}/archive","description":"Архивация чата\n\nОтправляет беседу или канал в архив: чат пропадает из списков у всех участников, новые сообщения в него не принимаются, а история сохраняется.\n\nАрхивация не только замораживает чат. Из него исключаются все гости, а теги от него отвязываются. Приведённые тегом сотрудники при этом остаются обычными участниками, но состав чата больше не поддерживается сам. Метод [Разархивация чата](PUT /chats/{id}/unarchive) не возвращает ни гостей, ни привязку тегов.\n\nТреды, заведённые в чате, остаются открытыми: писать в них можно и после архивации.\n\nЛичный чат и тред в архив не отправляются. Повторная архивация уже архивного чата отвечает `403`.","parameters":[{"name":"id","in":"path","description":"Идентификатор чата","required":true,"schema":{"type":"integer","format":"int32","example":334},"example":334}],"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"chats:archive","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Архивация чата\n\n**Метод**: `PUT`\n\n**Путь**: `/chats/{id}/archive`\n\n> **Скоуп:** `chats:archive`\n\nОтправляет беседу или канал в архив: чат пропадает из списков у всех участников, новые сообщения в него не принимаются, а история сохраняется.\n\nАрхивация не только замораживает чат. Из него исключаются все гости, а теги от него отвязываются. Приведённые тегом сотрудники при этом остаются обычными участниками, но состав чата больше не поддерживается сам. Метод [Разархивация чата](PUT /chats/{id}/unarchive) не возвращает ни гостей, ни привязку тегов.\n\nТреды, заведённые в чате, остаются открытыми: писать в них можно и после архивации.\n\nЛичный чат и тред в архив не отправляются. Повторная архивация уже архивного чата отвечает `403`.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор чата\n\n\n## Пример запроса\n\n```bash\ncurl -X PUT \"https://api.pachca.com/api/shared/v1/chats/334/archive\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"POST","path":"/chats/{id}/group_tags","summary":"Добавление тегов","scope":"chat_members:write","plan":null,"auth":true,"paginated":false,"command":"pachca members add-group-tags","docLink":"https://dev.pachca.com/api/members/add-group-tags","describe":"# POST /chats/{id}/group_tags — Добавление тегов\n\n> **Скоуп:** `chat_members:write`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор чата\n\n## Тело запроса\n\n- `group_tag_ids: array of integer` (required) — Массив идентификаторов тегов, которые станут участниками\n\n## Эквивалентная команда\n\n```bash\npachca members add-group-tags 334 \\\n --group-tag-ids='[86,18]' \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/members/add-group-tags\nПолная справка: `pachca api POST /chats/{id}/group_tags --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/chats/{id}/group_tags","description":"Добавление тегов\n\nПривязывает теги к беседе или каналу, чтобы состав чата поддерживался сам.\n\nПосле добавления тега все его участники автоматически становятся участниками чата. Состав участников тега и чата синхронизируется автоматически: при добавлении нового участника в тег он сразу появляется в чате, при удалении из тега — удаляется из чата.\n\nЕсли хотя бы один из переданных тегов не найден, метод отвечает `404` и не привязывает ни одного. Тег, который к чату уже привязан, повторно не привязывается, а его участники всё равно догружаются в чат.\n\nПривязать тег может участник закрытой беседы и любой сотрудник пространства в открытом чате, а отцепить — только владелец или администратор чата методом [Исключение тега](DELETE /chats/{id}/group_tags/{tag_id}).","parameters":[{"name":"id","in":"path","description":"Идентификатор чата","required":true,"schema":{"type":"integer","format":"int32","example":334},"example":334}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на добавление тегов в чат","required":["group_tag_ids"],"properties":{"group_tag_ids":{"type":"array","description":"Массив идентификаторов тегов, которые станут участниками","example":[86,18],"items":{"type":"integer","format":"int32"}}},"$ref":"#/components/schemas/AddTagsRequest"}}}},"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"chat_members:write","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Добавление тегов\n\n**Метод**: `POST`\n\n**Путь**: `/chats/{id}/group_tags`\n\n> **Скоуп:** `chat_members:write`\n\nПривязывает теги к беседе или каналу, чтобы состав чата поддерживался сам.\n\nПосле добавления тега все его участники автоматически становятся участниками чата. Состав участников тега и чата синхронизируется автоматически: при добавлении нового участника в тег он сразу появляется в чате, при удалении из тега — удаляется из чата.\n\nЕсли хотя бы один из переданных тегов не найден, метод отвечает `404` и не привязывает ни одного. Тег, который к чату уже привязан, повторно не привязывается, а его участники всё равно догружаются в чат.\n\nПривязать тег может участник закрытой беседы и любой сотрудник пространства в открытом чате, а отцепить — только владелец или администратор чата методом [Исключение тега](DELETE /chats/{id}/group_tags/{tag_id}).\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор чата\n\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `group_tag_ids: array of integer` (required) — Массив идентификаторов тегов, которые станут участниками. Пример: `[86,18]`\n\n### Пример\n\n```json\n{\n \"group_tag_ids\": [\n 86,\n 18\n ]\n}\n```\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/chats/334/group_tags\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"group_tag_ids\": [\n 86,\n 18\n ]\n}'\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"DELETE","path":"/chats/{id}/group_tags/{tag_id}","summary":"Исключение тега","scope":"chat_members:write","plan":null,"auth":true,"paginated":false,"command":"pachca members remove-group-tag","docLink":"https://dev.pachca.com/api/members/remove-group-tag","describe":"# DELETE /chats/{id}/group_tags/{tag_id} — Исключение тега\n\n> **Скоуп:** `chat_members:write`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор чата\n- `tag_id` — путь (обязательный): Идентификатор тега\n\n## Эквивалентная команда\n\n```bash\npachca members remove-group-tag 334 86 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/members/remove-group-tag\nПолная справка: `pachca api DELETE /chats/{id}/group_tags/{tag_id} --docs` · схема: `--spec`\n","spec":{"method":"DELETE","path":"/chats/{id}/group_tags/{tag_id}","description":"Исключение тега\n\nОтцепляет тег от беседы или канала и выводит оттуда сотрудников, которых держал только он.\n\nВыход происходит фоном, уже после ответа: метод отвечает `204` сразу, а состав чата меняется через несколько мгновений. Останутся владелец чата, те, кого приводит другой тег этого же чата, и те, кого добавляли в чат вручную.\n\nСнять тег с чата может владелец или администратор чата. Привязать его обратно можно методом [Добавление тегов](POST /chats/{id}/group_tags).","parameters":[{"name":"id","in":"path","description":"Идентификатор чата","required":true,"schema":{"type":"integer","format":"int32","example":334},"example":334},{"name":"tag_id","in":"path","description":"Идентификатор тега","required":true,"schema":{"type":"integer","format":"int32","example":86},"example":86}],"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"chat_members:write","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Исключение тега\n\n**Метод**: `DELETE`\n\n**Путь**: `/chats/{id}/group_tags/{tag_id}`\n\n> **Скоуп:** `chat_members:write`\n\nОтцепляет тег от беседы или канала и выводит оттуда сотрудников, которых держал только он.\n\nВыход происходит фоном, уже после ответа: метод отвечает `204` сразу, а состав чата меняется через несколько мгновений. Останутся владелец чата, те, кого приводит другой тег этого же чата, и те, кого добавляли в чат вручную.\n\nСнять тег с чата может владелец или администратор чата. Привязать его обратно можно методом [Добавление тегов](POST /chats/{id}/group_tags).\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор чата\n- `tag_id: integer, int32` (required) — Идентификатор тега\n\n\n## Пример запроса\n\n```bash\ncurl -X DELETE \"https://api.pachca.com/api/shared/v1/chats/334/group_tags/86\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"DELETE","path":"/chats/{id}/leave","summary":"Выход из чата","scope":"chats:leave","plan":null,"auth":true,"paginated":false,"command":"pachca members leave","docLink":"https://dev.pachca.com/api/members/leave","describe":"# DELETE /chats/{id}/leave — Выход из чата\n\n> **Скоуп:** `chats:leave`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор чата\n\n## Эквивалентная команда\n\n```bash\npachca members leave 334 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/members/leave\nПолная справка: `pachca api DELETE /chats/{id}/leave --docs` · схема: `--spec`\n","spec":{"method":"DELETE","path":"/chats/{id}/leave","description":"Выход из чата\n\nВладелец токена выходит из беседы, канала или треда сам. Из треда выходят по его `chat_id`. В закрытой беседе остальные видят системное сообщение о выходе, в открытом чате и канале — нет.\n\nВыйти нельзя, если сотрудника держит в чате привязанный тег: метод ответит `403`, пока тег не снимут с сотрудника или с чата. Из личной переписки выйти тоже нельзя, а вот из архивного чата можно.\n\nВернуться в открытый чат можно самому, в закрытый — только если кто-то из участников добавит обратно. Другого сотрудника выводит [Исключение пользователя](DELETE /chats/{id}/members/{user_id}).","parameters":[{"name":"id","in":"path","description":"Идентификатор чата","required":true,"schema":{"type":"integer","format":"int32","example":334},"example":334}],"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"chats:leave","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Выход из чата\n\n**Метод**: `DELETE`\n\n**Путь**: `/chats/{id}/leave`\n\n> **Скоуп:** `chats:leave`\n\nВладелец токена выходит из беседы, канала или треда сам. Из треда выходят по его `chat_id`. В закрытой беседе остальные видят системное сообщение о выходе, в открытом чате и канале — нет.\n\nВыйти нельзя, если сотрудника держит в чате привязанный тег: метод ответит `403`, пока тег не снимут с сотрудника или с чата. Из личной переписки выйти тоже нельзя, а вот из архивного чата можно.\n\nВернуться в открытый чат можно самому, в закрытый — только если кто-то из участников добавит обратно. Другого сотрудника выводит [Исключение пользователя](DELETE /chats/{id}/members/{user_id}).\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор чата\n\n\n## Пример запроса\n\n```bash\ncurl -X DELETE \"https://api.pachca.com/api/shared/v1/chats/334/leave\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/chats/{id}/members","summary":"Список участников чата","scope":"chat_members:read","plan":null,"auth":true,"paginated":true,"command":"pachca members list","docLink":"https://dev.pachca.com/api/members/list","describe":"# GET /chats/{id}/members — Список участников чата\n\n> **Скоуп:** `chat_members:read`\n\n> Пагинация: добавьте `--all` для автоматического обхода страниц\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор чата\n- `role` — query: Роль в чате\n- `limit` — query: Количество возвращаемых сущностей за один запрос\n- `cursor` — query: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n## Эквивалентная команда\n\n```bash\n# Добавьте --all для автоматической пагинации\npachca members list 334 \\\n --role=all \\\n --limit=1 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/members/list\nПолная справка: `pachca api GET /chats/{id}/members --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/chats/{id}/members","description":"Список участников чата\n\nКто состоит в беседе, канале или треде. Боты приходят наравне с сотрудниками, с `bot: true`.\n\nВладелец пространства может получить состав участников любого чата пространства. Администраторы и боты получают состав только тех чатов, где состоят сами, и открытых чатов пространства.\n\nВ выдачу попадают только действующие сотрудники: приостановленные не приходят, хотя членство у них сохраняется. Роль участника в чате метод не отдаёт — параметр `role` работает только как фильтр.","parameters":[{"name":"id","in":"path","description":"Идентификатор чата","required":true,"schema":{"type":"integer","format":"int32","example":334},"example":334},{"name":"role","in":"query","description":"Роль в чате","required":false,"schema":{"default":"all","allOf":[{"type":"string","description":"Роль участника чата (с фильтром все)","enum":["all","owner","admin","editor","member"],"x-enum-descriptions":{"all":"Любая роль","owner":"Создатель","admin":"Админ","editor":"Редактор","member":"Участник/подписчик"},"$ref":"#/components/schemas/ChatMemberRoleFilter"}]},"example":"all","explode":false},{"name":"limit","in":"query","description":"Количество возвращаемых сущностей за один запрос","required":false,"schema":{"type":"integer","format":"int32","default":50,"example":1,"minimum":1,"maximum":50},"example":1,"explode":false},{"name":"cursor","in":"query","description":"Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)","required":false,"schema":{"type":"string","example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9"},"example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9","explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными и пагинацией","required":["data","meta"],"properties":{"data":{"type":"array","items":{"type":"object","description":"Сотрудник","required":["id","first_name","last_name","nickname","email","phone_number","department","title","role","suspended","invite_status","inviter_id","list_tags","custom_properties","user_status","bot","sso","created_at","last_activity_at","time_zone","image_url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор пользователя","example":12},"first_name":{"type":"string","description":"Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`).","example":"Олег","nullable":true,"maxLength":255},"last_name":{"type":"string","description":"Фамилия. Если не заполнена, возвращается `null` или пустая строка.","example":"Петров","nullable":true,"maxLength":255},"nickname":{"type":"string","description":"Имя пользователя","example":"olegpetrov","maxLength":255},"email":{"type":"string","description":"Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда.","example":"olegp@example.com","nullable":true,"maxLength":255},"phone_number":{"type":"string","description":"Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда.","example":"+79001234567","nullable":true,"maxLength":255},"department":{"type":"string","description":"Департамент. Если не указан, возвращается `null` или пустая строка.","example":"Продукт","nullable":true,"maxLength":255},"title":{"type":"string","description":"Должность. Если не указана, возвращается `null` или пустая строка.","example":"CIO","nullable":true},"role":{"description":"Уровень доступа","example":"admin","allOf":[{"type":"string","description":"Роль пользователя в системе","enum":["admin","user","multi_guest","guest"],"x-enum-descriptions":{"admin":"Администратор","user":"Сотрудник","multi_guest":"Мульти-гость","guest":"Гость"},"$ref":"#/components/schemas/UserRole"}]},"suspended":{"type":"boolean","description":"Деактивация пользователя","example":false},"invite_status":{"description":"Статус приглашения","example":"confirmed","allOf":[{"type":"string","description":"Статус приглашения пользователя","enum":["confirmed","sent"],"x-enum-descriptions":{"confirmed":"Принято","sent":"Отправлено"},"$ref":"#/components/schemas/InviteStatus"}]},"inviter_id":{"type":"integer","format":"int32","description":"Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён.","example":185,"nullable":true},"list_tags":{"type":"array","description":"Массив тегов, привязанных к сотруднику","example":["Product","Design"],"items":{"type":"string"}},"custom_properties":{"type":"array","description":"Дополнительные поля сотрудника","items":{"type":"object","description":"Дополнительное поле","required":["id","name","data_type","value"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор поля","example":1678},"name":{"type":"string","description":"Название поля","example":"Город","maxLength":32},"data_type":{"description":"Тип поля","example":"string","allOf":[{"type":"string","description":"Тип данных дополнительного поля","enum":["string","number","date","link"],"x-enum-descriptions":{"string":"Строковое значение","number":"Числовое значение","date":"Дата","link":"Ссылка"},"$ref":"#/components/schemas/CustomPropertyDataType"}]},"value":{"type":"string","description":"Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601.","example":"Санкт-Петербург","nullable":true,"maxLength":768}},"$ref":"#/components/schemas/CustomProperty"}},"user_status":{"type":"object","description":"Статус. `null`, если у сотрудника не установлен статус.","nullable":true,"allOf":[{"type":"object","description":"Статус пользователя","required":["emoji","title","expires_at","is_away","away_message"],"properties":{"emoji":{"type":"string","description":"Emoji символ статуса","example":"🎮"},"title":{"type":"string","description":"Текст статуса","example":"Очень занят","maxLength":50},"expires_at":{"type":"string","format":"date-time","description":"Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически.","example":"2024-04-08T10:00:00.000Z","nullable":true},"is_away":{"type":"boolean","description":"Режим «Нет на месте»","example":false},"away_message":{"type":"object","description":"Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.","required":["text"],"nullable":true,"properties":{"text":{"type":"string","description":"Текст сообщения","example":"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.","maxLength":1024}}}},"$ref":"#/components/schemas/UserStatus"}]},"bot":{"type":"boolean","description":"Является ботом","example":false},"sso":{"type":"boolean","description":"Использует ли пользователь SSO","example":false},"created_at":{"type":"string","format":"date-time","description":"Дата создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2020-06-08T09:32:57.000Z"},"last_activity_at":{"type":"string","format":"date-time","description":"Дата последней активности пользователя (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если сотрудник ещё ни разу не заходил в Пачку — в этом случае `invite_status` возвращает `sent`.","example":"2025-01-20T13:40:07.000Z","nullable":true},"time_zone":{"type":"string","description":"Часовой пояс пользователя. `null`, если сотрудник не задал личный часовой пояс — тогда применяется часовой пояс компании.","example":"Europe/Moscow","nullable":true,"maxLength":32},"image_url":{"type":"string","description":"Ссылка на скачивание аватарки пользователя. `null`, если аватарка не загружена.","example":"https://app.pachca.com/users/12/photo.jpg","nullable":true}},"$ref":"#/components/schemas/User"}},"meta":{"type":"object","description":"Метаданные пагинации","required":["paginate"],"properties":{"paginate":{"type":"object","description":"Вспомогательная информация","required":["next_page"],"properties":{"next_page":{"type":"string","description":"Курсор пагинации следующей страницы","example":"eyJxZCO2MiwiZGlyIjomSNYjIn3"},"prev_page":{"type":"string","description":"Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка.","example":"eyJxZCO2MiwiZGlyIjoiYXNjIn0"},"has_next":{"type":"boolean","description":"Есть ли ещё данные на следующей странице. На последней странице — `false`.","example":true},"has_prev":{"type":"boolean","description":"Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`.","example":false}}}},"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"chat_members:read","scopeRoles":["owner","admin","user","bot"]},"paginated":true},"docs":"# Список участников чата\n\n**Метод**: `GET`\n\n**Путь**: `/chats/{id}/members`\n\n> **Скоуп:** `chat_members:read`\n\nКто состоит в беседе, канале или треде. Боты приходят наравне с сотрудниками, с `bot: true`.\n\nВладелец пространства может получить состав участников любого чата пространства. Администраторы и боты получают состав только тех чатов, где состоят сами, и открытых чатов пространства.\n\nВ выдачу попадают только действующие сотрудники: приостановленные не приходят, хотя членство у них сохраняется. Роль участника в чате метод не отдаёт — параметр `role` работает только как фильтр.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор чата\n\n### Query параметры\n\n- `role: string` (default: all) — Роль в чате\n- `limit: integer, int32` (default: 50) — Количество возвращаемых сущностей за один запрос\n- `cursor: string` — Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n\n## Пример запроса\n\n```bash\n# Для получения следующей страницы используйте cursor из meta.paginate.next_page\ncurl \"https://api.pachca.com/api/shared/v1/chats/334/members?role=all&limit=1\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: array of object` (required)\n - `id: integer, int32` (required) — Идентификатор пользователя. Пример: `12`\n - `first_name: string` (required, nullable, max length: 255) — Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`). Пример: `\"Олег\"`\n - `last_name: string` (required, nullable, max length: 255) — Фамилия. Если не заполнена, возвращается `null` или пустая строка. Пример: `\"Петров\"`\n - `nickname: string` (required, max length: 255) — Имя пользователя. Пример: `\"olegpetrov\"`\n - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `\"olegp@example.com\"`\n - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `\"+79001234567\"`\n - `department: string` (required, nullable, max length: 255) — Департамент. Если не указан, возвращается `null` или пустая строка. Пример: `\"Продукт\"`\n - `title: string` (required, nullable) — Должность. Если не указана, возвращается `null` или пустая строка. Пример: `\"CIO\"`\n - `role: string` (required) — Уровень доступа\n Значения: `admin` — Администратор, `user` — Сотрудник, `multi_guest` — Мульти-гость, `guest` — Гость\n - `suspended: boolean` (required) — Деактивация пользователя. Пример: `false`\n - `invite_status: string` (required) — Статус приглашения\n Значения: `confirmed` — Принято, `sent` — Отправлено\n - `inviter_id: integer, int32` (required, nullable) — Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён. Пример: `185`\n - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Пример: `[\"Product\",\"Design\"]`\n - `custom_properties: array of object` (required) — Дополнительные поля сотрудника\n - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678`\n - `name: string` (required, max length: 32) — Название поля. Пример: `\"Город\"`\n - `data_type: string` (required) — Тип поля\n Значения: `string` — Строковое значение, `number` — Числовое значение, `date` — Дата, `link` — Ссылка\n - `value: string` (required, nullable, max length: 768) — Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601. Пример: `\"Санкт-Петербург\"`\n - `user_status: object` (required) — Статус. `null`, если у сотрудника не установлен статус.\n - `emoji: string` (required) — Emoji символ статуса. Пример: `\"🎮\"`\n - `title: string` (required, max length: 50) — Текст статуса. Пример: `\"Очень занят\"`\n - `expires_at: date-time` (required, nullable) — Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически. Пример: `\"2024-04-08T10:00:00.000Z\"`\n - `is_away: boolean` (required) — Режим «Нет на месте». Пример: `false`\n - `away_message: object` (required, nullable) — Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.\n - `text: string` (required, max length: 1024) — Текст сообщения. Пример: `\"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"`\n - `bot: boolean` (required) — Является ботом. Пример: `false`\n - `sso: boolean` (required) — Использует ли пользователь SSO. Пример: `false`\n - `created_at: date-time` (required) — Дата создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2020-06-08T09:32:57.000Z\"`\n - `last_activity_at: date-time` (required, nullable) — Дата последней активности пользователя (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если сотрудник ещё ни разу не заходил в Пачку — в этом случае `invite_status` возвращает `sent`. Пример: `\"2025-01-20T13:40:07.000Z\"`\n - `time_zone: string` (required, nullable, max length: 32) — Часовой пояс пользователя. `null`, если сотрудник не задал личный часовой пояс — тогда применяется часовой пояс компании. Пример: `\"Europe/Moscow\"`\n - `image_url: string` (required, nullable) — Ссылка на скачивание аватарки пользователя. `null`, если аватарка не загружена. Пример: `\"https://app.pachca.com/users/12/photo.jpg\"`\n- `meta: object` (required) — Метаданные пагинации\n - `paginate: object` (required) — Вспомогательная информация\n - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `\"eyJxZCO2MiwiZGlyIjomSNYjIn3\"`\n - `prev_page: string` — Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка. Пример: `\"eyJxZCO2MiwiZGlyIjoiYXNjIn0\"`\n - `has_next: boolean` — Есть ли ещё данные на следующей странице. На последней странице — `false`. Пример: `true`\n - `has_prev: boolean` — Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`. Пример: `false`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": [\n {\n \"id\": 12,\n \"first_name\": \"Олег\",\n \"last_name\": \"Петров\",\n \"nickname\": \"olegpetrov\",\n \"email\": \"olegp@example.com\",\n \"phone_number\": \"+79001234567\",\n \"department\": \"Продукт\",\n \"title\": \"CIO\",\n \"role\": \"admin\",\n \"suspended\": false,\n \"invite_status\": \"confirmed\",\n \"inviter_id\": 185,\n \"list_tags\": [\n \"Product\",\n \"Design\"\n ],\n \"custom_properties\": [\n {\n \"id\": 1678,\n \"name\": \"Город\",\n \"data_type\": \"string\",\n \"value\": \"Санкт-Петербург\"\n }\n ],\n \"user_status\": {\n \"emoji\": \"🎮\",\n \"title\": \"Очень занят\",\n \"expires_at\": \"2024-04-08T10:00:00.000Z\",\n \"is_away\": false,\n \"away_message\": {\n \"text\": \"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"\n }\n },\n \"bot\": false,\n \"sso\": false,\n \"created_at\": \"2020-06-08T09:32:57.000Z\",\n \"last_activity_at\": \"2025-01-20T13:40:07.000Z\",\n \"time_zone\": \"Europe/Moscow\",\n \"image_url\": \"https://app.pachca.com/users/12/photo.jpg\"\n }\n ],\n \"meta\": {\n \"paginate\": {\n \"next_page\": \"eyJxZCO2MiwiZGlyIjomSNYjIn3\",\n \"prev_page\": \"eyJxZCO2MiwiZGlyIjoiYXNjIn0\",\n \"has_next\": true,\n \"has_prev\": false\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"POST","path":"/chats/{id}/members","summary":"Добавление пользователей","scope":"chat_members:write","plan":null,"auth":true,"paginated":false,"command":"pachca members add","docLink":"https://dev.pachca.com/api/members/add","describe":"# POST /chats/{id}/members — Добавление пользователей\n\n> **Скоуп:** `chat_members:write`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор чата (беседа, канал или чат треда)\n\n## Тело запроса\n\n- `member_ids: array of integer` (required) — Массив идентификаторов пользователей, которые станут участниками\n- `silent: boolean` — Не создавать в чате системное сообщение о добавлении участника\n\n## Эквивалентная команда\n\n```bash\npachca members add 334 \\\n --member-ids='[186,187]' \\\n --silent \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/members/add\nПолная справка: `pachca api POST /chats/{id}/members --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/chats/{id}/members","description":"Добавление пользователей\n\nДобавляет сотрудников и ботов в беседу, канал или тред. Бота добавляют так же, как сотрудника: его `id` в `member_ids`. В канале он получает роль редактора, а в беседе становится обычным участником — и только после этого может туда писать.\n\nРоль в чате назначается в момент добавления: владелец пространства и администратор становятся администраторами чата, остальные — обычными участниками. Дальше она сама не пересчитывается, и повышение сотрудника в пространстве ничего не меняет там, где он уже состоит. Менять роль нужно методом [Редактирование роли](PUT /chats/{id}/members/{user_id}).\n\nТех, кто уже состоит в чате, метод пропускает молча и ошибкой это не считает. А вот неизвестный или неактивный идентификатор останавливает весь запрос: метод отвечает `404` и перечисляет такие значения, никто при этом не добавляется.\n\nДобавить сразу целый отдел удобнее тегом — [Добавление тегов](POST /chats/{id}/group_tags): тогда состав чата поддерживается сам.","parameters":[{"name":"id","in":"path","description":"Идентификатор чата (беседа, канал или чат треда)","required":true,"schema":{"type":"integer","format":"int32","example":334},"example":334}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на добавление участников в чат","required":["member_ids"],"properties":{"member_ids":{"type":"array","description":"Массив идентификаторов пользователей, которые станут участниками","example":[186,187],"items":{"type":"integer","format":"int32"}},"silent":{"type":"boolean","description":"Не создавать в чате системное сообщение о добавлении участника","example":true}},"$ref":"#/components/schemas/AddMembersRequest"}}}},"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"chat_members:write","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Добавление пользователей\n\n**Метод**: `POST`\n\n**Путь**: `/chats/{id}/members`\n\n> **Скоуп:** `chat_members:write`\n\nДобавляет сотрудников и ботов в беседу, канал или тред. Бота добавляют так же, как сотрудника: его `id` в `member_ids`. В канале он получает роль редактора, а в беседе становится обычным участником — и только после этого может туда писать.\n\nРоль в чате назначается в момент добавления: владелец пространства и администратор становятся администраторами чата, остальные — обычными участниками. Дальше она сама не пересчитывается, и повышение сотрудника в пространстве ничего не меняет там, где он уже состоит. Менять роль нужно методом [Редактирование роли](PUT /chats/{id}/members/{user_id}).\n\nТех, кто уже состоит в чате, метод пропускает молча и ошибкой это не считает. А вот неизвестный или неактивный идентификатор останавливает весь запрос: метод отвечает `404` и перечисляет такие значения, никто при этом не добавляется.\n\nДобавить сразу целый отдел удобнее тегом — [Добавление тегов](POST /chats/{id}/group_tags): тогда состав чата поддерживается сам.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор чата (беседа, канал или чат треда)\n\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `member_ids: array of integer` (required) — Массив идентификаторов пользователей, которые станут участниками. Пример: `[186,187]`\n- `silent: boolean` — Не создавать в чате системное сообщение о добавлении участника. Пример: `true`\n\n### Пример\n\n```json\n{\n \"member_ids\": [\n 186,\n 187\n ],\n \"silent\": true\n}\n```\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/chats/334/members\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"member_ids\": [\n 186,\n 187\n ],\n \"silent\": true\n}'\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"DELETE","path":"/chats/{id}/members/{user_id}","summary":"Исключение пользователя","scope":"chat_members:write","plan":null,"auth":true,"paginated":false,"command":"pachca members remove","docLink":"https://dev.pachca.com/api/members/remove","describe":"# DELETE /chats/{id}/members/{user_id} — Исключение пользователя\n\n> **Скоуп:** `chat_members:write`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор чата\n- `user_id` — путь (обязательный): Идентификатор пользователя\n\n## Эквивалентная команда\n\n```bash\npachca members remove 334 186 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/members/remove\nПолная справка: `pachca api DELETE /chats/{id}/members/{user_id} --docs` · схема: `--spec`\n","spec":{"method":"DELETE","path":"/chats/{id}/members/{user_id}","description":"Исключение пользователя\n\nУбирает сотрудника или бота из беседы, канала или треда. Из треда исключают по его `chat_id`. В закрытой беседе исключённый теряет доступ к чату, но остаётся в тредах, где состоял.\n\nСотрудника, которого держит в чате привязанный тег, этим методом убрать нельзя: ответ придёт успешный, а сотрудник останется в чате. Снимите с него тег методом [Редактирование сотрудника](PUT /users/{id}) или отцепите тег от чата методом [Исключение тега](DELETE /chats/{id}/group_tags/{tag_id}).\n\nЕсли пользователь является владельцем чата, то исключить его нельзя. Он может только самостоятельно выйти из чата, воспользовавшись методом [Выход из чата](DELETE /chats/{id}/leave).","parameters":[{"name":"id","in":"path","description":"Идентификатор чата","required":true,"schema":{"type":"integer","format":"int32","example":334},"example":334},{"name":"user_id","in":"path","description":"Идентификатор пользователя","required":true,"schema":{"type":"integer","format":"int32","example":186},"example":186}],"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"chat_members:write","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Исключение пользователя\n\n**Метод**: `DELETE`\n\n**Путь**: `/chats/{id}/members/{user_id}`\n\n> **Скоуп:** `chat_members:write`\n\nУбирает сотрудника или бота из беседы, канала или треда. Из треда исключают по его `chat_id`. В закрытой беседе исключённый теряет доступ к чату, но остаётся в тредах, где состоял.\n\nСотрудника, которого держит в чате привязанный тег, этим методом убрать нельзя: ответ придёт успешный, а сотрудник останется в чате. Снимите с него тег методом [Редактирование сотрудника](PUT /users/{id}) или отцепите тег от чата методом [Исключение тега](DELETE /chats/{id}/group_tags/{tag_id}).\n\nЕсли пользователь является владельцем чата, то исключить его нельзя. Он может только самостоятельно выйти из чата, воспользовавшись методом [Выход из чата](DELETE /chats/{id}/leave).\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор чата\n- `user_id: integer, int32` (required) — Идентификатор пользователя\n\n\n## Пример запроса\n\n```bash\ncurl -X DELETE \"https://api.pachca.com/api/shared/v1/chats/334/members/186\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"PUT","path":"/chats/{id}/members/{user_id}","summary":"Редактирование роли","scope":"chat_members:write","plan":null,"auth":true,"paginated":false,"command":"pachca members update","docLink":"https://dev.pachca.com/api/members/update","describe":"# PUT /chats/{id}/members/{user_id} — Редактирование роли\n\n> **Скоуп:** `chat_members:write`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор чата\n- `user_id` — путь (обязательный): Идентификатор пользователя\n\n## Тело запроса\n\n- `role: string` (required) — Роль\n Значения: `admin` — Админ, `editor` — Редактор (доступно только для каналов), `member` — Участник или подписчик\n\n## Эквивалентная команда\n\n```bash\npachca members update 334 186 \\\n --role=admin \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/members/update\nПолная справка: `pachca api PUT /chats/{id}/members/{user_id} --docs` · схема: `--spec`\n","spec":{"method":"PUT","path":"/chats/{id}/members/{user_id}","description":"Редактирование роли\n\nМеняет роль участника беседы или канала. Роль в чате с ролью в пространстве не связана: рядовой сотрудник может быть администратором чата, а повышение в пространстве роли в чатах не меняет.\n\nРоль `editor` существует только в каналах. Себе роль сменить нельзя, как и тому, кто в чате не состоит: метод ответит ошибкой. Повторная установка той же роли считается ошибкой, а не повтором.\n\nВладельцу чата роль изменить нельзя. Он всегда имеет права администратора чата.","parameters":[{"name":"id","in":"path","description":"Идентификатор чата","required":true,"schema":{"type":"integer","format":"int32","example":334},"example":334},{"name":"user_id","in":"path","description":"Идентификатор пользователя","required":true,"schema":{"type":"integer","format":"int32","example":186},"example":186}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на изменение роли участника","required":["role"],"properties":{"role":{"description":"Роль","example":"admin","allOf":[{"type":"string","description":"Роль участника чата","enum":["admin","editor","member"],"x-enum-descriptions":{"admin":"Админ","editor":"Редактор (доступно только для каналов)","member":"Участник или подписчик"},"$ref":"#/components/schemas/ChatMemberRole"}]}},"$ref":"#/components/schemas/UpdateMemberRoleRequest"}}}},"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"chat_members:write","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Редактирование роли\n\n**Метод**: `PUT`\n\n**Путь**: `/chats/{id}/members/{user_id}`\n\n> **Скоуп:** `chat_members:write`\n\nМеняет роль участника беседы или канала. Роль в чате с ролью в пространстве не связана: рядовой сотрудник может быть администратором чата, а повышение в пространстве роли в чатах не меняет.\n\nРоль `editor` существует только в каналах. Себе роль сменить нельзя, как и тому, кто в чате не состоит: метод ответит ошибкой. Повторная установка той же роли считается ошибкой, а не повтором.\n\nВладельцу чата роль изменить нельзя. Он всегда имеет права администратора чата.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор чата\n- `user_id: integer, int32` (required) — Идентификатор пользователя\n\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `role: string` (required) — Роль\n Значения: `admin` — Админ, `editor` — Редактор (доступно только для каналов), `member` — Участник или подписчик\n\n### Пример\n\n```json\n{\n \"role\": \"admin\"\n}\n```\n\n## Пример запроса\n\n```bash\ncurl -X PUT \"https://api.pachca.com/api/shared/v1/chats/334/members/186\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"role\": \"admin\"\n}'\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"PUT","path":"/chats/{id}/unarchive","summary":"Разархивация чата","scope":"chats:archive","plan":null,"auth":true,"paginated":false,"command":"pachca chats unarchive","docLink":"https://dev.pachca.com/api/chats/unarchive","describe":"# PUT /chats/{id}/unarchive — Разархивация чата\n\n> **Скоуп:** `chats:archive`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор чата\n\n## Эквивалентная команда\n\n```bash\npachca chats unarchive 334 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/chats/unarchive\nПолная справка: `pachca api PUT /chats/{id}/unarchive --docs` · схема: `--spec`\n","spec":{"method":"PUT","path":"/chats/{id}/unarchive","description":"Разархивация чата\n\nВозвращает беседу или канал из архива: чат снова появляется в списках, и в него снова можно писать.\n\nЕсли чат и так не в архиве, метод всё равно отвечает успехом.","parameters":[{"name":"id","in":"path","description":"Идентификатор чата","required":true,"schema":{"type":"integer","format":"int32","example":334},"example":334}],"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"chats:archive","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Разархивация чата\n\n**Метод**: `PUT`\n\n**Путь**: `/chats/{id}/unarchive`\n\n> **Скоуп:** `chats:archive`\n\nВозвращает беседу или канал из архива: чат снова появляется в списках, и в него снова можно писать.\n\nЕсли чат и так не в архиве, метод всё равно отвечает успехом.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор чата\n\n\n## Пример запроса\n\n```bash\ncurl -X PUT \"https://api.pachca.com/api/shared/v1/chats/334/unarchive\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/company/bots","summary":"Список ботов пространства","scope":"company_bots:read","plan":"corporation","auth":true,"paginated":true,"command":"pachca bots list-company","docLink":"https://dev.pachca.com/api/bots/list-company","describe":"# GET /company/bots — Список ботов пространства\n\n> **Скоуп:** `company_bots:read`\n\n> **Тариф:** Корпорация\n\n> Пагинация: добавьте `--all` для автоматического обхода страниц\n\n## Параметры\n\n- `query` — query: Поисковая фраза для фильтрации ботов по имени\n- `limit` — query: Количество возвращаемых сущностей за один запрос\n- `cursor` — query: Курсор для пагинации (из `meta.paginate.next_page`)\n\n## Эквивалентная команда\n\n```bash\n# Добавьте --all для автоматической пагинации\npachca bots list-company \\\n --query=задач \\\n --limit=1 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/bots/list-company\nПолная справка: `pachca api GET /company/bots --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/company/bots","description":"Список ботов пространства\n\nВсе боты пространства, включая тех, кто недоступен вам для редактирования. У таких ботов приходят только имя и ник, остальные настройки — `null`.\n\nМетод доступен владельцу пространства. Каждый запрос записывается в [журнал аудита событий](/guides/audit-events) с типом `company_bots_accessed`.","parameters":[{"name":"query","in":"query","description":"Поисковая фраза для фильтрации ботов по имени","required":false,"schema":{"type":"string","example":"задач"},"example":"задач","explode":false},{"name":"limit","in":"query","description":"Количество возвращаемых сущностей за один запрос","required":false,"schema":{"type":"integer","format":"int32","default":50,"example":1,"minimum":1,"maximum":50},"example":1,"explode":false},{"name":"cursor","in":"query","description":"Курсор для пагинации (из `meta.paginate.next_page`)","required":false,"schema":{"type":"string","example":"eyJpZCI6MTczODgxNn0"},"example":"eyJpZCI6MTczODgxNn0","explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными и пагинацией","required":["data","meta"],"properties":{"data":{"type":"array","items":{"type":"object","description":"Параметры бота пространства","required":["id","webhook"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор бота (совпадает с `user_id` бота)","example":1738816},"webhook":{"description":"Объект параметров вебхука","allOf":[{"type":"object","description":"Параметры вебхука бота пространства. Настройки бота, недоступного вам для редактирования, приходят как `null` — остаются только имя и никнейм.","required":["name","nickname","outgoing_url","events","trigger_on","commands","scopes","template","template_engine","challenge_key","link_preview_enabled","ignore_self_messages","events_history_enabled","single_chat","can_edit","who_can_add"],"properties":{"name":{"type":"string","description":"Имя бота","example":"Бот задач","maxLength":255},"nickname":{"type":"string","description":"Никнейм бота","example":"tasks_bot","maxLength":255},"outgoing_url":{"type":"string","description":"URL исходящего вебхука. `null`, если исходящий вебхук у бота не настроен.","example":"https://www.website.com/tasks/new","nullable":true},"events":{"type":"array","description":"События, на которые подписан бот","example":["message_new"],"nullable":true,"items":{"type":"string","description":"Событие исходящего вебхука бота","enum":["message_new","message_update","message_delete","reaction_new","reaction_delete","button_click","message_link_shared","chat_member_add","chat_member_remove","company_member_invite","company_member_confirm","company_member_suspend","company_member_activate","company_member_delete","company_member_update","video_call_started","video_call_finished","video_call_recording_ready"],"x-enum-descriptions":{"message_new":"Новое сообщение","message_update":"Сообщение отредактировано","message_delete":"Сообщение удалено","reaction_new":"Добавлена реакция","reaction_delete":"Реакция удалена","button_click":"Нажата кнопка","message_link_shared":"В сообщении отправлена ссылка (для unfurl)","chat_member_add":"Участник добавлен в чат","chat_member_remove":"Участник удалён из чата","company_member_invite":"Сотрудник приглашён в компанию","company_member_confirm":"Сотрудник подтвердил приглашение","company_member_suspend":"Сотрудник деактивирован","company_member_activate":"Сотрудник активирован","company_member_delete":"Сотрудник удалён из компании","company_member_update":"Данные сотрудника изменены","video_call_started":"Видеозвонок начался","video_call_finished":"Видеозвонок завершился","video_call_recording_ready":"Запись видеозвонка готова"},"$ref":"#/components/schemas/BotEventName"}},"trigger_on":{"description":"Условие срабатывания исходящего вебхука","example":"commands","nullable":true,"allOf":[{"type":"string","description":"Условие срабатывания исходящего вебхука бота","enum":["commands","all_messages","unfurl"],"x-enum-descriptions":{"commands":"Только на команды (триггер-слова) из commands","all_messages":"На все сообщения в чатах, где есть бот","unfurl":"На развёртывание ссылок (link previews)"},"$ref":"#/components/schemas/BotTriggerOn"}]},"commands":{"type":"array","description":"Команды бота (триггер-слова)","example":["/task"],"nullable":true,"items":{"type":"string"}},"scopes":{"type":"array","description":"Скоупы (права доступа) токена бота","example":["messages:create"],"nullable":true,"items":{"type":"string"}},"template":{"type":"string","description":"Шаблон форматирования входящего вебхука. `null`, если не задан.","example":"Заказ от {{ client }} на сумму {{ amount }} ₽","nullable":true},"template_engine":{"description":"Шаблонизатор для обработки шаблона входящего вебхука","example":"liquid","nullable":true,"allOf":[{"type":"string","description":"Шаблонизатор для форматирования входящих вебхуков","enum":["liquid","mustache"],"x-enum-descriptions":{"liquid":"Liquid — условия, циклы и фильтры","mustache":"Mustache — простая подстановка без логики"},"$ref":"#/components/schemas/BotTemplateEngine"}]},"challenge_key":{"type":"string","description":"Название поля проверки для верификации входящего вебхука. `null`, если не задано.","example":"challenge","nullable":true},"link_preview_enabled":{"type":"boolean","description":"Показывать превью ссылок в сообщениях входящего вебхука","example":true,"nullable":true},"ignore_self_messages":{"type":"boolean","description":"Игнорировать входящие сообщения, отправленные самим ботом","example":false,"nullable":true},"events_history_enabled":{"type":"boolean","description":"Сохранять историю событий бота для последующего получения через метод истории событий","example":false,"nullable":true},"single_chat":{"type":"boolean","description":"Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят.","example":false,"nullable":true},"can_edit":{"type":"array","description":"Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель.","example":["admin"],"nullable":true,"items":{"type":"string","description":"Роль, которой разрешено редактировать настройки бота","enum":["admin","chat_owners"],"x-enum-descriptions":{"admin":"Администраторы компании","chat_owners":"Владельцы чатов, в которые добавлен бот"},"$ref":"#/components/schemas/BotCanEdit"}},"who_can_add":{"description":"Кто может добавлять бота в чаты","example":"creator","nullable":true,"allOf":[{"type":"string","description":"Кто может добавлять бота в чаты","enum":["creator","creator_admin","creator_admin_user","anyone"],"x-enum-descriptions":{"creator":"Только создатель бота","creator_admin":"Создатель и администраторы компании","creator_admin_user":"Создатель, администраторы и участники компании","anyone":"Любой пользователь, в том числе гости"},"$ref":"#/components/schemas/BotWhoCanAdd"}]}},"$ref":"#/components/schemas/CompanyBotWebhook"}]}},"$ref":"#/components/schemas/CompanyBotResponse"}},"meta":{"type":"object","description":"Метаданные пагинации","required":["paginate"],"properties":{"paginate":{"type":"object","description":"Вспомогательная информация","required":["next_page"],"properties":{"next_page":{"type":"string","description":"Курсор пагинации следующей страницы","example":"eyJxZCO2MiwiZGlyIjomSNYjIn3"},"prev_page":{"type":"string","description":"Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка.","example":"eyJxZCO2MiwiZGlyIjoiYXNjIn0"},"has_next":{"type":"boolean","description":"Есть ли ещё данные на следующей странице. На последней странице — `false`.","example":true},"has_prev":{"type":"boolean","description":"Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`.","example":false}}}},"$ref":"#/components/schemas/PaginationMeta"}}},"example":{"data":[{"id":1738816,"webhook":{"name":"Бот задач","nickname":"tasks_bot","outgoing_url":"https://www.website.com/tasks/new","events":["message_new"],"trigger_on":"commands","commands":["/task"],"scopes":["messages:create"],"template":"Заказ от {{ client }} на сумму {{ amount }} ₽","template_engine":"liquid","challenge_key":"challenge","link_preview_enabled":true,"ignore_self_messages":false,"events_history_enabled":false,"single_chat":false,"can_edit":["admin"],"who_can_add":"creator"}},{"id":1738817,"webhook":{"name":"Бот релизов","nickname":"release_bot","outgoing_url":null,"events":null,"trigger_on":null,"commands":null,"scopes":null,"template":null,"template_engine":null,"challenge_key":null,"link_preview_enabled":null,"ignore_self_messages":null,"events_history_enabled":null,"single_chat":null,"can_edit":null,"who_can_add":null}}],"meta":{"paginate":{"next_page":"eyJpZCI6MTczODgxN30"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"},{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}]}}}}},"requirements":{"scope":"company_bots:read","plan":"corporation","scopeRoles":["owner"]},"paginated":true},"docs":"# Список ботов пространства\n\n**Метод**: `GET`\n\n**Путь**: `/company/bots`\n\n> **Скоуп:** `company_bots:read`\n\n> **Внимание:** Доступно только на тарифе **Корпорация**\n\nВсе боты пространства, включая тех, кто недоступен вам для редактирования. У таких ботов приходят только имя и ник, остальные настройки — `null`.\n\nМетод доступен владельцу пространства. Каждый запрос записывается в [журнал аудита событий](/guides/audit-events) с типом `company_bots_accessed`.\n\n## Параметры\n\n### Query параметры\n\n- `query: string` — Поисковая фраза для фильтрации ботов по имени\n- `limit: integer, int32` (default: 50) — Количество возвращаемых сущностей за один запрос\n- `cursor: string` — Курсор для пагинации (из `meta.paginate.next_page`)\n\n\n## Пример запроса\n\n```bash\n# Для получения следующей страницы используйте cursor из meta.paginate.next_page\ncurl \"https://api.pachca.com/api/shared/v1/company/bots?query=задач&limit=1\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: array of object` (required)\n - `id: integer, int32` (required) — Идентификатор бота (совпадает с `user_id` бота). Пример: `1738816`\n - `webhook: object` (required) — Объект параметров вебхука\n - `name: string` (required, max length: 255) — Имя бота. Пример: `\"Бот задач\"`\n - `nickname: string` (required, max length: 255) — Никнейм бота. Пример: `\"tasks_bot\"`\n - `outgoing_url: string` (required, nullable) — URL исходящего вебхука. `null`, если исходящий вебхук у бота не настроен. Пример: `\"https://www.website.com/tasks/new\"`\n - `events: array of string` (required, nullable) — События, на которые подписан бот. Пример: `[\"message_new\"]`\n - `trigger_on: string` (required) — Условие срабатывания исходящего вебхука\n Значения: `commands` — Только на команды (триггер-слова) из commands, `all_messages` — На все сообщения в чатах, где есть бот, `unfurl` — На развёртывание ссылок (link previews)\n - `commands: array of string` (required, nullable) — Команды бота (триггер-слова). Пример: `[\"/task\"]`\n - `scopes: array of string` (required, nullable) — Скоупы (права доступа) токена бота. Пример: `[\"messages:create\"]`\n - `template: string` (required, nullable) — Шаблон форматирования входящего вебхука. `null`, если не задан. Пример: `\"Заказ от {{ client }} на сумму {{ amount }} ₽\"`\n - `template_engine: string` (required) — Шаблонизатор для обработки шаблона входящего вебхука\n Значения: `liquid` — Liquid — условия, циклы и фильтры, `mustache` — Mustache — простая подстановка без логики\n - `challenge_key: string` (required, nullable) — Название поля проверки для верификации входящего вебхука. `null`, если не задано. Пример: `\"challenge\"`\n - `link_preview_enabled: boolean` (required, nullable) — Показывать превью ссылок в сообщениях входящего вебхука. Пример: `true`\n - `ignore_self_messages: boolean` (required, nullable) — Игнорировать входящие сообщения, отправленные самим ботом. Пример: `false`\n - `events_history_enabled: boolean` (required, nullable) — Сохранять историю событий бота для последующего получения через метод истории событий. Пример: `false`\n - `single_chat: boolean` (required, nullable) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false`\n - `can_edit: array of string` (required, nullable) — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `[\"admin\"]`\n - `who_can_add: string` (required) — Кто может добавлять бота в чаты\n Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Любой пользователь, в том числе гости\n- `meta: object` (required) — Метаданные пагинации\n - `paginate: object` (required) — Вспомогательная информация\n - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `\"eyJxZCO2MiwiZGlyIjomSNYjIn3\"`\n - `prev_page: string` — Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка. Пример: `\"eyJxZCO2MiwiZGlyIjoiYXNjIn0\"`\n - `has_next: boolean` — Есть ли ещё данные на следующей странице. На последней странице — `false`. Пример: `true`\n - `has_prev: boolean` — Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`. Пример: `false`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": [\n {\n \"id\": 1738816,\n \"webhook\": {\n \"name\": \"Бот задач\",\n \"nickname\": \"tasks_bot\",\n \"outgoing_url\": \"https://www.website.com/tasks/new\",\n \"events\": [\n \"message_new\"\n ],\n \"trigger_on\": \"commands\",\n \"commands\": [\n \"/task\"\n ],\n \"scopes\": [\n \"messages:create\"\n ],\n \"template\": \"Заказ от {{ client }} на сумму {{ amount }} ₽\",\n \"template_engine\": \"liquid\",\n \"challenge_key\": \"challenge\",\n \"link_preview_enabled\": true,\n \"ignore_self_messages\": false,\n \"events_history_enabled\": false,\n \"single_chat\": false,\n \"can_edit\": [\n \"admin\"\n ],\n \"who_can_add\": \"creator\"\n }\n },\n {\n \"id\": 1738817,\n \"webhook\": {\n \"name\": \"Бот релизов\",\n \"nickname\": \"release_bot\",\n \"outgoing_url\": null,\n \"events\": null,\n \"trigger_on\": null,\n \"commands\": null,\n \"scopes\": null,\n \"template\": null,\n \"template_engine\": null,\n \"challenge_key\": null,\n \"link_preview_enabled\": null,\n \"ignore_self_messages\": null,\n \"events_history_enabled\": null,\n \"single_chat\": null,\n \"can_edit\": null,\n \"who_can_add\": null\n }\n }\n ],\n \"meta\": {\n \"paginate\": {\n \"next_page\": \"eyJpZCI6MTczODgxN30\"\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n**anyOf** - один из вариантов:\n\n- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)\n - `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403)\n - `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n - `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/company/chats","summary":"Список чатов пространства","scope":"company_chats:read","plan":"corporation","auth":true,"paginated":true,"command":"pachca chats list-company","docLink":"https://dev.pachca.com/api/chats/list-company","describe":"# GET /company/chats — Список чатов пространства\n\n> **Скоуп:** `company_chats:read`\n\n> **Тариф:** Корпорация\n\n> Пагинация: добавьте `--all` для автоматического обхода страниц\n\n## Параметры\n\n- `activity` — query: Состояние чатов. Если параметр не указан, возвращаются и активные, и архивные чаты.\n- `limit` — query: Количество возвращаемых сущностей за один запрос\n- `cursor` — query: Курсор для пагинации (из `meta.paginate.next_page`)\n\n## Эквивалентная команда\n\n```bash\n# Добавьте --all для автоматической пагинации\npachca chats list-company \\\n --activity=active \\\n --limit=1 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/chats/list-company\nПолная справка: `pachca api GET /company/chats --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/company/chats","description":"Список чатов пространства\n\nБеседы и каналы всего пространства, включая закрытые, где вы не состоите участником. Личные переписки и треды не возвращаются.\n\nПо умолчанию отдаются и активные, и архивные чаты. Параметр `activity` оставляет в выдаче только одно из состояний.\n\nМетод доступен владельцу пространства. Каждый запрос записывается в [журнал аудита событий](/guides/audit-events) с типом `company_chats_accessed`.","parameters":[{"name":"activity","in":"query","description":"Состояние чатов. Если параметр не указан, возвращаются и активные, и архивные чаты.","required":false,"schema":{"type":"string","description":"Состояние чатов в выборке","enum":["active","archived"],"x-enum-descriptions":{"active":"Только активные чаты","archived":"Только архивные чаты"},"example":"active","$ref":"#/components/schemas/ChatActivity"},"example":"active","explode":false},{"name":"limit","in":"query","description":"Количество возвращаемых сущностей за один запрос","required":false,"schema":{"type":"integer","format":"int32","default":50,"example":1,"minimum":1,"maximum":50},"example":1,"explode":false},{"name":"cursor","in":"query","description":"Курсор для пагинации (из `meta.paginate.next_page`)","required":false,"schema":{"type":"string","example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9"},"example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9","explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными и пагинацией","required":["data","meta"],"properties":{"data":{"type":"array","items":{"type":"object","description":"Чат","required":["id","name","created_at","owner_id","member_ids","group_tag_ids","channel","archived","personal","public","last_message_at","meet_room_url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор созданного чата","example":334},"name":{"type":"string","description":"Название","example":"🤿 aqua","maxLength":255},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания чата (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2021-08-28T15:56:53.000Z"},"owner_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, создавшего чат","example":185},"member_ids":{"type":"array","description":"Массив идентификаторов пользователей, участников","example":[185,186,187],"items":{"type":"integer","format":"int32"}},"group_tag_ids":{"type":"array","description":"Массив идентификаторов тегов, участников","example":[9111],"items":{"type":"integer","format":"int32"}},"channel":{"type":"boolean","description":"Является каналом","example":true},"archived":{"type":"boolean","description":"Находится в архиве","example":false},"personal":{"type":"boolean","description":"Является личным чатом","example":false},"public":{"type":"boolean","description":"Открытый доступ","example":false},"last_message_at":{"type":"string","format":"date-time","description":"Дата и время создания последнего сообщения в чате (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2021-08-28T15:56:53.000Z"},"meet_room_url":{"type":"string","description":"Ссылка на Видеочат","example":"https://meet.pachca.com/aqua-94bb21b5"}},"$ref":"#/components/schemas/Chat"}},"meta":{"type":"object","description":"Метаданные пагинации","required":["paginate"],"properties":{"paginate":{"type":"object","description":"Вспомогательная информация","required":["next_page"],"properties":{"next_page":{"type":"string","description":"Курсор пагинации следующей страницы","example":"eyJxZCO2MiwiZGlyIjomSNYjIn3"},"prev_page":{"type":"string","description":"Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка.","example":"eyJxZCO2MiwiZGlyIjoiYXNjIn0"},"has_next":{"type":"boolean","description":"Есть ли ещё данные на следующей странице. На последней странице — `false`.","example":true},"has_prev":{"type":"boolean","description":"Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`.","example":false}}}},"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"},{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}]}}}}},"requirements":{"scope":"company_chats:read","plan":"corporation","scopeRoles":["owner"]},"paginated":true},"docs":"# Список чатов пространства\n\n**Метод**: `GET`\n\n**Путь**: `/company/chats`\n\n> **Скоуп:** `company_chats:read`\n\n> **Внимание:** Доступно только на тарифе **Корпорация**\n\nБеседы и каналы всего пространства, включая закрытые, где вы не состоите участником. Личные переписки и треды не возвращаются.\n\nПо умолчанию отдаются и активные, и архивные чаты. Параметр `activity` оставляет в выдаче только одно из состояний.\n\nМетод доступен владельцу пространства. Каждый запрос записывается в [журнал аудита событий](/guides/audit-events) с типом `company_chats_accessed`.\n\n## Параметры\n\n### Query параметры\n\n- `activity: string` — Состояние чатов. Если параметр не указан, возвращаются и активные, и архивные чаты.\n Значения: `active`, `archived`\n- `limit: integer, int32` (default: 50) — Количество возвращаемых сущностей за один запрос\n- `cursor: string` — Курсор для пагинации (из `meta.paginate.next_page`)\n\n\n## Пример запроса\n\n```bash\n# Для получения следующей страницы используйте cursor из meta.paginate.next_page\ncurl \"https://api.pachca.com/api/shared/v1/company/chats?activity=active&limit=1\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: array of object` (required)\n - `id: integer, int32` (required) — Идентификатор созданного чата. Пример: `334`\n - `name: string` (required, max length: 255) — Название. Пример: `\"🤿 aqua\"`\n - `created_at: date-time` (required) — Дата и время создания чата (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2021-08-28T15:56:53.000Z\"`\n - `owner_id: integer, int32` (required) — Идентификатор пользователя, создавшего чат. Пример: `185`\n - `member_ids: array of integer` (required) — Массив идентификаторов пользователей, участников. Пример: `[185,186,187]`\n - `group_tag_ids: array of integer` (required) — Массив идентификаторов тегов, участников. Пример: `[9111]`\n - `channel: boolean` (required) — Является каналом. Пример: `true`\n - `archived: boolean` (required) — Находится в архиве. Пример: `false`\n - `personal: boolean` (required) — Является личным чатом. Пример: `false`\n - `public: boolean` (required) — Открытый доступ. Пример: `false`\n - `last_message_at: date-time` (required) — Дата и время создания последнего сообщения в чате (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2021-08-28T15:56:53.000Z\"`\n - `meet_room_url: string` (required) — Ссылка на Видеочат. Пример: `\"https://meet.pachca.com/aqua-94bb21b5\"`\n- `meta: object` (required) — Метаданные пагинации\n - `paginate: object` (required) — Вспомогательная информация\n - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `\"eyJxZCO2MiwiZGlyIjomSNYjIn3\"`\n - `prev_page: string` — Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка. Пример: `\"eyJxZCO2MiwiZGlyIjoiYXNjIn0\"`\n - `has_next: boolean` — Есть ли ещё данные на следующей странице. На последней странице — `false`. Пример: `true`\n - `has_prev: boolean` — Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`. Пример: `false`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": [\n {\n \"id\": 334,\n \"name\": \"🤿 aqua\",\n \"created_at\": \"2021-08-28T15:56:53.000Z\",\n \"owner_id\": 185,\n \"member_ids\": [\n 185,\n 186,\n 187\n ],\n \"group_tag_ids\": [\n 9111\n ],\n \"channel\": true,\n \"archived\": false,\n \"personal\": false,\n \"public\": false,\n \"last_message_at\": \"2021-08-28T15:56:53.000Z\",\n \"meet_room_url\": \"https://meet.pachca.com/aqua-94bb21b5\"\n }\n ],\n \"meta\": {\n \"paginate\": {\n \"next_page\": \"eyJxZCO2MiwiZGlyIjomSNYjIn3\",\n \"prev_page\": \"eyJxZCO2MiwiZGlyIjoiYXNjIn0\",\n \"has_next\": true,\n \"has_prev\": false\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n**anyOf** - один из вариантов:\n\n- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)\n - `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403)\n - `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n - `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/custom_properties","summary":"Список дополнительных полей","scope":"custom_properties:read","plan":null,"auth":true,"paginated":false,"command":"pachca custom-properties list","docLink":"https://dev.pachca.com/api/custom-properties/list","describe":"# GET /custom_properties — Список дополнительных полей\n\n> **Скоуп:** `custom_properties:read`\n\n## Параметры\n\n- `entity_type` — query (обязательный): Тип сущности\n\n## Эквивалентная команда\n\n```bash\npachca custom-properties list \\\n --entity-type=User \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/custom-properties/list\nПолная справка: `pachca api GET /custom_properties --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/custom_properties","description":"Список дополнительных полей\n\nСхема дополнительных полей пространства: идентификатор, название и тип каждого. Такие поля доступны только для сотрудников и напоминаний, наборы у них независимые, а нужный выбирает параметр `entity_type`. Значения приходят в самой сущности — в карточке сотрудника или в напоминании. Идентификаторы отсюда нужны, чтобы эти значения задавать.\n\nПоля типов «Файл» и «Множественный выбор» через API недоступны и в выдачу не попадают. Базовые поля карточки — имя, телефон, почта, отдел, теги — тоже: это не дополнительные поля.\n\nНабор полей задаёт администратор пространства, он же их переименовывает и удаляет. Поэтому список стоит перечитывать перед работой: обращение к полю, которого уже нет, возвращает ошибку.","parameters":[{"name":"entity_type","in":"query","description":"Тип сущности","required":true,"schema":{"type":"string","description":"Тип сущности для поиска","enum":["User","Task"],"x-enum-descriptions":{"User":"Пользователь","Task":"Задача"},"example":"User","$ref":"#/components/schemas/SearchEntityType"},"example":"User","explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"array","items":{"type":"object","description":"Дополнительное поле","required":["id","name","data_type"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор поля","example":1678},"name":{"type":"string","description":"Название поля","example":"Город","maxLength":32},"data_type":{"description":"Тип поля","example":"string","allOf":[{"type":"string","description":"Тип данных дополнительного поля","enum":["string","number","date","link"],"x-enum-descriptions":{"string":"Строковое значение","number":"Числовое значение","date":"Дата","link":"Ссылка"},"$ref":"#/components/schemas/CustomPropertyDataType"}]}},"$ref":"#/components/schemas/CustomPropertyDefinition"}}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"custom_properties:read","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Список дополнительных полей\n\n**Метод**: `GET`\n\n**Путь**: `/custom_properties`\n\n> **Скоуп:** `custom_properties:read`\n\nСхема дополнительных полей пространства: идентификатор, название и тип каждого. Такие поля доступны только для сотрудников и напоминаний, наборы у них независимые, а нужный выбирает параметр `entity_type`. Значения приходят в самой сущности — в карточке сотрудника или в напоминании. Идентификаторы отсюда нужны, чтобы эти значения задавать.\n\nПоля типов «Файл» и «Множественный выбор» через API недоступны и в выдачу не попадают. Базовые поля карточки — имя, телефон, почта, отдел, теги — тоже: это не дополнительные поля.\n\nНабор полей задаёт администратор пространства, он же их переименовывает и удаляет. Поэтому список стоит перечитывать перед работой: обращение к полю, которого уже нет, возвращает ошибку.\n\n## Параметры\n\n### Query параметры\n\n- `entity_type: string` (required) — Тип сущности\n Значения: `User`, `Task`\n\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/custom_properties?entity_type=User\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: array of object` (required)\n - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678`\n - `name: string` (required, max length: 32) — Название поля. Пример: `\"Город\"`\n - `data_type: string` (required) — Тип поля\n Значения: `string` — Строковое значение, `number` — Числовое значение, `date` — Дата, `link` — Ссылка\n\n**Пример ответа:**\n\n```json\n{\n \"data\": [\n {\n \"id\": 1678,\n \"name\": \"Город\",\n \"data_type\": \"string\"\n }\n ]\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"POST","path":"/direct_url","summary":"Загрузка файла","scope":null,"plan":null,"auth":false,"paginated":false,"command":"pachca files direct-url","docLink":"https://dev.pachca.com/api/files/direct-url","describe":"# POST /direct_url — Загрузка файла\n\n> Авторизация не требуется\n\n## Тело запроса\n\n- `Content-Disposition: string` (required) — Параметр Content-Disposition, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)\n- `acl: string` (required) — Параметр acl, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)\n- `policy: string` (required) — Параметр policy, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)\n- `x-amz-credential: string` (required) — Параметр x-amz-credential, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)\n- `x-amz-algorithm: string` (required) — Параметр x-amz-algorithm, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)\n- `x-amz-date: string` (required) — Параметр x-amz-date, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)\n- `x-amz-signature: string` (required) — Параметр x-amz-signature, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)\n- `key: string` (required) — Параметр key, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)\n- `file: binary` (required) — Файл для загрузки\n\n## Эквивалентная команда\n\n```bash\n# URL получается из ответа POST /uploads (поле direct_url)\npachca files direct-url \\\n --direct-url=$DIRECT_URL \\\n --content-disposition=your_api_token_here \\\n --acl=your_api_token_here \\\n --policy=your_api_token_here \\\n --x-amz-credential=your_api_token_here \\\n --x-amz-algorithm=your_api_token_here \\\n --x-amz-date=your_api_token_here \\\n --x-amz-signature=your_api_token_here \\\n --key=your_api_token_here \\\n --file=./file.jpg \\\n --json\n```\n\nДокументация: https://dev.pachca.com/api/files/direct-url\nПолная справка: `pachca api POST /direct_url --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/direct_url","description":"Загрузка файла\n\nВторой шаг загрузки: сам файл уходит в хранилище формой `multipart/form-data`. Поля формы и адрес берутся из ответа метода [Получение подписи, ключа и других параметров](POST /uploads) и передаются как есть, в том же порядке, а файл идёт последним полем.\n\nЗапрос уходит не в API Пачки, а прямо в хранилище, и в ответ приходит `204` без тела. Дальше файл прикладывают, передав его `key` в поле `files` — в [Новое сообщение](POST /messages) или [Новый черновик](POST /drafts), а также при их правке. Имя файла в `name` должно иметь то же расширение, что и `key`, иначе сообщение будет отклонено.","parameters":[],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["Content-Disposition","acl","policy","x-amz-credential","x-amz-algorithm","x-amz-date","x-amz-signature","key","file"],"properties":{"Content-Disposition":{"type":"string","description":"Параметр Content-Disposition, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)"},"acl":{"type":"string","description":"Параметр acl, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)"},"policy":{"type":"string","description":"Параметр policy, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)"},"x-amz-credential":{"type":"string","description":"Параметр x-amz-credential, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)"},"x-amz-algorithm":{"type":"string","description":"Параметр x-amz-algorithm, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)"},"x-amz-date":{"type":"string","description":"Параметр x-amz-date, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)"},"x-amz-signature":{"type":"string","description":"Параметр x-amz-signature, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)"},"key":{"type":"string","description":"Параметр key, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)"},"file":{"type":"string","format":"binary","description":"Файл для загрузки"}},"$ref":"#/components/schemas/FileUploadRequest"}}}},"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "}},"requirements":{"auth":false},"paginated":false},"docs":"# Загрузка файла\n\n**Метод**: `POST`\n\n**Путь**: `/direct_url`\n\n> Авторизация не требуется\n\nВторой шаг загрузки: сам файл уходит в хранилище формой `multipart/form-data`. Поля формы и адрес берутся из ответа метода [Получение подписи, ключа и других параметров](POST /uploads) и передаются как есть, в том же порядке, а файл идёт последним полем.\n\nЗапрос уходит не в API Пачки, а прямо в хранилище, и в ответ приходит `204` без тела. Дальше файл прикладывают, передав его `key` в поле `files` — в [Новое сообщение](POST /messages) или [Новый черновик](POST /drafts), а также при их правке. Имя файла в `name` должно иметь то же расширение, что и `key`, иначе сообщение будет отклонено.\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `multipart/form-data`\n\n### Схема\n\n- `Content-Disposition: string` (required) — Параметр Content-Disposition, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)\n- `acl: string` (required) — Параметр acl, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)\n- `policy: string` (required) — Параметр policy, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)\n- `x-amz-credential: string` (required) — Параметр x-amz-credential, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)\n- `x-amz-algorithm: string` (required) — Параметр x-amz-algorithm, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)\n- `x-amz-date: string` (required) — Параметр x-amz-date, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)\n- `x-amz-signature: string` (required) — Параметр x-amz-signature, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)\n- `key: string` (required) — Параметр key, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)\n- `file: binary` (required) — Файл для загрузки\n\n\n## Пример запроса\n\n```bash\n# URL получается из ответа POST /uploads (поле direct_url)\ncurl \"$DIRECT_URL\" \\\n -F 'Content-Disposition=attachment' \\\n -F 'acl=private' \\\n -F 'policy=eyJloNBpcmF0aW9u...' \\\n -F 'x-amz-credential=286471_server/20211122/kz-6x/s3/aws4_request' \\\n -F 'x-amz-algorithm=AWS4-HMAC-SHA256' \\\n -F 'x-amz-date=20211122T065734Z' \\\n -F 'x-amz-signature=87e8f3ba4083c937c0e891d7a11tre932d8c33cg4bacf5380bf27624c1ok1475' \\\n -F 'key=attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/${filename}' \\\n -F 'file=@filename.png'\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n"},{"method":"POST","path":"/drafts","summary":"Новый черновик","scope":"drafts:write","plan":null,"auth":true,"paginated":false,"command":"pachca drafts create","docLink":"https://dev.pachca.com/api/drafts/create","describe":"# POST /drafts — Новый черновик\n\n> **Скоуп:** `drafts:write`\n\n## Тело запроса\n\n- `draft: object` (required) — Собранный объект параметров черновика\n - `entity_type: string` (required) — Куда пишется черновик: в беседу или канал, в тред либо в личную переписку с сотрудником\n Значения: `discussion` — Беседа или канал, `thread` — Тред, `user` — Пользователь\n - `entity_id: integer, int32` (required) — Идентификатор того, что названо в `entity_type`: беседы или канала, треда либо сотрудника\n - `content: string` — Текст черновика. Можно не передавать, если есть вложения, но пустым черновик быть не может.\n - `parent_message_id: integer, int32` (nullable) — Идентификатор сообщения, ответом на которое уйдёт черновик. Сообщение должно быть в том же чате.\n - `files: array of object` (max items: 10) — Прикрепляемые файлы, не больше десяти\n - `id: integer, int32` — Идентификатор уже прикреплённого файла. Передаётся при редактировании, чтобы сохранить вложение как есть. У нового файла не указывается.\n - `key: string` (required, max length: 1000) — Путь к файлу, полученный в методе [Загрузка файла](POST /direct_url)\n - `name: string` (required, max length: 255) — Название файла, которое вы хотите отображать пользователю\n - `file_type: string` — Тип файла\n Значения: `file` — Обычный файл, `image` — Изображение, `audio` — Аудиофайл, `voice` — Голосовое сообщение, `video` — Видеофайл\n - `size: integer, int64` — Размер файла в байтах, отображаемый пользователю\n - `width: integer, int32` — Ширина изображения в пикселях\n - `height: integer, int32` — Высота изображения в пикселях\n - `duration_ms: integer, int32` — Длительность в миллисекундах. Обязательна для голосового сообщения (`file_type` — `voice`).\n - `waveform: string` (max length: 256) — Форма волны для визуализации. Обязательна для голосового сообщения (`file_type` — `voice`).\n - `schedule: object` — Расписание отправки. С ним создаётся отложенное сообщение, без него — обычный черновик.\n - `start_date: date-time` (required) — Первая отправка (ISO-8601). Из неё берутся время суток, число месяца и день недели, по которым дальше строится повтор. Смещение вида `+03:00` учитывается, время без смещения считается UTC.\n - `end_date: date-time` (nullable) — Дата, после которой повтор прекращается (ISO-8601). Без неё повтор идёт бессрочно.\n - `repetition: object` (required) — Правило повтора\n - `interval: string` (required) — Периодичность\n Значения: `once` — Один раз, `daily` — Каждый день, `weekly` — Каждую неделю, `monthly` — Каждый месяц, `every_2_months` — Раз в два месяца, `every_3_months` — Раз в три месяца, `every_4_months` — Раз в четыре месяца, `every_6_months` — Раз в полгода, `yearly` — Раз в год\n - `days: array of integer` (max items: 7) — Дни недели, по которым уходит сообщение: 0 — воскресенье, 6 — суббота. Учитывается только при периодичности `weekly`, а если не передать, берётся день недели из `start_date`.\n - `nth_day: integer, int32` (nullable, min: 1, max: 5) — Какой по счёту день недели в месяце: от 1 до 4 — первый, второй, третий, четвёртый, 5 — последний. Учитывается только при периодичности по месяцам, а без него повтор идёт по числу месяца из `start_date`.\n\n## Эквивалентная команда\n\n```bash\npachca drafts create \\\n --entity-type=discussion \\\n --entity-id=334 \\\n --content='Отчёт за неделю: продажи выросли на 10%' \\\n --parent-message-id=196093 \\\n --files='[{\"id\":3560,\"key\":\"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png\",\"name\":\"logo.png\",\"file_type\":\"image\",\"size\":12345,\"width\":800,\"height\":600,\"duration_ms\":5400,\"waveform\":\"4,8,12,20,16,10,6,3\"}]' \\\n --schedule='{\"start_date\":\"2026-09-17T12:00:00.000Z\",\"end_date\":\"2026-12-31T12:00:00.000Z\",\"repetition\":{\"interval\":\"weekly\",\"days\":[1,3],\"nth_day\":2}}' \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/drafts/create\nПолная справка: `pachca api POST /drafts --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/drafts","description":"Новый черновик\n\nКладёт черновик в беседу, тред или личную переписку. В интерфейсе Пачки он появляется в поле ввода этого чата, где сотрудник его допишет и отправит. Этим же методом создаётся отложенное сообщение: с полем `schedule` черновик уходит сам в назначенное время, без него просто лежит. Сам метод ничего не отправляет, для отправки есть [Новое сообщение](POST /messages).\n\nЧерновик виден только своему автору — его не видит ни собеседник, ни администратор пространства. Обычный черновик в чате может быть только один. Повторный вызов отвечает `409` с кодом `already_exists` и номером существующего в `payload.draft_id`. Дописывают его методом [Редактирование черновика](PUT /drafts/{id}). Отложенных сообщений на один чат — не больше 50.\n\nДля треда в `entity_id` передают идентификатор самого треда, а не сообщения, под которым он висит. Личной переписки с сотрудником может ещё не быть — тогда она заводится сама, как при обычной отправке сообщения.\n\nПустой черновик создать нельзя: нужен либо текст, либо вложения.\n\nТокенам ботов метод недоступен.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на создание черновика","required":["draft"],"properties":{"draft":{"type":"object","description":"Собранный объект параметров черновика","required":["entity_type","entity_id"],"properties":{"entity_type":{"description":"Куда пишется черновик: в беседу или канал, в тред либо в личную переписку с сотрудником","example":"discussion","allOf":[{"type":"string","description":"Тип сущности для сообщений","enum":["discussion","thread","user"],"x-enum-descriptions":{"discussion":"Беседа или канал","thread":"Тред","user":"Пользователь"},"$ref":"#/components/schemas/MessageEntityType"}]},"entity_id":{"type":"integer","format":"int32","description":"Идентификатор того, что названо в `entity_type`: беседы или канала, треда либо сотрудника","example":334},"content":{"type":"string","description":"Текст черновика. Можно не передавать, если есть вложения, но пустым черновик быть не может.","example":"Отчёт за неделю: продажи выросли на 10%"},"parent_message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, ответом на которое уйдёт черновик. Сообщение должно быть в том же чате.","example":196093,"nullable":true},"files":{"type":"array","description":"Прикрепляемые файлы, не больше десяти","maxItems":10,"items":{"type":"object","description":"Прикрепляемый к черновику файл","required":["key","name"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор уже прикреплённого файла. Передаётся при редактировании, чтобы сохранить вложение как есть. У нового файла не указывается.","example":3560},"key":{"type":"string","description":"Путь к файлу, полученный в методе [Загрузка файла](POST /direct_url)","example":"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png","maxLength":1000},"name":{"type":"string","description":"Название файла, которое вы хотите отображать пользователю","example":"logo.png","maxLength":255},"file_type":{"description":"Тип файла","example":"image","allOf":[{"type":"string","description":"Тип файла","enum":["file","image","audio","voice","video"],"x-enum-descriptions":{"file":"Обычный файл","image":"Изображение","audio":"Аудиофайл","voice":"Голосовое сообщение","video":"Видеофайл"},"$ref":"#/components/schemas/FileType"}]},"size":{"type":"integer","format":"int64","description":"Размер файла в байтах, отображаемый пользователю","example":12345},"width":{"type":"integer","format":"int32","description":"Ширина изображения в пикселях","example":800},"height":{"type":"integer","format":"int32","description":"Высота изображения в пикселях","example":600},"duration_ms":{"type":"integer","format":"int32","description":"Длительность в миллисекундах. Обязательна для голосового сообщения (`file_type` — `voice`).","example":5400},"waveform":{"type":"string","description":"Форма волны для визуализации. Обязательна для голосового сообщения (`file_type` — `voice`).","example":"4,8,12,20,16,10,6,3","maxLength":256}},"$ref":"#/components/schemas/DraftFileRequest"}},"schedule":{"type":"object","description":"Расписание отправки. С ним создаётся отложенное сообщение, без него — обычный черновик.","nullable":true,"allOf":[{"type":"object","description":"Расписание отправки в запросе","required":["start_date","repetition"],"properties":{"start_date":{"type":"string","format":"date-time","description":"Первая отправка (ISO-8601). Из неё берутся время суток, число месяца и день недели, по которым дальше строится повтор. Смещение вида `+03:00` учитывается, время без смещения считается UTC.","example":"2026-09-17T12:00:00.000Z"},"end_date":{"type":"string","format":"date-time","description":"Дата, после которой повтор прекращается (ISO-8601). Без неё повтор идёт бессрочно.","example":"2026-12-31T12:00:00.000Z","nullable":true},"repetition":{"description":"Правило повтора","allOf":[{"type":"object","description":"Правило повтора в запросе","required":["interval"],"properties":{"interval":{"description":"Периодичность","example":"weekly","allOf":[{"type":"string","description":"Периодичность повтора отложенного сообщения","enum":["once","daily","weekly","monthly","every_2_months","every_3_months","every_4_months","every_6_months","yearly"],"x-enum-descriptions":{"once":"Один раз","daily":"Каждый день","weekly":"Каждую неделю","monthly":"Каждый месяц","every_2_months":"Раз в два месяца","every_3_months":"Раз в три месяца","every_4_months":"Раз в четыре месяца","every_6_months":"Раз в полгода","yearly":"Раз в год"},"$ref":"#/components/schemas/DraftRepetitionInterval"}]},"days":{"type":"array","description":"Дни недели, по которым уходит сообщение: 0 — воскресенье, 6 — суббота. Учитывается только при периодичности `weekly`, а если не передать, берётся день недели из `start_date`.","example":[1,3],"maxItems":7,"items":{"type":"integer","format":"int32"}},"nth_day":{"type":"integer","format":"int32","description":"Какой по счёту день недели в месяце: от 1 до 4 — первый, второй, третий, четвёртый, 5 — последний. Учитывается только при периодичности по месяцам, а без него повтор идёт по числу месяца из `start_date`.","example":2,"nullable":true,"minimum":1,"maximum":5}},"$ref":"#/components/schemas/DraftRepetitionRequest"}]}},"$ref":"#/components/schemas/DraftScheduleRequest"}]}}}},"$ref":"#/components/schemas/DraftCreateRequest"}}}},"responses":{"201":{"description":"The request has succeeded and a new resource has been created as a result.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Черновик или отложенное сообщение","required":["id","entity_type","entity_id","chat_id","content","parent_message_id","files","voice_content","schedule","next_send_at","created_at","updated_at"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор черновика","example":4821},"entity_type":{"description":"Куда уйдёт сообщение: в беседу или канал, в тред либо в личную переписку с сотрудником","example":"discussion","nullable":true,"allOf":[{"type":"string","description":"Тип сущности для сообщений","enum":["discussion","thread","user"],"x-enum-descriptions":{"discussion":"Беседа или канал","thread":"Тред","user":"Пользователь"},"$ref":"#/components/schemas/MessageEntityType"}]},"entity_id":{"type":"integer","format":"int32","description":"Идентификатор того, что названо в `entity_type`: беседы или канала, треда либо сотрудника","example":334,"nullable":true},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором лежит черновик. У черновика треда это чат самого треда.","example":334,"nullable":true},"content":{"type":"string","description":"Текст черновика. У черновика из одних вложений приходит пустая строка, а не `null`.","example":"Отчёт за неделю: продажи выросли на 10%"},"parent_message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, ответом на которое уйдёт черновик. `null`, если это не ответ.","example":196093,"nullable":true},"files":{"type":"array","description":"Прикреплённые файлы","items":{"type":"object","description":"Файл","required":["id","key","name","file_type","url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор файла","example":3560},"key":{"type":"string","description":"Путь к файлу","example":"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png"},"name":{"type":"string","description":"Название файла с расширением","example":"congrat.png"},"file_type":{"description":"Тип файла","example":"image","allOf":[{"type":"string","description":"Тип файла","enum":["file","image","audio","voice","video"],"x-enum-descriptions":{"file":"Обычный файл","image":"Изображение","audio":"Аудиофайл","voice":"Голосовое сообщение","video":"Видеофайл"},"$ref":"#/components/schemas/FileType"}]},"url":{"type":"string","description":"Ссылка на скачивание файла. Обычно ведёт прямо в хранилище и действует до 7 дней, а оставшийся срок может быть меньше — если такая ссылка вернула `403`, запросите сообщение заново и получите свежую. Если в пространстве включено шифрование или задан безопасный контур, ссылка ведёт на [Скачивание файла](GET /files/{id}): забирать такой файл нужно с заголовком `Authorization`, а токену нужен скоуп `files:read`.","example":"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8"},"width":{"type":"integer","format":"int32","description":"Ширина изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке.","example":1920,"nullable":true},"height":{"type":"integer","format":"int32","description":"Высота изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке.","example":1080,"nullable":true},"duration_ms":{"type":"integer","format":"int32","description":"Длительность в миллисекундах у голосового, аудио- и видеофайла. `null` у остальных файлов и если длительность не была передана при загрузке.","example":5400,"nullable":true}},"$ref":"#/components/schemas/File"}},"voice_content":{"type":"object","description":"Голосовое сообщение. `null`, если голосового вложения нет. Расшифровка в `transcript` у черновика всегда `null` — она запускается после отправки.","nullable":true,"allOf":[{"type":"object","description":"Данные голосового сообщения","required":["duration_ms","waveform","transcript"],"properties":{"duration_ms":{"type":"integer","format":"int32","description":"Длительность голосового сообщения в миллисекундах","example":5400},"waveform":{"type":"string","description":"Форма волны (амплитуды) для визуализации голосового сообщения","example":"4,8,12,20,16,10,6,3"},"transcript":{"type":"string","description":"Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна.","example":"Привет, посмотри пожалуйста последний отчёт","nullable":true}},"$ref":"#/components/schemas/VoiceContent"}]},"schedule":{"type":"object","description":"Расписание отправки. `null` у обычного черновика.","nullable":true,"allOf":[{"type":"object","description":"Расписание отправки отложенного сообщения","required":["start_date","end_date","repetition"],"properties":{"start_date":{"type":"string","format":"date-time","description":"Первая отправка (ISO-8601). Из неё берутся время суток, число месяца и день недели, по которым дальше строится повтор.","example":"2026-09-17T12:00:00.000Z"},"end_date":{"type":"string","format":"date-time","description":"Дата, после которой повтор прекращается (ISO-8601). `null`, если конец не задан.","example":"2026-12-31T12:00:00.000Z","nullable":true},"repetition":{"description":"Правило повтора","allOf":[{"type":"object","description":"Правило повтора отложенного сообщения","required":["interval"],"properties":{"interval":{"description":"Периодичность","example":"weekly","allOf":[{"type":"string","description":"Периодичность повтора отложенного сообщения","enum":["once","daily","weekly","monthly","every_2_months","every_3_months","every_4_months","every_6_months","yearly"],"x-enum-descriptions":{"once":"Один раз","daily":"Каждый день","weekly":"Каждую неделю","monthly":"Каждый месяц","every_2_months":"Раз в два месяца","every_3_months":"Раз в три месяца","every_4_months":"Раз в четыре месяца","every_6_months":"Раз в полгода","yearly":"Раз в год"},"$ref":"#/components/schemas/DraftRepetitionInterval"}]},"days":{"type":"array","description":"Дни недели, по которым уходит сообщение: 0 — воскресенье, 6 — суббота. Приходит только при периодичности `weekly`.","example":[1,3],"items":{"type":"integer","format":"int32"}},"nth_day":{"type":"integer","format":"int32","description":"Какой по счёту день недели в месяце: от 1 до 4 — первый, второй, третий, четвёртый, 5 — последний. Приходит только при периодичности по месяцам, а `null` в ней означает повтор по числу месяца из `start_date`.","example":2,"nullable":true}},"$ref":"#/components/schemas/DraftRepetition"}]}},"$ref":"#/components/schemas/DraftSchedule"}]},"next_send_at":{"type":"string","format":"date-time","description":"Ближайшая отправка (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null` у обычного черновика.","example":"2026-09-17T12:00:00.000Z","nullable":true},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2026-09-16T10:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","description":"Дата и время последнего изменения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2026-09-16T10:00:00.000Z"}},"$ref":"#/components/schemas/Draft"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"},{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}]}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"drafts:write","scopeRoles":["owner","admin","user"]},"paginated":false},"docs":"# Новый черновик\n\n**Метод**: `POST`\n\n**Путь**: `/drafts`\n\n> **Скоуп:** `drafts:write`\n\nКладёт черновик в беседу, тред или личную переписку. В интерфейсе Пачки он появляется в поле ввода этого чата, где сотрудник его допишет и отправит. Этим же методом создаётся отложенное сообщение: с полем `schedule` черновик уходит сам в назначенное время, без него просто лежит. Сам метод ничего не отправляет, для отправки есть [Новое сообщение](POST /messages).\n\nЧерновик виден только своему автору — его не видит ни собеседник, ни администратор пространства. Обычный черновик в чате может быть только один. Повторный вызов отвечает `409` с кодом `already_exists` и номером существующего в `payload.draft_id`. Дописывают его методом [Редактирование черновика](PUT /drafts/{id}). Отложенных сообщений на один чат — не больше 50.\n\nДля треда в `entity_id` передают идентификатор самого треда, а не сообщения, под которым он висит. Личной переписки с сотрудником может ещё не быть — тогда она заводится сама, как при обычной отправке сообщения.\n\nПустой черновик создать нельзя: нужен либо текст, либо вложения.\n\nТокенам ботов метод недоступен.\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `draft: object` (required) — Собранный объект параметров черновика\n - `entity_type: string` (required) — Куда пишется черновик: в беседу или канал, в тред либо в личную переписку с сотрудником\n Значения: `discussion` — Беседа или канал, `thread` — Тред, `user` — Пользователь\n - `entity_id: integer, int32` (required) — Идентификатор того, что названо в `entity_type`: беседы или канала, треда либо сотрудника. Пример: `334`\n - `content: string` — Текст черновика. Можно не передавать, если есть вложения, но пустым черновик быть не может. Пример: `\"Отчёт за неделю: продажи выросли на 10%\"`\n - `parent_message_id: integer, int32` (nullable) — Идентификатор сообщения, ответом на которое уйдёт черновик. Сообщение должно быть в том же чате. Пример: `196093`\n - `files: array of object` (max items: 10) — Прикрепляемые файлы, не больше десяти\n - `id: integer, int32` — Идентификатор уже прикреплённого файла. Передаётся при редактировании, чтобы сохранить вложение как есть. У нового файла не указывается. Пример: `3560`\n - `key: string` (required, max length: 1000) — Путь к файлу, полученный в методе [Загрузка файла](POST /direct_url). Пример: `\"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png\"`\n - `name: string` (required, max length: 255) — Название файла, которое вы хотите отображать пользователю. Пример: `\"logo.png\"`\n - `file_type: string` — Тип файла\n Значения: `file` — Обычный файл, `image` — Изображение, `audio` — Аудиофайл, `voice` — Голосовое сообщение, `video` — Видеофайл\n - `size: integer, int64` — Размер файла в байтах, отображаемый пользователю. Пример: `12345`\n - `width: integer, int32` — Ширина изображения в пикселях. Пример: `800`\n - `height: integer, int32` — Высота изображения в пикселях. Пример: `600`\n - `duration_ms: integer, int32` — Длительность в миллисекундах. Обязательна для голосового сообщения (`file_type` — `voice`). Пример: `5400`\n - `waveform: string` (max length: 256) — Форма волны для визуализации. Обязательна для голосового сообщения (`file_type` — `voice`). Пример: `\"4,8,12,20,16,10,6,3\"`\n - `schedule: object` — Расписание отправки. С ним создаётся отложенное сообщение, без него — обычный черновик.\n - `start_date: date-time` (required) — Первая отправка (ISO-8601). Из неё берутся время суток, число месяца и день недели, по которым дальше строится повтор. Смещение вида `+03:00` учитывается, время без смещения считается UTC. Пример: `\"2026-09-17T12:00:00.000Z\"`\n - `end_date: date-time` (nullable) — Дата, после которой повтор прекращается (ISO-8601). Без неё повтор идёт бессрочно. Пример: `\"2026-12-31T12:00:00.000Z\"`\n - `repetition: object` (required) — Правило повтора\n - `interval: string` (required) — Периодичность\n Значения: `once` — Один раз, `daily` — Каждый день, `weekly` — Каждую неделю, `monthly` — Каждый месяц, `every_2_months` — Раз в два месяца, `every_3_months` — Раз в три месяца, `every_4_months` — Раз в четыре месяца, `every_6_months` — Раз в полгода, `yearly` — Раз в год\n - `days: array of integer` (max items: 7) — Дни недели, по которым уходит сообщение: 0 — воскресенье, 6 — суббота. Учитывается только при периодичности `weekly`, а если не передать, берётся день недели из `start_date`. Пример: `[1,3]`\n - `nth_day: integer, int32` (nullable, min: 1, max: 5) — Какой по счёту день недели в месяце: от 1 до 4 — первый, второй, третий, четвёртый, 5 — последний. Учитывается только при периодичности по месяцам, а без него повтор идёт по числу месяца из `start_date`. Пример: `2`\n\n### Пример\n\n```json\n{\n \"draft\": {\n \"entity_type\": \"discussion\",\n \"entity_id\": 334,\n \"content\": \"Отчёт за неделю: продажи выросли на 10%\",\n \"parent_message_id\": 196093,\n \"files\": [\n {\n \"id\": 3560,\n \"key\": \"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png\",\n \"name\": \"logo.png\",\n \"file_type\": \"image\",\n \"size\": 12345,\n \"width\": 800,\n \"height\": 600,\n \"duration_ms\": 5400,\n \"waveform\": \"4,8,12,20,16,10,6,3\"\n }\n ],\n \"schedule\": {\n \"start_date\": \"2026-09-17T12:00:00.000Z\",\n \"end_date\": \"2026-12-31T12:00:00.000Z\",\n \"repetition\": {\n \"interval\": \"weekly\",\n \"days\": [\n 1,\n 3\n ],\n \"nth_day\": 2\n }\n }\n }\n}\n```\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/drafts\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"draft\": {\n \"entity_type\": \"discussion\",\n \"entity_id\": 334,\n \"content\": \"Отчёт за неделю: продажи выросли на 10%\",\n \"parent_message_id\": 196093,\n \"files\": [\n {\n \"id\": 3560,\n \"key\": \"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png\",\n \"name\": \"logo.png\",\n \"file_type\": \"image\",\n \"size\": 12345,\n \"width\": 800,\n \"height\": 600,\n \"duration_ms\": 5400,\n \"waveform\": \"4,8,12,20,16,10,6,3\"\n }\n ],\n \"schedule\": {\n \"start_date\": \"2026-09-17T12:00:00.000Z\",\n \"end_date\": \"2026-12-31T12:00:00.000Z\",\n \"repetition\": {\n \"interval\": \"weekly\",\n \"days\": [\n 1,\n 3\n ],\n \"nth_day\": 2\n }\n }\n }\n}'\n```\n\n## Ответы\n\n### 201: The request has succeeded and a new resource has been created as a result.\n\n**Схема ответа:**\n\n- `data: object` (required) — Черновик или отложенное сообщение\n - `id: integer, int32` (required) — Идентификатор черновика. Пример: `4821`\n - `entity_type: string` (required) — Куда уйдёт сообщение: в беседу или канал, в тред либо в личную переписку с сотрудником\n Значения: `discussion` — Беседа или канал, `thread` — Тред, `user` — Пользователь\n - `entity_id: integer, int32` (required, nullable) — Идентификатор того, что названо в `entity_type`: беседы или канала, треда либо сотрудника. Пример: `334`\n - `chat_id: integer, int32` (required, nullable) — Идентификатор чата, в котором лежит черновик. У черновика треда это чат самого треда. Пример: `334`\n - `content: string` (required) — Текст черновика. У черновика из одних вложений приходит пустая строка, а не `null`. Пример: `\"Отчёт за неделю: продажи выросли на 10%\"`\n - `parent_message_id: integer, int32` (required, nullable) — Идентификатор сообщения, ответом на которое уйдёт черновик. `null`, если это не ответ. Пример: `196093`\n - `files: array of object` (required) — Прикреплённые файлы\n - `id: integer, int32` (required) — Идентификатор файла. Пример: `3560`\n - `key: string` (required) — Путь к файлу. Пример: `\"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png\"`\n - `name: string` (required) — Название файла с расширением. Пример: `\"congrat.png\"`\n - `file_type: string` (required) — Тип файла\n Значения: `file` — Обычный файл, `image` — Изображение, `audio` — Аудиофайл, `voice` — Голосовое сообщение, `video` — Видеофайл\n - `url: string` (required) — Ссылка на скачивание файла. Обычно ведёт прямо в хранилище и действует до 7 дней, а оставшийся срок может быть меньше — если такая ссылка вернула `403`, запросите сообщение заново и получите свежую. Если в пространстве включено шифрование или задан безопасный контур, ссылка ведёт на [Скачивание файла](GET /files/{id}): забирать такой файл нужно с заголовком `Authorization`, а токену нужен скоуп `files:read`. Пример: `\"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8\"`\n - `width: integer, int32` (nullable) — Ширина изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке. Пример: `1920`\n - `height: integer, int32` (nullable) — Высота изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке. Пример: `1080`\n - `duration_ms: integer, int32` (nullable) — Длительность в миллисекундах у голосового, аудио- и видеофайла. `null` у остальных файлов и если длительность не была передана при загрузке. Пример: `5400`\n - `voice_content: object` (required) — Голосовое сообщение. `null`, если голосового вложения нет. Расшифровка в `transcript` у черновика всегда `null` — она запускается после отправки.\n - `duration_ms: integer, int32` (required) — Длительность голосового сообщения в миллисекундах. Пример: `5400`\n - `waveform: string` (required) — Форма волны (амплитуды) для визуализации голосового сообщения. Пример: `\"4,8,12,20,16,10,6,3\"`\n - `transcript: string` (required, nullable) — Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна. Пример: `\"Привет, посмотри пожалуйста последний отчёт\"`\n - `schedule: object` (required) — Расписание отправки. `null` у обычного черновика.\n - `start_date: date-time` (required) — Первая отправка (ISO-8601). Из неё берутся время суток, число месяца и день недели, по которым дальше строится повтор. Пример: `\"2026-09-17T12:00:00.000Z\"`\n - `end_date: date-time` (required, nullable) — Дата, после которой повтор прекращается (ISO-8601). `null`, если конец не задан. Пример: `\"2026-12-31T12:00:00.000Z\"`\n - `repetition: object` (required) — Правило повтора\n - `interval: string` (required) — Периодичность\n Значения: `once` — Один раз, `daily` — Каждый день, `weekly` — Каждую неделю, `monthly` — Каждый месяц, `every_2_months` — Раз в два месяца, `every_3_months` — Раз в три месяца, `every_4_months` — Раз в четыре месяца, `every_6_months` — Раз в полгода, `yearly` — Раз в год\n - `days: array of integer` — Дни недели, по которым уходит сообщение: 0 — воскресенье, 6 — суббота. Приходит только при периодичности `weekly`. Пример: `[1,3]`\n - `nth_day: integer, int32` (nullable) — Какой по счёту день недели в месяце: от 1 до 4 — первый, второй, третий, четвёртый, 5 — последний. Приходит только при периодичности по месяцам, а `null` в ней означает повтор по числу месяца из `start_date`. Пример: `2`\n - `next_send_at: date-time` (required, nullable) — Ближайшая отправка (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null` у обычного черновика. Пример: `\"2026-09-17T12:00:00.000Z\"`\n - `created_at: date-time` (required) — Дата и время создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2026-09-16T10:00:00.000Z\"`\n - `updated_at: date-time` (required) — Дата и время последнего изменения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2026-09-16T10:00:00.000Z\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 4821,\n \"entity_type\": \"discussion\",\n \"entity_id\": 334,\n \"chat_id\": 334,\n \"content\": \"Отчёт за неделю: продажи выросли на 10%\",\n \"parent_message_id\": 196093,\n \"files\": [\n {\n \"id\": 3560,\n \"key\": \"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png\",\n \"name\": \"congrat.png\",\n \"file_type\": \"image\",\n \"url\": \"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8\",\n \"width\": 1920,\n \"height\": 1080,\n \"duration_ms\": 5400\n }\n ],\n \"voice_content\": {\n \"duration_ms\": 5400,\n \"waveform\": \"4,8,12,20,16,10,6,3\",\n \"transcript\": \"Привет, посмотри пожалуйста последний отчёт\"\n },\n \"schedule\": {\n \"start_date\": \"2026-09-17T12:00:00.000Z\",\n \"end_date\": \"2026-12-31T12:00:00.000Z\",\n \"repetition\": {\n \"interval\": \"weekly\",\n \"days\": [\n 1,\n 3\n ],\n \"nth_day\": 2\n }\n },\n \"next_send_at\": \"2026-09-17T12:00:00.000Z\",\n \"created_at\": \"2026-09-16T10:00:00.000Z\",\n \"updated_at\": \"2026-09-16T10:00:00.000Z\"\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n**anyOf** - один из вариантов:\n\n- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)\n - `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403)\n - `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n - `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 409: The request conflicts with the current state of the server.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/drafts","summary":"Список черновиков","scope":"drafts:read","plan":null,"auth":true,"paginated":true,"command":"pachca drafts list","docLink":"https://dev.pachca.com/api/drafts/list","describe":"# GET /drafts — Список черновиков\n\n> **Скоуп:** `drafts:read`\n\n> Пагинация: добавьте `--all` для автоматического обхода страниц\n\n## Параметры\n\n- `type` — query: Что возвращать: `regular` — обычные черновики, `scheduled` — отложенные сообщения, `all` — и те и другие\n- `entity_type` — query: Тип чата для фильтра по одному чату. Указывается вместе с `entity_id`: если прислать только один из двух, ответ будет `422`.\n- `entity_id` — query: Идентификатор того, что названо в `entity_type`. Указывается вместе с ним.\n- `limit` — query: Количество возвращаемых сущностей за один запрос\n- `cursor` — query: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n## Эквивалентная команда\n\n```bash\n# Добавьте --all для автоматической пагинации\npachca drafts list \\\n --type=all \\\n --entity-type=discussion \\\n --entity-id=334 \\\n --limit=25 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/drafts/list\nПолная справка: `pachca api GET /drafts --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/drafts","description":"Список черновиков\n\nСвои черновики, от новых к старым.\n\nПо умолчанию возвращаются только обычные черновики: отложенные нужно запросить параметром `type`. Отличить их в ответе можно по полю `schedule`.\n\nПара `entity_type` и `entity_id` сужает выдачу до одного чата, треда или личной переписки. Если такого чата нет или он недоступен, метод отвечает пустым списком, а не ошибкой.","parameters":[{"name":"type","in":"query","description":"Что возвращать: `regular` — обычные черновики, `scheduled` — отложенные сообщения, `all` — и те и другие","required":false,"schema":{"default":"regular","allOf":[{"type":"string","description":"Что возвращать в списке черновиков","enum":["regular","scheduled","all"],"x-enum-descriptions":{"regular":"Обычные черновики","scheduled":"Отложенные сообщения","all":"И черновики, и отложенные сообщения"},"$ref":"#/components/schemas/DraftType"}]},"example":"all","explode":false},{"name":"entity_type","in":"query","description":"Тип чата для фильтра по одному чату. Указывается вместе с `entity_id`: если прислать только один из двух, ответ будет `422`.","required":false,"schema":{"type":"string","description":"Тип сущности для сообщений","enum":["discussion","thread","user"],"x-enum-descriptions":{"discussion":"Беседа или канал","thread":"Тред","user":"Пользователь"},"example":"discussion","$ref":"#/components/schemas/MessageEntityType"},"example":"discussion","explode":false},{"name":"entity_id","in":"query","description":"Идентификатор того, что названо в `entity_type`. Указывается вместе с ним.","required":false,"schema":{"type":"integer","format":"int32","example":334},"example":334,"explode":false},{"name":"limit","in":"query","description":"Количество возвращаемых сущностей за один запрос","required":false,"schema":{"type":"integer","format":"int32","default":50,"example":25,"minimum":1,"maximum":50},"example":25,"explode":false},{"name":"cursor","in":"query","description":"Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)","required":false,"schema":{"type":"string","example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9"},"example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9","explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными и пагинацией","required":["data","meta"],"properties":{"data":{"type":"array","items":{"type":"object","description":"Черновик или отложенное сообщение","required":["id","entity_type","entity_id","chat_id","content","parent_message_id","files","voice_content","schedule","next_send_at","created_at","updated_at"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор черновика","example":4821},"entity_type":{"description":"Куда уйдёт сообщение: в беседу или канал, в тред либо в личную переписку с сотрудником","example":"discussion","nullable":true,"allOf":[{"type":"string","description":"Тип сущности для сообщений","enum":["discussion","thread","user"],"x-enum-descriptions":{"discussion":"Беседа или канал","thread":"Тред","user":"Пользователь"},"$ref":"#/components/schemas/MessageEntityType"}]},"entity_id":{"type":"integer","format":"int32","description":"Идентификатор того, что названо в `entity_type`: беседы или канала, треда либо сотрудника","example":334,"nullable":true},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором лежит черновик. У черновика треда это чат самого треда.","example":334,"nullable":true},"content":{"type":"string","description":"Текст черновика. У черновика из одних вложений приходит пустая строка, а не `null`.","example":"Отчёт за неделю: продажи выросли на 10%"},"parent_message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, ответом на которое уйдёт черновик. `null`, если это не ответ.","example":196093,"nullable":true},"files":{"type":"array","description":"Прикреплённые файлы","items":{"type":"object","description":"Файл","required":["id","key","name","file_type","url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор файла","example":3560},"key":{"type":"string","description":"Путь к файлу","example":"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png"},"name":{"type":"string","description":"Название файла с расширением","example":"congrat.png"},"file_type":{"description":"Тип файла","example":"image","allOf":[{"type":"string","description":"Тип файла","enum":["file","image","audio","voice","video"],"x-enum-descriptions":{"file":"Обычный файл","image":"Изображение","audio":"Аудиофайл","voice":"Голосовое сообщение","video":"Видеофайл"},"$ref":"#/components/schemas/FileType"}]},"url":{"type":"string","description":"Ссылка на скачивание файла. Обычно ведёт прямо в хранилище и действует до 7 дней, а оставшийся срок может быть меньше — если такая ссылка вернула `403`, запросите сообщение заново и получите свежую. Если в пространстве включено шифрование или задан безопасный контур, ссылка ведёт на [Скачивание файла](GET /files/{id}): забирать такой файл нужно с заголовком `Authorization`, а токену нужен скоуп `files:read`.","example":"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8"},"width":{"type":"integer","format":"int32","description":"Ширина изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке.","example":1920,"nullable":true},"height":{"type":"integer","format":"int32","description":"Высота изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке.","example":1080,"nullable":true},"duration_ms":{"type":"integer","format":"int32","description":"Длительность в миллисекундах у голосового, аудио- и видеофайла. `null` у остальных файлов и если длительность не была передана при загрузке.","example":5400,"nullable":true}},"$ref":"#/components/schemas/File"}},"voice_content":{"type":"object","description":"Голосовое сообщение. `null`, если голосового вложения нет. Расшифровка в `transcript` у черновика всегда `null` — она запускается после отправки.","nullable":true,"allOf":[{"type":"object","description":"Данные голосового сообщения","required":["duration_ms","waveform","transcript"],"properties":{"duration_ms":{"type":"integer","format":"int32","description":"Длительность голосового сообщения в миллисекундах","example":5400},"waveform":{"type":"string","description":"Форма волны (амплитуды) для визуализации голосового сообщения","example":"4,8,12,20,16,10,6,3"},"transcript":{"type":"string","description":"Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна.","example":"Привет, посмотри пожалуйста последний отчёт","nullable":true}},"$ref":"#/components/schemas/VoiceContent"}]},"schedule":{"type":"object","description":"Расписание отправки. `null` у обычного черновика.","nullable":true,"allOf":[{"type":"object","description":"Расписание отправки отложенного сообщения","required":["start_date","end_date","repetition"],"properties":{"start_date":{"type":"string","format":"date-time","description":"Первая отправка (ISO-8601). Из неё берутся время суток, число месяца и день недели, по которым дальше строится повтор.","example":"2026-09-17T12:00:00.000Z"},"end_date":{"type":"string","format":"date-time","description":"Дата, после которой повтор прекращается (ISO-8601). `null`, если конец не задан.","example":"2026-12-31T12:00:00.000Z","nullable":true},"repetition":{"description":"Правило повтора","allOf":[{"type":"object","description":"Правило повтора отложенного сообщения","required":["interval"],"properties":{"interval":{"description":"Периодичность","example":"weekly","allOf":[{"type":"string","description":"Периодичность повтора отложенного сообщения","enum":["once","daily","weekly","monthly","every_2_months","every_3_months","every_4_months","every_6_months","yearly"],"x-enum-descriptions":{"once":"Один раз","daily":"Каждый день","weekly":"Каждую неделю","monthly":"Каждый месяц","every_2_months":"Раз в два месяца","every_3_months":"Раз в три месяца","every_4_months":"Раз в четыре месяца","every_6_months":"Раз в полгода","yearly":"Раз в год"},"$ref":"#/components/schemas/DraftRepetitionInterval"}]},"days":{"type":"array","description":"Дни недели, по которым уходит сообщение: 0 — воскресенье, 6 — суббота. Приходит только при периодичности `weekly`.","example":[1,3],"items":{"type":"integer","format":"int32"}},"nth_day":{"type":"integer","format":"int32","description":"Какой по счёту день недели в месяце: от 1 до 4 — первый, второй, третий, четвёртый, 5 — последний. Приходит только при периодичности по месяцам, а `null` в ней означает повтор по числу месяца из `start_date`.","example":2,"nullable":true}},"$ref":"#/components/schemas/DraftRepetition"}]}},"$ref":"#/components/schemas/DraftSchedule"}]},"next_send_at":{"type":"string","format":"date-time","description":"Ближайшая отправка (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null` у обычного черновика.","example":"2026-09-17T12:00:00.000Z","nullable":true},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2026-09-16T10:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","description":"Дата и время последнего изменения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2026-09-16T10:00:00.000Z"}},"$ref":"#/components/schemas/Draft"}},"meta":{"type":"object","description":"Метаданные пагинации","required":["paginate"],"properties":{"paginate":{"type":"object","description":"Вспомогательная информация","required":["next_page"],"properties":{"next_page":{"type":"string","description":"Курсор пагинации следующей страницы","example":"eyJxZCO2MiwiZGlyIjomSNYjIn3"},"prev_page":{"type":"string","description":"Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка.","example":"eyJxZCO2MiwiZGlyIjoiYXNjIn0"},"has_next":{"type":"boolean","description":"Есть ли ещё данные на следующей странице. На последней странице — `false`.","example":true},"has_prev":{"type":"boolean","description":"Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`.","example":false}}}},"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"},{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}]}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"drafts:read","scopeRoles":["owner","admin","user"]},"paginated":true},"docs":"# Список черновиков\n\n**Метод**: `GET`\n\n**Путь**: `/drafts`\n\n> **Скоуп:** `drafts:read`\n\nСвои черновики, от новых к старым.\n\nПо умолчанию возвращаются только обычные черновики: отложенные нужно запросить параметром `type`. Отличить их в ответе можно по полю `schedule`.\n\nПара `entity_type` и `entity_id` сужает выдачу до одного чата, треда или личной переписки. Если такого чата нет или он недоступен, метод отвечает пустым списком, а не ошибкой.\n\n## Параметры\n\n### Query параметры\n\n- `type: string` (default: regular) — Что возвращать: `regular` — обычные черновики, `scheduled` — отложенные сообщения, `all` — и те и другие\n- `entity_type: string` — Тип чата для фильтра по одному чату. Указывается вместе с `entity_id`: если прислать только один из двух, ответ будет `422`.\n Значения: `discussion`, `thread`, `user`\n- `entity_id: integer, int32` — Идентификатор того, что названо в `entity_type`. Указывается вместе с ним.\n- `limit: integer, int32` (default: 50) — Количество возвращаемых сущностей за один запрос\n- `cursor: string` — Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n\n## Пример запроса\n\n```bash\n# Для получения следующей страницы используйте cursor из meta.paginate.next_page\ncurl \"https://api.pachca.com/api/shared/v1/drafts?type=all&entity_type=discussion&entity_id=334&limit=25\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: array of object` (required)\n - `id: integer, int32` (required) — Идентификатор черновика. Пример: `4821`\n - `entity_type: string` (required) — Куда уйдёт сообщение: в беседу или канал, в тред либо в личную переписку с сотрудником\n Значения: `discussion` — Беседа или канал, `thread` — Тред, `user` — Пользователь\n - `entity_id: integer, int32` (required, nullable) — Идентификатор того, что названо в `entity_type`: беседы или канала, треда либо сотрудника. Пример: `334`\n - `chat_id: integer, int32` (required, nullable) — Идентификатор чата, в котором лежит черновик. У черновика треда это чат самого треда. Пример: `334`\n - `content: string` (required) — Текст черновика. У черновика из одних вложений приходит пустая строка, а не `null`. Пример: `\"Отчёт за неделю: продажи выросли на 10%\"`\n - `parent_message_id: integer, int32` (required, nullable) — Идентификатор сообщения, ответом на которое уйдёт черновик. `null`, если это не ответ. Пример: `196093`\n - `files: array of object` (required) — Прикреплённые файлы\n - `id: integer, int32` (required) — Идентификатор файла. Пример: `3560`\n - `key: string` (required) — Путь к файлу. Пример: `\"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png\"`\n - `name: string` (required) — Название файла с расширением. Пример: `\"congrat.png\"`\n - `file_type: string` (required) — Тип файла\n Значения: `file` — Обычный файл, `image` — Изображение, `audio` — Аудиофайл, `voice` — Голосовое сообщение, `video` — Видеофайл\n - `url: string` (required) — Ссылка на скачивание файла. Обычно ведёт прямо в хранилище и действует до 7 дней, а оставшийся срок может быть меньше — если такая ссылка вернула `403`, запросите сообщение заново и получите свежую. Если в пространстве включено шифрование или задан безопасный контур, ссылка ведёт на [Скачивание файла](GET /files/{id}): забирать такой файл нужно с заголовком `Authorization`, а токену нужен скоуп `files:read`. Пример: `\"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8\"`\n - `width: integer, int32` (nullable) — Ширина изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке. Пример: `1920`\n - `height: integer, int32` (nullable) — Высота изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке. Пример: `1080`\n - `duration_ms: integer, int32` (nullable) — Длительность в миллисекундах у голосового, аудио- и видеофайла. `null` у остальных файлов и если длительность не была передана при загрузке. Пример: `5400`\n - `voice_content: object` (required) — Голосовое сообщение. `null`, если голосового вложения нет. Расшифровка в `transcript` у черновика всегда `null` — она запускается после отправки.\n - `duration_ms: integer, int32` (required) — Длительность голосового сообщения в миллисекундах. Пример: `5400`\n - `waveform: string` (required) — Форма волны (амплитуды) для визуализации голосового сообщения. Пример: `\"4,8,12,20,16,10,6,3\"`\n - `transcript: string` (required, nullable) — Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна. Пример: `\"Привет, посмотри пожалуйста последний отчёт\"`\n - `schedule: object` (required) — Расписание отправки. `null` у обычного черновика.\n - `start_date: date-time` (required) — Первая отправка (ISO-8601). Из неё берутся время суток, число месяца и день недели, по которым дальше строится повтор. Пример: `\"2026-09-17T12:00:00.000Z\"`\n - `end_date: date-time` (required, nullable) — Дата, после которой повтор прекращается (ISO-8601). `null`, если конец не задан. Пример: `\"2026-12-31T12:00:00.000Z\"`\n - `repetition: object` (required) — Правило повтора\n - `interval: string` (required) — Периодичность\n Значения: `once` — Один раз, `daily` — Каждый день, `weekly` — Каждую неделю, `monthly` — Каждый месяц, `every_2_months` — Раз в два месяца, `every_3_months` — Раз в три месяца, `every_4_months` — Раз в четыре месяца, `every_6_months` — Раз в полгода, `yearly` — Раз в год\n - `days: array of integer` — Дни недели, по которым уходит сообщение: 0 — воскресенье, 6 — суббота. Приходит только при периодичности `weekly`. Пример: `[1,3]`\n - `nth_day: integer, int32` (nullable) — Какой по счёту день недели в месяце: от 1 до 4 — первый, второй, третий, четвёртый, 5 — последний. Приходит только при периодичности по месяцам, а `null` в ней означает повтор по числу месяца из `start_date`. Пример: `2`\n - `next_send_at: date-time` (required, nullable) — Ближайшая отправка (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null` у обычного черновика. Пример: `\"2026-09-17T12:00:00.000Z\"`\n - `created_at: date-time` (required) — Дата и время создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2026-09-16T10:00:00.000Z\"`\n - `updated_at: date-time` (required) — Дата и время последнего изменения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2026-09-16T10:00:00.000Z\"`\n- `meta: object` (required) — Метаданные пагинации\n - `paginate: object` (required) — Вспомогательная информация\n - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `\"eyJxZCO2MiwiZGlyIjomSNYjIn3\"`\n - `prev_page: string` — Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка. Пример: `\"eyJxZCO2MiwiZGlyIjoiYXNjIn0\"`\n - `has_next: boolean` — Есть ли ещё данные на следующей странице. На последней странице — `false`. Пример: `true`\n - `has_prev: boolean` — Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`. Пример: `false`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": [\n {\n \"id\": 4821,\n \"entity_type\": \"discussion\",\n \"entity_id\": 334,\n \"chat_id\": 334,\n \"content\": \"Отчёт за неделю: продажи выросли на 10%\",\n \"parent_message_id\": 196093,\n \"files\": [\n {\n \"id\": 3560,\n \"key\": \"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png\",\n \"name\": \"congrat.png\",\n \"file_type\": \"image\",\n \"url\": \"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8\",\n \"width\": 1920,\n \"height\": 1080,\n \"duration_ms\": 5400\n }\n ],\n \"voice_content\": {\n \"duration_ms\": 5400,\n \"waveform\": \"4,8,12,20,16,10,6,3\",\n \"transcript\": \"Привет, посмотри пожалуйста последний отчёт\"\n },\n \"schedule\": {\n \"start_date\": \"2026-09-17T12:00:00.000Z\",\n \"end_date\": \"2026-12-31T12:00:00.000Z\",\n \"repetition\": {\n \"interval\": \"weekly\",\n \"days\": [\n 1,\n 3\n ],\n \"nth_day\": 2\n }\n },\n \"next_send_at\": \"2026-09-17T12:00:00.000Z\",\n \"created_at\": \"2026-09-16T10:00:00.000Z\",\n \"updated_at\": \"2026-09-16T10:00:00.000Z\"\n }\n ],\n \"meta\": {\n \"paginate\": {\n \"next_page\": \"eyJxZCO2MiwiZGlyIjomSNYjIn3\",\n \"prev_page\": \"eyJxZCO2MiwiZGlyIjoiYXNjIn0\",\n \"has_next\": true,\n \"has_prev\": false\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n**anyOf** - один из вариантов:\n\n- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)\n - `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403)\n - `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n - `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/drafts/{id}","summary":"Информация о черновике","scope":"drafts:read","plan":null,"auth":true,"paginated":false,"command":"pachca drafts get","docLink":"https://dev.pachca.com/api/drafts/get","describe":"# GET /drafts/{id} — Информация о черновике\n\n> **Скоуп:** `drafts:read`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор черновика\n\n## Эквивалентная команда\n\n```bash\npachca drafts get 4821 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/drafts/get\nПолная справка: `pachca api GET /drafts/{id} --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/drafts/{id}","description":"Информация о черновике\n\nЧерновик. У отложенного сообщения сюда же приходит его расписание.","parameters":[{"name":"id","in":"path","description":"Идентификатор черновика","required":true,"schema":{"type":"integer","format":"int32","example":4821},"example":4821}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Черновик или отложенное сообщение","required":["id","entity_type","entity_id","chat_id","content","parent_message_id","files","voice_content","schedule","next_send_at","created_at","updated_at"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор черновика","example":4821},"entity_type":{"description":"Куда уйдёт сообщение: в беседу или канал, в тред либо в личную переписку с сотрудником","example":"discussion","nullable":true,"allOf":[{"type":"string","description":"Тип сущности для сообщений","enum":["discussion","thread","user"],"x-enum-descriptions":{"discussion":"Беседа или канал","thread":"Тред","user":"Пользователь"},"$ref":"#/components/schemas/MessageEntityType"}]},"entity_id":{"type":"integer","format":"int32","description":"Идентификатор того, что названо в `entity_type`: беседы или канала, треда либо сотрудника","example":334,"nullable":true},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором лежит черновик. У черновика треда это чат самого треда.","example":334,"nullable":true},"content":{"type":"string","description":"Текст черновика. У черновика из одних вложений приходит пустая строка, а не `null`.","example":"Отчёт за неделю: продажи выросли на 10%"},"parent_message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, ответом на которое уйдёт черновик. `null`, если это не ответ.","example":196093,"nullable":true},"files":{"type":"array","description":"Прикреплённые файлы","items":{"type":"object","description":"Файл","required":["id","key","name","file_type","url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор файла","example":3560},"key":{"type":"string","description":"Путь к файлу","example":"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png"},"name":{"type":"string","description":"Название файла с расширением","example":"congrat.png"},"file_type":{"description":"Тип файла","example":"image","allOf":[{"type":"string","description":"Тип файла","enum":["file","image","audio","voice","video"],"x-enum-descriptions":{"file":"Обычный файл","image":"Изображение","audio":"Аудиофайл","voice":"Голосовое сообщение","video":"Видеофайл"},"$ref":"#/components/schemas/FileType"}]},"url":{"type":"string","description":"Ссылка на скачивание файла. Обычно ведёт прямо в хранилище и действует до 7 дней, а оставшийся срок может быть меньше — если такая ссылка вернула `403`, запросите сообщение заново и получите свежую. Если в пространстве включено шифрование или задан безопасный контур, ссылка ведёт на [Скачивание файла](GET /files/{id}): забирать такой файл нужно с заголовком `Authorization`, а токену нужен скоуп `files:read`.","example":"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8"},"width":{"type":"integer","format":"int32","description":"Ширина изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке.","example":1920,"nullable":true},"height":{"type":"integer","format":"int32","description":"Высота изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке.","example":1080,"nullable":true},"duration_ms":{"type":"integer","format":"int32","description":"Длительность в миллисекундах у голосового, аудио- и видеофайла. `null` у остальных файлов и если длительность не была передана при загрузке.","example":5400,"nullable":true}},"$ref":"#/components/schemas/File"}},"voice_content":{"type":"object","description":"Голосовое сообщение. `null`, если голосового вложения нет. Расшифровка в `transcript` у черновика всегда `null` — она запускается после отправки.","nullable":true,"allOf":[{"type":"object","description":"Данные голосового сообщения","required":["duration_ms","waveform","transcript"],"properties":{"duration_ms":{"type":"integer","format":"int32","description":"Длительность голосового сообщения в миллисекундах","example":5400},"waveform":{"type":"string","description":"Форма волны (амплитуды) для визуализации голосового сообщения","example":"4,8,12,20,16,10,6,3"},"transcript":{"type":"string","description":"Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна.","example":"Привет, посмотри пожалуйста последний отчёт","nullable":true}},"$ref":"#/components/schemas/VoiceContent"}]},"schedule":{"type":"object","description":"Расписание отправки. `null` у обычного черновика.","nullable":true,"allOf":[{"type":"object","description":"Расписание отправки отложенного сообщения","required":["start_date","end_date","repetition"],"properties":{"start_date":{"type":"string","format":"date-time","description":"Первая отправка (ISO-8601). Из неё берутся время суток, число месяца и день недели, по которым дальше строится повтор.","example":"2026-09-17T12:00:00.000Z"},"end_date":{"type":"string","format":"date-time","description":"Дата, после которой повтор прекращается (ISO-8601). `null`, если конец не задан.","example":"2026-12-31T12:00:00.000Z","nullable":true},"repetition":{"description":"Правило повтора","allOf":[{"type":"object","description":"Правило повтора отложенного сообщения","required":["interval"],"properties":{"interval":{"description":"Периодичность","example":"weekly","allOf":[{"type":"string","description":"Периодичность повтора отложенного сообщения","enum":["once","daily","weekly","monthly","every_2_months","every_3_months","every_4_months","every_6_months","yearly"],"x-enum-descriptions":{"once":"Один раз","daily":"Каждый день","weekly":"Каждую неделю","monthly":"Каждый месяц","every_2_months":"Раз в два месяца","every_3_months":"Раз в три месяца","every_4_months":"Раз в четыре месяца","every_6_months":"Раз в полгода","yearly":"Раз в год"},"$ref":"#/components/schemas/DraftRepetitionInterval"}]},"days":{"type":"array","description":"Дни недели, по которым уходит сообщение: 0 — воскресенье, 6 — суббота. Приходит только при периодичности `weekly`.","example":[1,3],"items":{"type":"integer","format":"int32"}},"nth_day":{"type":"integer","format":"int32","description":"Какой по счёту день недели в месяце: от 1 до 4 — первый, второй, третий, четвёртый, 5 — последний. Приходит только при периодичности по месяцам, а `null` в ней означает повтор по числу месяца из `start_date`.","example":2,"nullable":true}},"$ref":"#/components/schemas/DraftRepetition"}]}},"$ref":"#/components/schemas/DraftSchedule"}]},"next_send_at":{"type":"string","format":"date-time","description":"Ближайшая отправка (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null` у обычного черновика.","example":"2026-09-17T12:00:00.000Z","nullable":true},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2026-09-16T10:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","description":"Дата и время последнего изменения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2026-09-16T10:00:00.000Z"}},"$ref":"#/components/schemas/Draft"}}}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"},{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}]}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"drafts:read","scopeRoles":["owner","admin","user"]},"paginated":false},"docs":"# Информация о черновике\n\n**Метод**: `GET`\n\n**Путь**: `/drafts/{id}`\n\n> **Скоуп:** `drafts:read`\n\nЧерновик. У отложенного сообщения сюда же приходит его расписание.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор черновика\n\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/drafts/4821\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Черновик или отложенное сообщение\n - `id: integer, int32` (required) — Идентификатор черновика. Пример: `4821`\n - `entity_type: string` (required) — Куда уйдёт сообщение: в беседу или канал, в тред либо в личную переписку с сотрудником\n Значения: `discussion` — Беседа или канал, `thread` — Тред, `user` — Пользователь\n - `entity_id: integer, int32` (required, nullable) — Идентификатор того, что названо в `entity_type`: беседы или канала, треда либо сотрудника. Пример: `334`\n - `chat_id: integer, int32` (required, nullable) — Идентификатор чата, в котором лежит черновик. У черновика треда это чат самого треда. Пример: `334`\n - `content: string` (required) — Текст черновика. У черновика из одних вложений приходит пустая строка, а не `null`. Пример: `\"Отчёт за неделю: продажи выросли на 10%\"`\n - `parent_message_id: integer, int32` (required, nullable) — Идентификатор сообщения, ответом на которое уйдёт черновик. `null`, если это не ответ. Пример: `196093`\n - `files: array of object` (required) — Прикреплённые файлы\n - `id: integer, int32` (required) — Идентификатор файла. Пример: `3560`\n - `key: string` (required) — Путь к файлу. Пример: `\"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png\"`\n - `name: string` (required) — Название файла с расширением. Пример: `\"congrat.png\"`\n - `file_type: string` (required) — Тип файла\n Значения: `file` — Обычный файл, `image` — Изображение, `audio` — Аудиофайл, `voice` — Голосовое сообщение, `video` — Видеофайл\n - `url: string` (required) — Ссылка на скачивание файла. Обычно ведёт прямо в хранилище и действует до 7 дней, а оставшийся срок может быть меньше — если такая ссылка вернула `403`, запросите сообщение заново и получите свежую. Если в пространстве включено шифрование или задан безопасный контур, ссылка ведёт на [Скачивание файла](GET /files/{id}): забирать такой файл нужно с заголовком `Authorization`, а токену нужен скоуп `files:read`. Пример: `\"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8\"`\n - `width: integer, int32` (nullable) — Ширина изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке. Пример: `1920`\n - `height: integer, int32` (nullable) — Высота изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке. Пример: `1080`\n - `duration_ms: integer, int32` (nullable) — Длительность в миллисекундах у голосового, аудио- и видеофайла. `null` у остальных файлов и если длительность не была передана при загрузке. Пример: `5400`\n - `voice_content: object` (required) — Голосовое сообщение. `null`, если голосового вложения нет. Расшифровка в `transcript` у черновика всегда `null` — она запускается после отправки.\n - `duration_ms: integer, int32` (required) — Длительность голосового сообщения в миллисекундах. Пример: `5400`\n - `waveform: string` (required) — Форма волны (амплитуды) для визуализации голосового сообщения. Пример: `\"4,8,12,20,16,10,6,3\"`\n - `transcript: string` (required, nullable) — Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна. Пример: `\"Привет, посмотри пожалуйста последний отчёт\"`\n - `schedule: object` (required) — Расписание отправки. `null` у обычного черновика.\n - `start_date: date-time` (required) — Первая отправка (ISO-8601). Из неё берутся время суток, число месяца и день недели, по которым дальше строится повтор. Пример: `\"2026-09-17T12:00:00.000Z\"`\n - `end_date: date-time` (required, nullable) — Дата, после которой повтор прекращается (ISO-8601). `null`, если конец не задан. Пример: `\"2026-12-31T12:00:00.000Z\"`\n - `repetition: object` (required) — Правило повтора\n - `interval: string` (required) — Периодичность\n Значения: `once` — Один раз, `daily` — Каждый день, `weekly` — Каждую неделю, `monthly` — Каждый месяц, `every_2_months` — Раз в два месяца, `every_3_months` — Раз в три месяца, `every_4_months` — Раз в четыре месяца, `every_6_months` — Раз в полгода, `yearly` — Раз в год\n - `days: array of integer` — Дни недели, по которым уходит сообщение: 0 — воскресенье, 6 — суббота. Приходит только при периодичности `weekly`. Пример: `[1,3]`\n - `nth_day: integer, int32` (nullable) — Какой по счёту день недели в месяце: от 1 до 4 — первый, второй, третий, четвёртый, 5 — последний. Приходит только при периодичности по месяцам, а `null` в ней означает повтор по числу месяца из `start_date`. Пример: `2`\n - `next_send_at: date-time` (required, nullable) — Ближайшая отправка (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null` у обычного черновика. Пример: `\"2026-09-17T12:00:00.000Z\"`\n - `created_at: date-time` (required) — Дата и время создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2026-09-16T10:00:00.000Z\"`\n - `updated_at: date-time` (required) — Дата и время последнего изменения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2026-09-16T10:00:00.000Z\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 4821,\n \"entity_type\": \"discussion\",\n \"entity_id\": 334,\n \"chat_id\": 334,\n \"content\": \"Отчёт за неделю: продажи выросли на 10%\",\n \"parent_message_id\": 196093,\n \"files\": [\n {\n \"id\": 3560,\n \"key\": \"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png\",\n \"name\": \"congrat.png\",\n \"file_type\": \"image\",\n \"url\": \"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8\",\n \"width\": 1920,\n \"height\": 1080,\n \"duration_ms\": 5400\n }\n ],\n \"voice_content\": {\n \"duration_ms\": 5400,\n \"waveform\": \"4,8,12,20,16,10,6,3\",\n \"transcript\": \"Привет, посмотри пожалуйста последний отчёт\"\n },\n \"schedule\": {\n \"start_date\": \"2026-09-17T12:00:00.000Z\",\n \"end_date\": \"2026-12-31T12:00:00.000Z\",\n \"repetition\": {\n \"interval\": \"weekly\",\n \"days\": [\n 1,\n 3\n ],\n \"nth_day\": 2\n }\n },\n \"next_send_at\": \"2026-09-17T12:00:00.000Z\",\n \"created_at\": \"2026-09-16T10:00:00.000Z\",\n \"updated_at\": \"2026-09-16T10:00:00.000Z\"\n }\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n**anyOf** - один из вариантов:\n\n- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)\n - `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403)\n - `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n - `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"PUT","path":"/drafts/{id}","summary":"Редактирование черновика","scope":"drafts:write","plan":null,"auth":true,"paginated":false,"command":"pachca drafts update","docLink":"https://dev.pachca.com/api/drafts/update","describe":"# PUT /drafts/{id} — Редактирование черновика\n\n> **Скоуп:** `drafts:write`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор черновика\n\n## Тело запроса\n\n- `draft: object` (required) — Собранный объект изменяемых параметров черновика\n - `content: string` — Текст черновика\n - `parent_message_id: integer, int32` (nullable) — Идентификатор сообщения, ответом на которое уйдёт черновик. `null` снимает ответ.\n - `files: array of object` (max items: 10) — Прикрепляемые файлы, не больше десяти. Переданный массив заменяет прежний состав: пустой снимает все вложения, а чтобы сохранить уже прикреплённый файл, передайте его с `id`. Без этого поля вложения остаются как были.\n - `id: integer, int32` — Идентификатор уже прикреплённого файла. Передаётся при редактировании, чтобы сохранить вложение как есть. У нового файла не указывается.\n - `key: string` (required, max length: 1000) — Путь к файлу, полученный в методе [Загрузка файла](POST /direct_url)\n - `name: string` (required, max length: 255) — Название файла, которое вы хотите отображать пользователю\n - `file_type: string` — Тип файла\n Значения: `file` — Обычный файл, `image` — Изображение, `audio` — Аудиофайл, `voice` — Голосовое сообщение, `video` — Видеофайл\n - `size: integer, int64` — Размер файла в байтах, отображаемый пользователю\n - `width: integer, int32` — Ширина изображения в пикселях\n - `height: integer, int32` — Высота изображения в пикселях\n - `duration_ms: integer, int32` — Длительность в миллисекундах. Обязательна для голосового сообщения (`file_type` — `voice`).\n - `waveform: string` (max length: 256) — Форма волны для визуализации. Обязательна для голосового сообщения (`file_type` — `voice`).\n - `schedule: object` — Расписание отправки. У обычного черновика оно превращает его в отложенное сообщение. У отложенного расписание можно изменить, но не снять: `null` в ответ даст `422` с кодом `draft_type_change_forbidden`.\n - `start_date: date-time` (required) — Первая отправка (ISO-8601). Из неё берутся время суток, число месяца и день недели, по которым дальше строится повтор. Смещение вида `+03:00` учитывается, время без смещения считается UTC.\n - `end_date: date-time` (nullable) — Дата, после которой повтор прекращается (ISO-8601). Без неё повтор идёт бессрочно.\n - `repetition: object` (required) — Правило повтора\n - `interval: string` (required) — Периодичность\n Значения: `once` — Один раз, `daily` — Каждый день, `weekly` — Каждую неделю, `monthly` — Каждый месяц, `every_2_months` — Раз в два месяца, `every_3_months` — Раз в три месяца, `every_4_months` — Раз в четыре месяца, `every_6_months` — Раз в полгода, `yearly` — Раз в год\n - `days: array of integer` (max items: 7) — Дни недели, по которым уходит сообщение: 0 — воскресенье, 6 — суббота. Учитывается только при периодичности `weekly`, а если не передать, берётся день недели из `start_date`.\n - `nth_day: integer, int32` (nullable, min: 1, max: 5) — Какой по счёту день недели в месяце: от 1 до 4 — первый, второй, третий, четвёртый, 5 — последний. Учитывается только при периодичности по месяцам, а без него повтор идёт по числу месяца из `start_date`.\n\n## Эквивалентная команда\n\n```bash\npachca drafts update 4821 \\\n --content='Отчёт за неделю: продажи выросли на 10%' \\\n --parent-message-id=196093 \\\n --files='[{\"id\":3560,\"key\":\"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png\",\"name\":\"logo.png\",\"file_type\":\"image\",\"size\":12345,\"width\":800,\"height\":600,\"duration_ms\":5400,\"waveform\":\"4,8,12,20,16,10,6,3\"}]' \\\n --schedule='{\"start_date\":\"2026-09-17T12:00:00.000Z\",\"end_date\":\"2026-12-31T12:00:00.000Z\",\"repetition\":{\"interval\":\"weekly\",\"days\":[1,3],\"nth_day\":2}}' \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/drafts/update\nПолная справка: `pachca api PUT /drafts/{id} --docs` · схема: `--spec`\n","spec":{"method":"PUT","path":"/drafts/{id}","description":"Редактирование черновика\n\nМеняет свой черновик: текст, вложения, расписание и сообщение, ответом на которое он уйдёт (`parent_message_id`). Перезаписываются только переданные поля, поэтому дописать текст, не трогая вложения, можно одним `content`.\n\nОбычный черновик превращается в отложенное сообщение, если передать `schedule`. Обратный переход запрещён: `schedule: null` у отложенного отвечает `422` с кодом `draft_type_change_forbidden`. Чтобы отменить отправку, черновик убирают методом [Удаление черновика](DELETE /drafts/{id}).\n\nПравить можно, только пока в чат разрешено писать. Если доступ к чату потерян, редактирование ответит `403`, а удаление всё равно сработает.\n\nЧат черновика этим методом не меняется, `entity_type` и `entity_id` он не принимает. Чтобы перенести черновик в другой чат, создайте новый и удалите прежний.","parameters":[{"name":"id","in":"path","description":"Идентификатор черновика","required":true,"schema":{"type":"integer","format":"int32","example":4821},"example":4821}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на обновление черновика","required":["draft"],"properties":{"draft":{"type":"object","description":"Собранный объект изменяемых параметров черновика","properties":{"content":{"type":"string","description":"Текст черновика","example":"Отчёт за неделю: продажи выросли на 10%"},"parent_message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, ответом на которое уйдёт черновик. `null` снимает ответ.","example":196093,"nullable":true},"files":{"type":"array","description":"Прикрепляемые файлы, не больше десяти. Переданный массив заменяет прежний состав: пустой снимает все вложения, а чтобы сохранить уже прикреплённый файл, передайте его с `id`. Без этого поля вложения остаются как были.","maxItems":10,"items":{"type":"object","description":"Прикрепляемый к черновику файл","required":["key","name"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор уже прикреплённого файла. Передаётся при редактировании, чтобы сохранить вложение как есть. У нового файла не указывается.","example":3560},"key":{"type":"string","description":"Путь к файлу, полученный в методе [Загрузка файла](POST /direct_url)","example":"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png","maxLength":1000},"name":{"type":"string","description":"Название файла, которое вы хотите отображать пользователю","example":"logo.png","maxLength":255},"file_type":{"description":"Тип файла","example":"image","allOf":[{"type":"string","description":"Тип файла","enum":["file","image","audio","voice","video"],"x-enum-descriptions":{"file":"Обычный файл","image":"Изображение","audio":"Аудиофайл","voice":"Голосовое сообщение","video":"Видеофайл"},"$ref":"#/components/schemas/FileType"}]},"size":{"type":"integer","format":"int64","description":"Размер файла в байтах, отображаемый пользователю","example":12345},"width":{"type":"integer","format":"int32","description":"Ширина изображения в пикселях","example":800},"height":{"type":"integer","format":"int32","description":"Высота изображения в пикселях","example":600},"duration_ms":{"type":"integer","format":"int32","description":"Длительность в миллисекундах. Обязательна для голосового сообщения (`file_type` — `voice`).","example":5400},"waveform":{"type":"string","description":"Форма волны для визуализации. Обязательна для голосового сообщения (`file_type` — `voice`).","example":"4,8,12,20,16,10,6,3","maxLength":256}},"$ref":"#/components/schemas/DraftFileRequest"}},"schedule":{"type":"object","description":"Расписание отправки. У обычного черновика оно превращает его в отложенное сообщение. У отложенного расписание можно изменить, но не снять: `null` в ответ даст `422` с кодом `draft_type_change_forbidden`.","nullable":true,"allOf":[{"type":"object","description":"Расписание отправки в запросе","required":["start_date","repetition"],"properties":{"start_date":{"type":"string","format":"date-time","description":"Первая отправка (ISO-8601). Из неё берутся время суток, число месяца и день недели, по которым дальше строится повтор. Смещение вида `+03:00` учитывается, время без смещения считается UTC.","example":"2026-09-17T12:00:00.000Z"},"end_date":{"type":"string","format":"date-time","description":"Дата, после которой повтор прекращается (ISO-8601). Без неё повтор идёт бессрочно.","example":"2026-12-31T12:00:00.000Z","nullable":true},"repetition":{"description":"Правило повтора","allOf":[{"type":"object","description":"Правило повтора в запросе","required":["interval"],"properties":{"interval":{"description":"Периодичность","example":"weekly","allOf":[{"type":"string","description":"Периодичность повтора отложенного сообщения","enum":["once","daily","weekly","monthly","every_2_months","every_3_months","every_4_months","every_6_months","yearly"],"x-enum-descriptions":{"once":"Один раз","daily":"Каждый день","weekly":"Каждую неделю","monthly":"Каждый месяц","every_2_months":"Раз в два месяца","every_3_months":"Раз в три месяца","every_4_months":"Раз в четыре месяца","every_6_months":"Раз в полгода","yearly":"Раз в год"},"$ref":"#/components/schemas/DraftRepetitionInterval"}]},"days":{"type":"array","description":"Дни недели, по которым уходит сообщение: 0 — воскресенье, 6 — суббота. Учитывается только при периодичности `weekly`, а если не передать, берётся день недели из `start_date`.","example":[1,3],"maxItems":7,"items":{"type":"integer","format":"int32"}},"nth_day":{"type":"integer","format":"int32","description":"Какой по счёту день недели в месяце: от 1 до 4 — первый, второй, третий, четвёртый, 5 — последний. Учитывается только при периодичности по месяцам, а без него повтор идёт по числу месяца из `start_date`.","example":2,"nullable":true,"minimum":1,"maximum":5}},"$ref":"#/components/schemas/DraftRepetitionRequest"}]}},"$ref":"#/components/schemas/DraftScheduleRequest"}]}}}},"$ref":"#/components/schemas/DraftUpdateRequest"}}}},"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Черновик или отложенное сообщение","required":["id","entity_type","entity_id","chat_id","content","parent_message_id","files","voice_content","schedule","next_send_at","created_at","updated_at"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор черновика","example":4821},"entity_type":{"description":"Куда уйдёт сообщение: в беседу или канал, в тред либо в личную переписку с сотрудником","example":"discussion","nullable":true,"allOf":[{"type":"string","description":"Тип сущности для сообщений","enum":["discussion","thread","user"],"x-enum-descriptions":{"discussion":"Беседа или канал","thread":"Тред","user":"Пользователь"},"$ref":"#/components/schemas/MessageEntityType"}]},"entity_id":{"type":"integer","format":"int32","description":"Идентификатор того, что названо в `entity_type`: беседы или канала, треда либо сотрудника","example":334,"nullable":true},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором лежит черновик. У черновика треда это чат самого треда.","example":334,"nullable":true},"content":{"type":"string","description":"Текст черновика. У черновика из одних вложений приходит пустая строка, а не `null`.","example":"Отчёт за неделю: продажи выросли на 10%"},"parent_message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, ответом на которое уйдёт черновик. `null`, если это не ответ.","example":196093,"nullable":true},"files":{"type":"array","description":"Прикреплённые файлы","items":{"type":"object","description":"Файл","required":["id","key","name","file_type","url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор файла","example":3560},"key":{"type":"string","description":"Путь к файлу","example":"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png"},"name":{"type":"string","description":"Название файла с расширением","example":"congrat.png"},"file_type":{"description":"Тип файла","example":"image","allOf":[{"type":"string","description":"Тип файла","enum":["file","image","audio","voice","video"],"x-enum-descriptions":{"file":"Обычный файл","image":"Изображение","audio":"Аудиофайл","voice":"Голосовое сообщение","video":"Видеофайл"},"$ref":"#/components/schemas/FileType"}]},"url":{"type":"string","description":"Ссылка на скачивание файла. Обычно ведёт прямо в хранилище и действует до 7 дней, а оставшийся срок может быть меньше — если такая ссылка вернула `403`, запросите сообщение заново и получите свежую. Если в пространстве включено шифрование или задан безопасный контур, ссылка ведёт на [Скачивание файла](GET /files/{id}): забирать такой файл нужно с заголовком `Authorization`, а токену нужен скоуп `files:read`.","example":"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8"},"width":{"type":"integer","format":"int32","description":"Ширина изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке.","example":1920,"nullable":true},"height":{"type":"integer","format":"int32","description":"Высота изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке.","example":1080,"nullable":true},"duration_ms":{"type":"integer","format":"int32","description":"Длительность в миллисекундах у голосового, аудио- и видеофайла. `null` у остальных файлов и если длительность не была передана при загрузке.","example":5400,"nullable":true}},"$ref":"#/components/schemas/File"}},"voice_content":{"type":"object","description":"Голосовое сообщение. `null`, если голосового вложения нет. Расшифровка в `transcript` у черновика всегда `null` — она запускается после отправки.","nullable":true,"allOf":[{"type":"object","description":"Данные голосового сообщения","required":["duration_ms","waveform","transcript"],"properties":{"duration_ms":{"type":"integer","format":"int32","description":"Длительность голосового сообщения в миллисекундах","example":5400},"waveform":{"type":"string","description":"Форма волны (амплитуды) для визуализации голосового сообщения","example":"4,8,12,20,16,10,6,3"},"transcript":{"type":"string","description":"Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна.","example":"Привет, посмотри пожалуйста последний отчёт","nullable":true}},"$ref":"#/components/schemas/VoiceContent"}]},"schedule":{"type":"object","description":"Расписание отправки. `null` у обычного черновика.","nullable":true,"allOf":[{"type":"object","description":"Расписание отправки отложенного сообщения","required":["start_date","end_date","repetition"],"properties":{"start_date":{"type":"string","format":"date-time","description":"Первая отправка (ISO-8601). Из неё берутся время суток, число месяца и день недели, по которым дальше строится повтор.","example":"2026-09-17T12:00:00.000Z"},"end_date":{"type":"string","format":"date-time","description":"Дата, после которой повтор прекращается (ISO-8601). `null`, если конец не задан.","example":"2026-12-31T12:00:00.000Z","nullable":true},"repetition":{"description":"Правило повтора","allOf":[{"type":"object","description":"Правило повтора отложенного сообщения","required":["interval"],"properties":{"interval":{"description":"Периодичность","example":"weekly","allOf":[{"type":"string","description":"Периодичность повтора отложенного сообщения","enum":["once","daily","weekly","monthly","every_2_months","every_3_months","every_4_months","every_6_months","yearly"],"x-enum-descriptions":{"once":"Один раз","daily":"Каждый день","weekly":"Каждую неделю","monthly":"Каждый месяц","every_2_months":"Раз в два месяца","every_3_months":"Раз в три месяца","every_4_months":"Раз в четыре месяца","every_6_months":"Раз в полгода","yearly":"Раз в год"},"$ref":"#/components/schemas/DraftRepetitionInterval"}]},"days":{"type":"array","description":"Дни недели, по которым уходит сообщение: 0 — воскресенье, 6 — суббота. Приходит только при периодичности `weekly`.","example":[1,3],"items":{"type":"integer","format":"int32"}},"nth_day":{"type":"integer","format":"int32","description":"Какой по счёту день недели в месяце: от 1 до 4 — первый, второй, третий, четвёртый, 5 — последний. Приходит только при периодичности по месяцам, а `null` в ней означает повтор по числу месяца из `start_date`.","example":2,"nullable":true}},"$ref":"#/components/schemas/DraftRepetition"}]}},"$ref":"#/components/schemas/DraftSchedule"}]},"next_send_at":{"type":"string","format":"date-time","description":"Ближайшая отправка (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null` у обычного черновика.","example":"2026-09-17T12:00:00.000Z","nullable":true},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2026-09-16T10:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","description":"Дата и время последнего изменения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2026-09-16T10:00:00.000Z"}},"$ref":"#/components/schemas/Draft"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"},{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}]}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"drafts:write","scopeRoles":["owner","admin","user"]},"paginated":false},"docs":"# Редактирование черновика\n\n**Метод**: `PUT`\n\n**Путь**: `/drafts/{id}`\n\n> **Скоуп:** `drafts:write`\n\nМеняет свой черновик: текст, вложения, расписание и сообщение, ответом на которое он уйдёт (`parent_message_id`). Перезаписываются только переданные поля, поэтому дописать текст, не трогая вложения, можно одним `content`.\n\nОбычный черновик превращается в отложенное сообщение, если передать `schedule`. Обратный переход запрещён: `schedule: null` у отложенного отвечает `422` с кодом `draft_type_change_forbidden`. Чтобы отменить отправку, черновик убирают методом [Удаление черновика](DELETE /drafts/{id}).\n\nПравить можно, только пока в чат разрешено писать. Если доступ к чату потерян, редактирование ответит `403`, а удаление всё равно сработает.\n\nЧат черновика этим методом не меняется, `entity_type` и `entity_id` он не принимает. Чтобы перенести черновик в другой чат, создайте новый и удалите прежний.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор черновика\n\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `draft: object` (required) — Собранный объект изменяемых параметров черновика\n - `content: string` — Текст черновика. Пример: `\"Отчёт за неделю: продажи выросли на 10%\"`\n - `parent_message_id: integer, int32` (nullable) — Идентификатор сообщения, ответом на которое уйдёт черновик. `null` снимает ответ. Пример: `196093`\n - `files: array of object` (max items: 10) — Прикрепляемые файлы, не больше десяти. Переданный массив заменяет прежний состав: пустой снимает все вложения, а чтобы сохранить уже прикреплённый файл, передайте его с `id`. Без этого поля вложения остаются как были.\n - `id: integer, int32` — Идентификатор уже прикреплённого файла. Передаётся при редактировании, чтобы сохранить вложение как есть. У нового файла не указывается. Пример: `3560`\n - `key: string` (required, max length: 1000) — Путь к файлу, полученный в методе [Загрузка файла](POST /direct_url). Пример: `\"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png\"`\n - `name: string` (required, max length: 255) — Название файла, которое вы хотите отображать пользователю. Пример: `\"logo.png\"`\n - `file_type: string` — Тип файла\n Значения: `file` — Обычный файл, `image` — Изображение, `audio` — Аудиофайл, `voice` — Голосовое сообщение, `video` — Видеофайл\n - `size: integer, int64` — Размер файла в байтах, отображаемый пользователю. Пример: `12345`\n - `width: integer, int32` — Ширина изображения в пикселях. Пример: `800`\n - `height: integer, int32` — Высота изображения в пикселях. Пример: `600`\n - `duration_ms: integer, int32` — Длительность в миллисекундах. Обязательна для голосового сообщения (`file_type` — `voice`). Пример: `5400`\n - `waveform: string` (max length: 256) — Форма волны для визуализации. Обязательна для голосового сообщения (`file_type` — `voice`). Пример: `\"4,8,12,20,16,10,6,3\"`\n - `schedule: object` — Расписание отправки. У обычного черновика оно превращает его в отложенное сообщение. У отложенного расписание можно изменить, но не снять: `null` в ответ даст `422` с кодом `draft_type_change_forbidden`.\n - `start_date: date-time` (required) — Первая отправка (ISO-8601). Из неё берутся время суток, число месяца и день недели, по которым дальше строится повтор. Смещение вида `+03:00` учитывается, время без смещения считается UTC. Пример: `\"2026-09-17T12:00:00.000Z\"`\n - `end_date: date-time` (nullable) — Дата, после которой повтор прекращается (ISO-8601). Без неё повтор идёт бессрочно. Пример: `\"2026-12-31T12:00:00.000Z\"`\n - `repetition: object` (required) — Правило повтора\n - `interval: string` (required) — Периодичность\n Значения: `once` — Один раз, `daily` — Каждый день, `weekly` — Каждую неделю, `monthly` — Каждый месяц, `every_2_months` — Раз в два месяца, `every_3_months` — Раз в три месяца, `every_4_months` — Раз в четыре месяца, `every_6_months` — Раз в полгода, `yearly` — Раз в год\n - `days: array of integer` (max items: 7) — Дни недели, по которым уходит сообщение: 0 — воскресенье, 6 — суббота. Учитывается только при периодичности `weekly`, а если не передать, берётся день недели из `start_date`. Пример: `[1,3]`\n - `nth_day: integer, int32` (nullable, min: 1, max: 5) — Какой по счёту день недели в месяце: от 1 до 4 — первый, второй, третий, четвёртый, 5 — последний. Учитывается только при периодичности по месяцам, а без него повтор идёт по числу месяца из `start_date`. Пример: `2`\n\n### Пример\n\n```json\n{\n \"draft\": {\n \"content\": \"Отчёт за неделю: продажи выросли на 10%\",\n \"parent_message_id\": 196093,\n \"files\": [\n {\n \"id\": 3560,\n \"key\": \"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png\",\n \"name\": \"logo.png\",\n \"file_type\": \"image\",\n \"size\": 12345,\n \"width\": 800,\n \"height\": 600,\n \"duration_ms\": 5400,\n \"waveform\": \"4,8,12,20,16,10,6,3\"\n }\n ],\n \"schedule\": {\n \"start_date\": \"2026-09-17T12:00:00.000Z\",\n \"end_date\": \"2026-12-31T12:00:00.000Z\",\n \"repetition\": {\n \"interval\": \"weekly\",\n \"days\": [\n 1,\n 3\n ],\n \"nth_day\": 2\n }\n }\n }\n}\n```\n\n## Пример запроса\n\n```bash\ncurl -X PUT \"https://api.pachca.com/api/shared/v1/drafts/4821\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"draft\": {\n \"content\": \"Отчёт за неделю: продажи выросли на 10%\",\n \"parent_message_id\": 196093,\n \"files\": [\n {\n \"id\": 3560,\n \"key\": \"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png\",\n \"name\": \"logo.png\",\n \"file_type\": \"image\",\n \"size\": 12345,\n \"width\": 800,\n \"height\": 600,\n \"duration_ms\": 5400,\n \"waveform\": \"4,8,12,20,16,10,6,3\"\n }\n ],\n \"schedule\": {\n \"start_date\": \"2026-09-17T12:00:00.000Z\",\n \"end_date\": \"2026-12-31T12:00:00.000Z\",\n \"repetition\": {\n \"interval\": \"weekly\",\n \"days\": [\n 1,\n 3\n ],\n \"nth_day\": 2\n }\n }\n }\n}'\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Черновик или отложенное сообщение\n - `id: integer, int32` (required) — Идентификатор черновика. Пример: `4821`\n - `entity_type: string` (required) — Куда уйдёт сообщение: в беседу или канал, в тред либо в личную переписку с сотрудником\n Значения: `discussion` — Беседа или канал, `thread` — Тред, `user` — Пользователь\n - `entity_id: integer, int32` (required, nullable) — Идентификатор того, что названо в `entity_type`: беседы или канала, треда либо сотрудника. Пример: `334`\n - `chat_id: integer, int32` (required, nullable) — Идентификатор чата, в котором лежит черновик. У черновика треда это чат самого треда. Пример: `334`\n - `content: string` (required) — Текст черновика. У черновика из одних вложений приходит пустая строка, а не `null`. Пример: `\"Отчёт за неделю: продажи выросли на 10%\"`\n - `parent_message_id: integer, int32` (required, nullable) — Идентификатор сообщения, ответом на которое уйдёт черновик. `null`, если это не ответ. Пример: `196093`\n - `files: array of object` (required) — Прикреплённые файлы\n - `id: integer, int32` (required) — Идентификатор файла. Пример: `3560`\n - `key: string` (required) — Путь к файлу. Пример: `\"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png\"`\n - `name: string` (required) — Название файла с расширением. Пример: `\"congrat.png\"`\n - `file_type: string` (required) — Тип файла\n Значения: `file` — Обычный файл, `image` — Изображение, `audio` — Аудиофайл, `voice` — Голосовое сообщение, `video` — Видеофайл\n - `url: string` (required) — Ссылка на скачивание файла. Обычно ведёт прямо в хранилище и действует до 7 дней, а оставшийся срок может быть меньше — если такая ссылка вернула `403`, запросите сообщение заново и получите свежую. Если в пространстве включено шифрование или задан безопасный контур, ссылка ведёт на [Скачивание файла](GET /files/{id}): забирать такой файл нужно с заголовком `Authorization`, а токену нужен скоуп `files:read`. Пример: `\"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8\"`\n - `width: integer, int32` (nullable) — Ширина изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке. Пример: `1920`\n - `height: integer, int32` (nullable) — Высота изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке. Пример: `1080`\n - `duration_ms: integer, int32` (nullable) — Длительность в миллисекундах у голосового, аудио- и видеофайла. `null` у остальных файлов и если длительность не была передана при загрузке. Пример: `5400`\n - `voice_content: object` (required) — Голосовое сообщение. `null`, если голосового вложения нет. Расшифровка в `transcript` у черновика всегда `null` — она запускается после отправки.\n - `duration_ms: integer, int32` (required) — Длительность голосового сообщения в миллисекундах. Пример: `5400`\n - `waveform: string` (required) — Форма волны (амплитуды) для визуализации голосового сообщения. Пример: `\"4,8,12,20,16,10,6,3\"`\n - `transcript: string` (required, nullable) — Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна. Пример: `\"Привет, посмотри пожалуйста последний отчёт\"`\n - `schedule: object` (required) — Расписание отправки. `null` у обычного черновика.\n - `start_date: date-time` (required) — Первая отправка (ISO-8601). Из неё берутся время суток, число месяца и день недели, по которым дальше строится повтор. Пример: `\"2026-09-17T12:00:00.000Z\"`\n - `end_date: date-time` (required, nullable) — Дата, после которой повтор прекращается (ISO-8601). `null`, если конец не задан. Пример: `\"2026-12-31T12:00:00.000Z\"`\n - `repetition: object` (required) — Правило повтора\n - `interval: string` (required) — Периодичность\n Значения: `once` — Один раз, `daily` — Каждый день, `weekly` — Каждую неделю, `monthly` — Каждый месяц, `every_2_months` — Раз в два месяца, `every_3_months` — Раз в три месяца, `every_4_months` — Раз в четыре месяца, `every_6_months` — Раз в полгода, `yearly` — Раз в год\n - `days: array of integer` — Дни недели, по которым уходит сообщение: 0 — воскресенье, 6 — суббота. Приходит только при периодичности `weekly`. Пример: `[1,3]`\n - `nth_day: integer, int32` (nullable) — Какой по счёту день недели в месяце: от 1 до 4 — первый, второй, третий, четвёртый, 5 — последний. Приходит только при периодичности по месяцам, а `null` в ней означает повтор по числу месяца из `start_date`. Пример: `2`\n - `next_send_at: date-time` (required, nullable) — Ближайшая отправка (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null` у обычного черновика. Пример: `\"2026-09-17T12:00:00.000Z\"`\n - `created_at: date-time` (required) — Дата и время создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2026-09-16T10:00:00.000Z\"`\n - `updated_at: date-time` (required) — Дата и время последнего изменения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2026-09-16T10:00:00.000Z\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 4821,\n \"entity_type\": \"discussion\",\n \"entity_id\": 334,\n \"chat_id\": 334,\n \"content\": \"Отчёт за неделю: продажи выросли на 10%\",\n \"parent_message_id\": 196093,\n \"files\": [\n {\n \"id\": 3560,\n \"key\": \"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png\",\n \"name\": \"congrat.png\",\n \"file_type\": \"image\",\n \"url\": \"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8\",\n \"width\": 1920,\n \"height\": 1080,\n \"duration_ms\": 5400\n }\n ],\n \"voice_content\": {\n \"duration_ms\": 5400,\n \"waveform\": \"4,8,12,20,16,10,6,3\",\n \"transcript\": \"Привет, посмотри пожалуйста последний отчёт\"\n },\n \"schedule\": {\n \"start_date\": \"2026-09-17T12:00:00.000Z\",\n \"end_date\": \"2026-12-31T12:00:00.000Z\",\n \"repetition\": {\n \"interval\": \"weekly\",\n \"days\": [\n 1,\n 3\n ],\n \"nth_day\": 2\n }\n },\n \"next_send_at\": \"2026-09-17T12:00:00.000Z\",\n \"created_at\": \"2026-09-16T10:00:00.000Z\",\n \"updated_at\": \"2026-09-16T10:00:00.000Z\"\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n**anyOf** - один из вариантов:\n\n- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)\n - `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403)\n - `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n - `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"DELETE","path":"/drafts/{id}","summary":"Удаление черновика","scope":"drafts:write","plan":null,"auth":true,"paginated":false,"command":"pachca drafts delete","docLink":"https://dev.pachca.com/api/drafts/delete","describe":"# DELETE /drafts/{id} — Удаление черновика\n\n> **Скоуп:** `drafts:write`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор черновика\n\n## Эквивалентная команда\n\n```bash\npachca drafts delete 4821 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/drafts/delete\nПолная справка: `pachca api DELETE /drafts/{id} --docs` · схема: `--spec`\n","spec":{"method":"DELETE","path":"/drafts/{id}","description":"Удаление черновика\n\nУбирает свой черновик насовсем: восстановить его нельзя, вложения удаляются вместе с ним. У отложенного сообщения удаление и есть отмена отправки.\n\nРаботает, даже если в чат уже нельзя писать. Повторный вызов отвечает `404`.","parameters":[{"name":"id","in":"path","description":"Идентификатор черновика","required":true,"schema":{"type":"integer","format":"int32","example":4821},"example":4821}],"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"},{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}]}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"drafts:write","scopeRoles":["owner","admin","user"]},"paginated":false},"docs":"# Удаление черновика\n\n**Метод**: `DELETE`\n\n**Путь**: `/drafts/{id}`\n\n> **Скоуп:** `drafts:write`\n\nУбирает свой черновик насовсем: восстановить его нельзя, вложения удаляются вместе с ним. У отложенного сообщения удаление и есть отмена отправки.\n\nРаботает, даже если в чат уже нельзя писать. Повторный вызов отвечает `404`.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор черновика\n\n\n## Пример запроса\n\n```bash\ncurl -X DELETE \"https://api.pachca.com/api/shared/v1/drafts/4821\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n**anyOf** - один из вариантов:\n\n- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)\n - `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403)\n - `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n - `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/files/{id}","summary":"Скачивание файла","scope":"files:read","plan":null,"auth":true,"paginated":false,"command":"pachca files get","docLink":"https://dev.pachca.com/api/files/get","describe":"# GET /files/{id} — Скачивание файла\n\n> **Скоуп:** `files:read`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор файла из поля `id` вложения\n- `target` — query: Что отдать вместо исходного файла: `pdf_preview` — документ, переведённый в PDF, `pdf_first_page` — первая страница картинкой, `thumb` — уменьшенная копия изображения, `image` — изображение как есть. Без параметра приходит исходный файл. Вариант, которого у этого файла нет, приводит к `400`.\n\n## Эквивалентная команда\n\n```bash\npachca files get 3560 \\\n --target=thumb \\\n --save ./file \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/files/get\nПолная справка: `pachca api GET /files/{id} --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/files/{id}","description":"Скачивание файла\n\nОтдаёт сам файл, а не ссылку на него. Нужен для вложений, у которых прямой ссылки на хранилище нет: в поле `url` у них стоит адрес этого метода, и открыть его можно только с токеном. Так отдаются зашифрованные файлы и отправленные из безопасного контура пространства — обе настройки описаны в разделе [Шифрование и безопасный контур](/guides/data-protection).\n\nОтказ приходит `403` с кодом `confidential_download_denied`. Сверяется при этом адрес, с которого пришёл запрос, то есть адрес вашего сервера, а не сотрудника, чьим токеном вы пользуетесь: для серверной интеграции это самая частая причина отказа.\n\nОтвет — тело файла и заголовок `Content-Disposition` с его именем, а не `JSON`. Зашифрованный файл расшифровывается на лету и приходит вложением целиком: `target` для него не действует. Если расшифровать не удалось, ответ — `400` с кодом `decryption_failed`.\n\nВложение сообщения доступно тому, кто видит само сообщение, а вложение черновика — только его автору.","parameters":[{"name":"id","in":"path","description":"Идентификатор файла из поля `id` вложения","required":true,"schema":{"type":"integer","format":"int32","example":3560},"example":3560},{"name":"target","in":"query","description":"Что отдать вместо исходного файла: `pdf_preview` — документ, переведённый в PDF, `pdf_first_page` — первая страница картинкой, `thumb` — уменьшенная копия изображения, `image` — изображение как есть. Без параметра приходит исходный файл. Вариант, которого у этого файла нет, приводит к `400`.","required":false,"schema":{"type":"string","description":"Что отдать вместо исходного файла","enum":["pdf_preview","pdf_first_page","thumb","image"],"x-enum-descriptions":{"pdf_preview":"Документ, переведённый в PDF","pdf_first_page":"Первая страница документа картинкой","thumb":"Уменьшенная копия изображения","image":"Изображение как есть"},"example":"thumb","$ref":"#/components/schemas/FileTarget"},"example":"thumb","explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"},{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}]}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"files:read","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Скачивание файла\n\n**Метод**: `GET`\n\n**Путь**: `/files/{id}`\n\n> **Скоуп:** `files:read`\n\nОтдаёт сам файл, а не ссылку на него. Нужен для вложений, у которых прямой ссылки на хранилище нет: в поле `url` у них стоит адрес этого метода, и открыть его можно только с токеном. Так отдаются зашифрованные файлы и отправленные из безопасного контура пространства — обе настройки описаны в разделе [Шифрование и безопасный контур](/guides/data-protection).\n\nОтказ приходит `403` с кодом `confidential_download_denied`. Сверяется при этом адрес, с которого пришёл запрос, то есть адрес вашего сервера, а не сотрудника, чьим токеном вы пользуетесь: для серверной интеграции это самая частая причина отказа.\n\nОтвет — тело файла и заголовок `Content-Disposition` с его именем, а не `JSON`. Зашифрованный файл расшифровывается на лету и приходит вложением целиком: `target` для него не действует. Если расшифровать не удалось, ответ — `400` с кодом `decryption_failed`.\n\nВложение сообщения доступно тому, кто видит само сообщение, а вложение черновика — только его автору.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор файла из поля `id` вложения\n\n### Query параметры\n\n- `target: string` — Что отдать вместо исходного файла: `pdf_preview` — документ, переведённый в PDF, `pdf_first_page` — первая страница картинкой, `thumb` — уменьшенная копия изображения, `image` — изображение как есть. Без параметра приходит исходный файл. Вариант, которого у этого файла нет, приводит к `400`.\n Значения: `pdf_preview`, `pdf_first_page`, `thumb`, `image`\n\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/files/3560?target=thumb\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n**anyOf** - один из вариантов:\n\n- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)\n - `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403)\n - `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n - `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"POST","path":"/group_tags","summary":"Новый тег","scope":"group_tags:write","plan":null,"auth":true,"paginated":false,"command":"pachca group-tags create","docLink":"https://dev.pachca.com/api/group-tags/create","describe":"# POST /group_tags — Новый тег\n\n> **Скоуп:** `group_tags:write`\n\n## Тело запроса\n\n- `group_tag: object` (required)\n - `name: string` (required, max length: 255) — Название тега\n\n## Эквивалентная команда\n\n```bash\npachca group-tags create \\\n --name='Новое название тега' \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/group-tags/create\nПолная справка: `pachca api POST /group_tags --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/group_tags","description":"Новый тег\n\nСоздаёт тег. Тег — это способ держать состав чатов сам собой: его привязывают к беседе или каналу, и все, у кого этот тег есть, оказываются там автоматически.\n\nСотрудников в тег добавляют не здесь, а в карточке каждого — [Редактирование сотрудника](PUT /users/{id}) с полем `list_tags`. Свежий тег создаётся пустым, с `users_count: 0`. К чату его привязывает метод [Добавление тегов](POST /chats/{id}/group_tags).\n\nНазвание уникально в пространстве без учёта регистра и не может содержать `@`. Создавать теги могут владелец пространства и администратор, боту метод недоступен.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на создание или редактирование тега","required":["group_tag"],"properties":{"group_tag":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Название тега","example":"Новое название тега","maxLength":255}}}},"$ref":"#/components/schemas/GroupTagRequest"}}}},"responses":{"201":{"description":"The request has succeeded and a new resource has been created as a result.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Тег","required":["id","name","users_count"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор тега","example":9111},"name":{"type":"string","description":"Название тега","example":"Design","maxLength":255},"users_count":{"type":"integer","format":"int32","description":"Количество сотрудников, которые имеют этот тег","example":6}},"$ref":"#/components/schemas/GroupTag"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"group_tags:write","scopeRoles":["owner","admin"]},"paginated":false},"docs":"# Новый тег\n\n**Метод**: `POST`\n\n**Путь**: `/group_tags`\n\n> **Скоуп:** `group_tags:write`\n\nСоздаёт тег. Тег — это способ держать состав чатов сам собой: его привязывают к беседе или каналу, и все, у кого этот тег есть, оказываются там автоматически.\n\nСотрудников в тег добавляют не здесь, а в карточке каждого — [Редактирование сотрудника](PUT /users/{id}) с полем `list_tags`. Свежий тег создаётся пустым, с `users_count: 0`. К чату его привязывает метод [Добавление тегов](POST /chats/{id}/group_tags).\n\nНазвание уникально в пространстве без учёта регистра и не может содержать `@`. Создавать теги могут владелец пространства и администратор, боту метод недоступен.\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `group_tag: object` (required)\n - `name: string` (required, max length: 255) — Название тега. Пример: `\"Новое название тега\"`\n\n### Пример\n\n```json\n{\n \"group_tag\": {\n \"name\": \"Новое название тега\"\n }\n}\n```\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/group_tags\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"group_tag\": {\n \"name\": \"Новое название тега\"\n }\n}'\n```\n\n## Ответы\n\n### 201: The request has succeeded and a new resource has been created as a result.\n\n**Схема ответа:**\n\n- `data: object` (required) — Тег\n - `id: integer, int32` (required) — Идентификатор тега. Пример: `9111`\n - `name: string` (required, max length: 255) — Название тега. Пример: `\"Design\"`\n - `users_count: integer, int32` (required) — Количество сотрудников, которые имеют этот тег. Пример: `6`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 9111,\n \"name\": \"Design\",\n \"users_count\": 6\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 409: The request conflicts with the current state of the server.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/group_tags","summary":"Список тегов","scope":"group_tags:read","plan":null,"auth":true,"paginated":true,"command":"pachca group-tags list","docLink":"https://dev.pachca.com/api/group-tags/list","describe":"# GET /group_tags — Список тегов\n\n> **Скоуп:** `group_tags:read`\n\n> Пагинация: добавьте `--all` для автоматического обхода страниц\n\n## Параметры\n\n- `names` — query: Массив названий тегов, по которым вы хотите отфильтровать список\n- `limit` — query: Количество возвращаемых сущностей за один запрос\n- `cursor` — query: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n## Эквивалентная команда\n\n```bash\n# Добавьте --all для автоматической пагинации\npachca group-tags list \\\n --names=Design,Product \\\n --limit=1 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/group-tags/list\nПолная справка: `pachca api GET /group_tags --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/group_tags","description":"Список тегов\n\nВсе теги пространства с числом сотрудников в каждом. Видны они одинаково всем ролям, независимо от того, к каким чатам привязаны.\n\nПараметр `names` ищет теги по названиям — это способ получить `id` по имени, известному из интерфейса. За один запрос он принимает не больше 100 имён.\n\nКто состоит в конкретном теге, отдаёт [Список сотрудников тега](GET /group_tags/{id}/users).","parameters":[{"name":"names","in":"query","description":"Массив названий тегов, по которым вы хотите отфильтровать список","required":false,"schema":{"type":"array","description":"Массив названий тегов","example":["Design","Product"],"maxItems":100,"items":{"type":"string"},"$ref":"#/components/schemas/TagNamesFilter"},"example":["Design","Product"]},{"name":"limit","in":"query","description":"Количество возвращаемых сущностей за один запрос","required":false,"schema":{"type":"integer","format":"int32","default":50,"example":1,"minimum":1,"maximum":50},"example":1,"explode":false},{"name":"cursor","in":"query","description":"Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)","required":false,"schema":{"type":"string","example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9"},"example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9","explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными и пагинацией","required":["data","meta"],"properties":{"data":{"type":"array","items":{"type":"object","description":"Тег","required":["id","name","users_count"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор тега","example":9111},"name":{"type":"string","description":"Название тега","example":"Design","maxLength":255},"users_count":{"type":"integer","format":"int32","description":"Количество сотрудников, которые имеют этот тег","example":6}},"$ref":"#/components/schemas/GroupTag"}},"meta":{"type":"object","description":"Метаданные пагинации","required":["paginate"],"properties":{"paginate":{"type":"object","description":"Вспомогательная информация","required":["next_page"],"properties":{"next_page":{"type":"string","description":"Курсор пагинации следующей страницы","example":"eyJxZCO2MiwiZGlyIjomSNYjIn3"},"prev_page":{"type":"string","description":"Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка.","example":"eyJxZCO2MiwiZGlyIjoiYXNjIn0"},"has_next":{"type":"boolean","description":"Есть ли ещё данные на следующей странице. На последней странице — `false`.","example":true},"has_prev":{"type":"boolean","description":"Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`.","example":false}}}},"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"group_tags:read","scopeRoles":["owner","admin","user","bot"]},"paginated":true},"docs":"# Список тегов\n\n**Метод**: `GET`\n\n**Путь**: `/group_tags`\n\n> **Скоуп:** `group_tags:read`\n\nВсе теги пространства с числом сотрудников в каждом. Видны они одинаково всем ролям, независимо от того, к каким чатам привязаны.\n\nПараметр `names` ищет теги по названиям — это способ получить `id` по имени, известному из интерфейса. За один запрос он принимает не больше 100 имён.\n\nКто состоит в конкретном теге, отдаёт [Список сотрудников тега](GET /group_tags/{id}/users).\n\n## Параметры\n\n### Query параметры\n\n- `names: array` — Массив названий тегов, по которым вы хотите отфильтровать список\n- `limit: integer, int32` (default: 50) — Количество возвращаемых сущностей за один запрос\n- `cursor: string` — Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n\n## Пример запроса\n\n```bash\n# Для получения следующей страницы используйте cursor из meta.paginate.next_page\ncurl \"https://api.pachca.com/api/shared/v1/group_tags?names[]=Design&names[]=Product&limit=1\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: array of object` (required)\n - `id: integer, int32` (required) — Идентификатор тега. Пример: `9111`\n - `name: string` (required, max length: 255) — Название тега. Пример: `\"Design\"`\n - `users_count: integer, int32` (required) — Количество сотрудников, которые имеют этот тег. Пример: `6`\n- `meta: object` (required) — Метаданные пагинации\n - `paginate: object` (required) — Вспомогательная информация\n - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `\"eyJxZCO2MiwiZGlyIjomSNYjIn3\"`\n - `prev_page: string` — Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка. Пример: `\"eyJxZCO2MiwiZGlyIjoiYXNjIn0\"`\n - `has_next: boolean` — Есть ли ещё данные на следующей странице. На последней странице — `false`. Пример: `true`\n - `has_prev: boolean` — Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`. Пример: `false`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": [\n {\n \"id\": 9111,\n \"name\": \"Design\",\n \"users_count\": 6\n }\n ],\n \"meta\": {\n \"paginate\": {\n \"next_page\": \"eyJxZCO2MiwiZGlyIjomSNYjIn3\",\n \"prev_page\": \"eyJxZCO2MiwiZGlyIjoiYXNjIn0\",\n \"has_next\": true,\n \"has_prev\": false\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/group_tags/{id}","summary":"Информация о теге","scope":"group_tags:read","plan":null,"auth":true,"paginated":false,"command":"pachca group-tags get","docLink":"https://dev.pachca.com/api/group-tags/get","describe":"# GET /group_tags/{id} — Информация о теге\n\n> **Скоуп:** `group_tags:read`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор тега\n\n## Эквивалентная команда\n\n```bash\npachca group-tags get 9111 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/group-tags/get\nПолная справка: `pachca api GET /group_tags/{id} --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/group_tags/{id}","description":"Информация о теге\n\nНазвание тега и число сотрудников в нём.\n\nВ `users_count` считаются только действующие сотрудники: приостановленные в счётчик не попадают, хотя в методе [Список сотрудников тега](GET /group_tags/{id}/users) остаются.","parameters":[{"name":"id","in":"path","description":"Идентификатор тега","required":true,"schema":{"type":"integer","format":"int32","example":9111},"example":9111}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Тег","required":["id","name","users_count"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор тега","example":9111},"name":{"type":"string","description":"Название тега","example":"Design","maxLength":255},"users_count":{"type":"integer","format":"int32","description":"Количество сотрудников, которые имеют этот тег","example":6}},"$ref":"#/components/schemas/GroupTag"}}}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"group_tags:read","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Информация о теге\n\n**Метод**: `GET`\n\n**Путь**: `/group_tags/{id}`\n\n> **Скоуп:** `group_tags:read`\n\nНазвание тега и число сотрудников в нём.\n\nВ `users_count` считаются только действующие сотрудники: приостановленные в счётчик не попадают, хотя в методе [Список сотрудников тега](GET /group_tags/{id}/users) остаются.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор тега\n\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/group_tags/9111\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Тег\n - `id: integer, int32` (required) — Идентификатор тега. Пример: `9111`\n - `name: string` (required, max length: 255) — Название тега. Пример: `\"Design\"`\n - `users_count: integer, int32` (required) — Количество сотрудников, которые имеют этот тег. Пример: `6`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 9111,\n \"name\": \"Design\",\n \"users_count\": 6\n }\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"PUT","path":"/group_tags/{id}","summary":"Редактирование тега","scope":"group_tags:write","plan":null,"auth":true,"paginated":false,"command":"pachca group-tags update","docLink":"https://dev.pachca.com/api/group-tags/update","describe":"# PUT /group_tags/{id} — Редактирование тега\n\n> **Скоуп:** `group_tags:write`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор тега\n\n## Тело запроса\n\n- `group_tag: object` (required)\n - `name: string` (required, max length: 255) — Название тега\n\n## Эквивалентная команда\n\n```bash\npachca group-tags update 9111 \\\n --name='Новое название тега' \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/group-tags/update\nПолная справка: `pachca api PUT /group_tags/{id} --docs` · схема: `--spec`\n","spec":{"method":"PUT","path":"/group_tags/{id}","description":"Редактирование тега\n\nПереименовывает тег. Состав сотрудников и привязки к чатам при этом не меняются: у всех, кто был в теге, он остаётся, только под новым названием.\n\nНазвание уникально в пространстве без учёта регистра и не может содержать `@`. Переименовывать теги могут владелец пространства и администратор, боту метод недоступен.","parameters":[{"name":"id","in":"path","description":"Идентификатор тега","required":true,"schema":{"type":"integer","format":"int32","example":9111},"example":9111}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на создание или редактирование тега","required":["group_tag"],"properties":{"group_tag":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Название тега","example":"Новое название тега","maxLength":255}}}},"$ref":"#/components/schemas/GroupTagRequest"}}}},"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Тег","required":["id","name","users_count"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор тега","example":9111},"name":{"type":"string","description":"Название тега","example":"Design","maxLength":255},"users_count":{"type":"integer","format":"int32","description":"Количество сотрудников, которые имеют этот тег","example":6}},"$ref":"#/components/schemas/GroupTag"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"group_tags:write","scopeRoles":["owner","admin"]},"paginated":false},"docs":"# Редактирование тега\n\n**Метод**: `PUT`\n\n**Путь**: `/group_tags/{id}`\n\n> **Скоуп:** `group_tags:write`\n\nПереименовывает тег. Состав сотрудников и привязки к чатам при этом не меняются: у всех, кто был в теге, он остаётся, только под новым названием.\n\nНазвание уникально в пространстве без учёта регистра и не может содержать `@`. Переименовывать теги могут владелец пространства и администратор, боту метод недоступен.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор тега\n\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `group_tag: object` (required)\n - `name: string` (required, max length: 255) — Название тега. Пример: `\"Новое название тега\"`\n\n### Пример\n\n```json\n{\n \"group_tag\": {\n \"name\": \"Новое название тега\"\n }\n}\n```\n\n## Пример запроса\n\n```bash\ncurl -X PUT \"https://api.pachca.com/api/shared/v1/group_tags/9111\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"group_tag\": {\n \"name\": \"Новое название тега\"\n }\n}'\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Тег\n - `id: integer, int32` (required) — Идентификатор тега. Пример: `9111`\n - `name: string` (required, max length: 255) — Название тега. Пример: `\"Design\"`\n - `users_count: integer, int32` (required) — Количество сотрудников, которые имеют этот тег. Пример: `6`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 9111,\n \"name\": \"Design\",\n \"users_count\": 6\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 409: The request conflicts with the current state of the server.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"DELETE","path":"/group_tags/{id}","summary":"Удаление тега","scope":"group_tags:write","plan":null,"auth":true,"paginated":false,"command":"pachca group-tags delete","docLink":"https://dev.pachca.com/api/group-tags/delete","describe":"# DELETE /group_tags/{id} — Удаление тега\n\n> **Скоуп:** `group_tags:write`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор тега\n\n## Эквивалентная команда\n\n```bash\npachca group-tags delete 9111 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/group-tags/delete\nПолная справка: `pachca api DELETE /group_tags/{id} --docs` · схема: `--spec`\n","spec":{"method":"DELETE","path":"/group_tags/{id}","description":"Удаление тега\n\nУбирает тег из пространства: он снимается со всех сотрудников и отвязывается от всех чатов.\n\nИз чатов при этом никто не выходит. Сотрудники, которых тег привёл в беседу или канал, остаются там обычными участниками, и дальше их состав тегом уже не поддерживается. Чтобы вывести их из конкретного чата, пользуйтесь методом [Исключение тега](DELETE /chats/{id}/group_tags/{tag_id}) до удаления самого тега.\n\nУдалять теги могут владелец пространства и администратор, боту метод недоступен.","parameters":[{"name":"id","in":"path","description":"Идентификатор тега","required":true,"schema":{"type":"integer","format":"int32","example":9111},"example":9111}],"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"group_tags:write","scopeRoles":["owner","admin"]},"paginated":false},"docs":"# Удаление тега\n\n**Метод**: `DELETE`\n\n**Путь**: `/group_tags/{id}`\n\n> **Скоуп:** `group_tags:write`\n\nУбирает тег из пространства: он снимается со всех сотрудников и отвязывается от всех чатов.\n\nИз чатов при этом никто не выходит. Сотрудники, которых тег привёл в беседу или канал, остаются там обычными участниками, и дальше их состав тегом уже не поддерживается. Чтобы вывести их из конкретного чата, пользуйтесь методом [Исключение тега](DELETE /chats/{id}/group_tags/{tag_id}) до удаления самого тега.\n\nУдалять теги могут владелец пространства и администратор, боту метод недоступен.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор тега\n\n\n## Пример запроса\n\n```bash\ncurl -X DELETE \"https://api.pachca.com/api/shared/v1/group_tags/9111\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/group_tags/{id}/users","summary":"Список сотрудников тега","scope":"group_tags:read","plan":null,"auth":true,"paginated":true,"command":"pachca group-tags list-users","docLink":"https://dev.pachca.com/api/group-tags/list-users","describe":"# GET /group_tags/{id}/users — Список сотрудников тега\n\n> **Скоуп:** `group_tags:read`\n\n> Пагинация: добавьте `--all` для автоматического обхода страниц\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор тега\n- `limit` — query: Количество возвращаемых сущностей за один запрос\n- `cursor` — query: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n## Эквивалентная команда\n\n```bash\n# Добавьте --all для автоматической пагинации\npachca group-tags list-users 9111 \\\n --limit=1 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/group-tags/list-users\nПолная справка: `pachca api GET /group_tags/{id}/users --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/group_tags/{id}/users","description":"Список сотрудников тега\n\nКто состоит в теге. Приостановленные сотрудники в списке приходят, хотя в `users_count` самого тега они не учтены. Удалённые не приходят, а боты, помеченные тегом, в выдачу попадают.\n\nСостав тега меняют в карточке сотрудника — [Редактирование сотрудника](PUT /users/{id}) с полем `list_tags`, по одному сотруднику за раз.","parameters":[{"name":"id","in":"path","description":"Идентификатор тега","required":true,"schema":{"type":"integer","format":"int32","example":9111},"example":9111},{"name":"limit","in":"query","description":"Количество возвращаемых сущностей за один запрос","required":false,"schema":{"type":"integer","format":"int32","default":50,"example":1,"minimum":1,"maximum":50},"example":1,"explode":false},{"name":"cursor","in":"query","description":"Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)","required":false,"schema":{"type":"string","example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9"},"example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9","explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными и пагинацией","required":["data","meta"],"properties":{"data":{"type":"array","items":{"type":"object","description":"Сотрудник","required":["id","first_name","last_name","nickname","email","phone_number","department","title","role","suspended","invite_status","inviter_id","list_tags","custom_properties","user_status","bot","sso","created_at","last_activity_at","time_zone","image_url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор пользователя","example":12},"first_name":{"type":"string","description":"Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`).","example":"Олег","nullable":true,"maxLength":255},"last_name":{"type":"string","description":"Фамилия. Если не заполнена, возвращается `null` или пустая строка.","example":"Петров","nullable":true,"maxLength":255},"nickname":{"type":"string","description":"Имя пользователя","example":"olegpetrov","maxLength":255},"email":{"type":"string","description":"Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда.","example":"olegp@example.com","nullable":true,"maxLength":255},"phone_number":{"type":"string","description":"Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда.","example":"+79001234567","nullable":true,"maxLength":255},"department":{"type":"string","description":"Департамент. Если не указан, возвращается `null` или пустая строка.","example":"Продукт","nullable":true,"maxLength":255},"title":{"type":"string","description":"Должность. Если не указана, возвращается `null` или пустая строка.","example":"CIO","nullable":true},"role":{"description":"Уровень доступа","example":"admin","allOf":[{"type":"string","description":"Роль пользователя в системе","enum":["admin","user","multi_guest","guest"],"x-enum-descriptions":{"admin":"Администратор","user":"Сотрудник","multi_guest":"Мульти-гость","guest":"Гость"},"$ref":"#/components/schemas/UserRole"}]},"suspended":{"type":"boolean","description":"Деактивация пользователя","example":false},"invite_status":{"description":"Статус приглашения","example":"confirmed","allOf":[{"type":"string","description":"Статус приглашения пользователя","enum":["confirmed","sent"],"x-enum-descriptions":{"confirmed":"Принято","sent":"Отправлено"},"$ref":"#/components/schemas/InviteStatus"}]},"inviter_id":{"type":"integer","format":"int32","description":"Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён.","example":185,"nullable":true},"list_tags":{"type":"array","description":"Массив тегов, привязанных к сотруднику","example":["Product","Design"],"items":{"type":"string"}},"custom_properties":{"type":"array","description":"Дополнительные поля сотрудника","items":{"type":"object","description":"Дополнительное поле","required":["id","name","data_type","value"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор поля","example":1678},"name":{"type":"string","description":"Название поля","example":"Город","maxLength":32},"data_type":{"description":"Тип поля","example":"string","allOf":[{"type":"string","description":"Тип данных дополнительного поля","enum":["string","number","date","link"],"x-enum-descriptions":{"string":"Строковое значение","number":"Числовое значение","date":"Дата","link":"Ссылка"},"$ref":"#/components/schemas/CustomPropertyDataType"}]},"value":{"type":"string","description":"Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601.","example":"Санкт-Петербург","nullable":true,"maxLength":768}},"$ref":"#/components/schemas/CustomProperty"}},"user_status":{"type":"object","description":"Статус. `null`, если у сотрудника не установлен статус.","nullable":true,"allOf":[{"type":"object","description":"Статус пользователя","required":["emoji","title","expires_at","is_away","away_message"],"properties":{"emoji":{"type":"string","description":"Emoji символ статуса","example":"🎮"},"title":{"type":"string","description":"Текст статуса","example":"Очень занят","maxLength":50},"expires_at":{"type":"string","format":"date-time","description":"Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически.","example":"2024-04-08T10:00:00.000Z","nullable":true},"is_away":{"type":"boolean","description":"Режим «Нет на месте»","example":false},"away_message":{"type":"object","description":"Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.","required":["text"],"nullable":true,"properties":{"text":{"type":"string","description":"Текст сообщения","example":"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.","maxLength":1024}}}},"$ref":"#/components/schemas/UserStatus"}]},"bot":{"type":"boolean","description":"Является ботом","example":false},"sso":{"type":"boolean","description":"Использует ли пользователь SSO","example":false},"created_at":{"type":"string","format":"date-time","description":"Дата создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2020-06-08T09:32:57.000Z"},"last_activity_at":{"type":"string","format":"date-time","description":"Дата последней активности пользователя (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если сотрудник ещё ни разу не заходил в Пачку — в этом случае `invite_status` возвращает `sent`.","example":"2025-01-20T13:40:07.000Z","nullable":true},"time_zone":{"type":"string","description":"Часовой пояс пользователя. `null`, если сотрудник не задал личный часовой пояс — тогда применяется часовой пояс компании.","example":"Europe/Moscow","nullable":true,"maxLength":32},"image_url":{"type":"string","description":"Ссылка на скачивание аватарки пользователя. `null`, если аватарка не загружена.","example":"https://app.pachca.com/users/12/photo.jpg","nullable":true}},"$ref":"#/components/schemas/User"}},"meta":{"type":"object","description":"Метаданные пагинации","required":["paginate"],"properties":{"paginate":{"type":"object","description":"Вспомогательная информация","required":["next_page"],"properties":{"next_page":{"type":"string","description":"Курсор пагинации следующей страницы","example":"eyJxZCO2MiwiZGlyIjomSNYjIn3"},"prev_page":{"type":"string","description":"Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка.","example":"eyJxZCO2MiwiZGlyIjoiYXNjIn0"},"has_next":{"type":"boolean","description":"Есть ли ещё данные на следующей странице. На последней странице — `false`.","example":true},"has_prev":{"type":"boolean","description":"Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`.","example":false}}}},"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"group_tags:read","scopeRoles":["owner","admin","user","bot"]},"paginated":true},"docs":"# Список сотрудников тега\n\n**Метод**: `GET`\n\n**Путь**: `/group_tags/{id}/users`\n\n> **Скоуп:** `group_tags:read`\n\nКто состоит в теге. Приостановленные сотрудники в списке приходят, хотя в `users_count` самого тега они не учтены. Удалённые не приходят, а боты, помеченные тегом, в выдачу попадают.\n\nСостав тега меняют в карточке сотрудника — [Редактирование сотрудника](PUT /users/{id}) с полем `list_tags`, по одному сотруднику за раз.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор тега\n\n### Query параметры\n\n- `limit: integer, int32` (default: 50) — Количество возвращаемых сущностей за один запрос\n- `cursor: string` — Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n\n## Пример запроса\n\n```bash\n# Для получения следующей страницы используйте cursor из meta.paginate.next_page\ncurl \"https://api.pachca.com/api/shared/v1/group_tags/9111/users?limit=1\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: array of object` (required)\n - `id: integer, int32` (required) — Идентификатор пользователя. Пример: `12`\n - `first_name: string` (required, nullable, max length: 255) — Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`). Пример: `\"Олег\"`\n - `last_name: string` (required, nullable, max length: 255) — Фамилия. Если не заполнена, возвращается `null` или пустая строка. Пример: `\"Петров\"`\n - `nickname: string` (required, max length: 255) — Имя пользователя. Пример: `\"olegpetrov\"`\n - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `\"olegp@example.com\"`\n - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `\"+79001234567\"`\n - `department: string` (required, nullable, max length: 255) — Департамент. Если не указан, возвращается `null` или пустая строка. Пример: `\"Продукт\"`\n - `title: string` (required, nullable) — Должность. Если не указана, возвращается `null` или пустая строка. Пример: `\"CIO\"`\n - `role: string` (required) — Уровень доступа\n Значения: `admin` — Администратор, `user` — Сотрудник, `multi_guest` — Мульти-гость, `guest` — Гость\n - `suspended: boolean` (required) — Деактивация пользователя. Пример: `false`\n - `invite_status: string` (required) — Статус приглашения\n Значения: `confirmed` — Принято, `sent` — Отправлено\n - `inviter_id: integer, int32` (required, nullable) — Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён. Пример: `185`\n - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Пример: `[\"Product\",\"Design\"]`\n - `custom_properties: array of object` (required) — Дополнительные поля сотрудника\n - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678`\n - `name: string` (required, max length: 32) — Название поля. Пример: `\"Город\"`\n - `data_type: string` (required) — Тип поля\n Значения: `string` — Строковое значение, `number` — Числовое значение, `date` — Дата, `link` — Ссылка\n - `value: string` (required, nullable, max length: 768) — Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601. Пример: `\"Санкт-Петербург\"`\n - `user_status: object` (required) — Статус. `null`, если у сотрудника не установлен статус.\n - `emoji: string` (required) — Emoji символ статуса. Пример: `\"🎮\"`\n - `title: string` (required, max length: 50) — Текст статуса. Пример: `\"Очень занят\"`\n - `expires_at: date-time` (required, nullable) — Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически. Пример: `\"2024-04-08T10:00:00.000Z\"`\n - `is_away: boolean` (required) — Режим «Нет на месте». Пример: `false`\n - `away_message: object` (required, nullable) — Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.\n - `text: string` (required, max length: 1024) — Текст сообщения. Пример: `\"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"`\n - `bot: boolean` (required) — Является ботом. Пример: `false`\n - `sso: boolean` (required) — Использует ли пользователь SSO. Пример: `false`\n - `created_at: date-time` (required) — Дата создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2020-06-08T09:32:57.000Z\"`\n - `last_activity_at: date-time` (required, nullable) — Дата последней активности пользователя (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если сотрудник ещё ни разу не заходил в Пачку — в этом случае `invite_status` возвращает `sent`. Пример: `\"2025-01-20T13:40:07.000Z\"`\n - `time_zone: string` (required, nullable, max length: 32) — Часовой пояс пользователя. `null`, если сотрудник не задал личный часовой пояс — тогда применяется часовой пояс компании. Пример: `\"Europe/Moscow\"`\n - `image_url: string` (required, nullable) — Ссылка на скачивание аватарки пользователя. `null`, если аватарка не загружена. Пример: `\"https://app.pachca.com/users/12/photo.jpg\"`\n- `meta: object` (required) — Метаданные пагинации\n - `paginate: object` (required) — Вспомогательная информация\n - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `\"eyJxZCO2MiwiZGlyIjomSNYjIn3\"`\n - `prev_page: string` — Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка. Пример: `\"eyJxZCO2MiwiZGlyIjoiYXNjIn0\"`\n - `has_next: boolean` — Есть ли ещё данные на следующей странице. На последней странице — `false`. Пример: `true`\n - `has_prev: boolean` — Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`. Пример: `false`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": [\n {\n \"id\": 12,\n \"first_name\": \"Олег\",\n \"last_name\": \"Петров\",\n \"nickname\": \"olegpetrov\",\n \"email\": \"olegp@example.com\",\n \"phone_number\": \"+79001234567\",\n \"department\": \"Продукт\",\n \"title\": \"CIO\",\n \"role\": \"admin\",\n \"suspended\": false,\n \"invite_status\": \"confirmed\",\n \"inviter_id\": 185,\n \"list_tags\": [\n \"Product\",\n \"Design\"\n ],\n \"custom_properties\": [\n {\n \"id\": 1678,\n \"name\": \"Город\",\n \"data_type\": \"string\",\n \"value\": \"Санкт-Петербург\"\n }\n ],\n \"user_status\": {\n \"emoji\": \"🎮\",\n \"title\": \"Очень занят\",\n \"expires_at\": \"2024-04-08T10:00:00.000Z\",\n \"is_away\": false,\n \"away_message\": {\n \"text\": \"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"\n }\n },\n \"bot\": false,\n \"sso\": false,\n \"created_at\": \"2020-06-08T09:32:57.000Z\",\n \"last_activity_at\": \"2025-01-20T13:40:07.000Z\",\n \"time_zone\": \"Europe/Moscow\",\n \"image_url\": \"https://app.pachca.com/users/12/photo.jpg\"\n }\n ],\n \"meta\": {\n \"paginate\": {\n \"next_page\": \"eyJxZCO2MiwiZGlyIjomSNYjIn3\",\n \"prev_page\": \"eyJxZCO2MiwiZGlyIjoiYXNjIn0\",\n \"has_next\": true,\n \"has_prev\": false\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"POST","path":"/messages","summary":"Новое сообщение","scope":"messages:create","plan":null,"auth":true,"paginated":false,"command":"pachca messages create","docLink":"https://dev.pachca.com/api/messages/create","describe":"# POST /messages — Новое сообщение\n\n> **Скоуп:** `messages:create`\n\n## Тело запроса\n\n- `message: object` (required) — Собранный объект параметров создаваемого сообщения\n - `entity_type: string` — Тип сущности. Регистр значения не учитывается. Значение вне списка возвращает `400` с кодом `invalid`.\n Значения: `discussion` — Беседа или канал, `thread` — Тред, `user` — Пользователь\n - `entity_id: integer, int32` (required) — Идентификатор того, что названо в `entity_type`: беседы или канала, треда либо сотрудника.\n - `content: string` (required) — Текст сообщения. Поддерживает упоминания: `@nickname` или `<@user_id>` (будет автоматически преобразовано в `@nickname`).\n - `files: array of object` — Прикрепляемые файлы\n - `key: string` (required, max length: 1000) — Путь к файлу, полученный в методе [Загрузка файла](POST /direct_url)\n - `name: string` (required, max length: 255) — Название файла, которое вы хотите отображать пользователю. Расширение должно совпадать с расширением файла в `key`, иначе ответ будет 422 с кодом `wrong_params`.\n - `file_type: string` (required) — Тип файла\n Значения: `file` — Обычный файл, `image` — Изображение, `audio` — Аудиофайл, `voice` — Голосовое сообщение, `video` — Видеофайл\n - `size: integer, int64` (required) — Размер файла в байтах, отображаемый пользователю\n - `width: integer, int32` — Ширина изображения в px (используется в случае, если file_type указан как image)\n - `height: integer, int32` — Высота изображения в px (используется в случае, если file_type указан как image)\n - `duration_ms: integer, int32` (min: 1) — Длительность в миллисекундах. Обязательно для голосовых сообщений (`file_type` — `voice`), для других типов не используется.\n - `waveform: string` (max length: 256) — Форма волны для визуализации голосового сообщения. Обязательно для голосовых сообщений (`file_type` — `voice`), для других типов не используется.\n - `buttons: array of array` (max items: 32) — Массив строк, каждая из которых представлена массивом кнопок. Максимум 100 кнопок у сообщения, до 8 кнопок в строке.\n - `parent_message_id: integer, int32` — Идентификатор сообщения, на которое отвечаете. Ответ появится прямо в ленте чата, а не в треде: для треда отправляйте сообщение с `entity_type: \"thread\"`.\n - `display_avatar_url: string` (max length: 255) — Ссылка на специальную аватарку отправителя для этого сообщения. Использование этого поля возможно только с access_token бота.\n - `display_name: string` (max length: 255) — Полное специальное имя отправителя для этого сообщения. Использование этого поля возможно только с access_token бота.\n - `skip_invite_mentions: boolean` (default: false) — Пропуск добавления упоминаемых пользователей в тред. Работает только при отправке сообщения в тред.\n- `link_preview: boolean` (default: false) — Отображение предпросмотра первой найденной ссылки в тексте сообщения\n\n## Эквивалентная команда\n\n```bash\npachca messages create \\\n --entity-id=334 \\\n --content='Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)' \\\n --files='[{\"key\":\"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png\",\"name\":\"logo.png\",\"file_type\":\"image\",\"size\":12345,\"width\":800,\"height\":600,\"duration_ms\":5400,\"waveform\":\"4,8,12,20,16,10,6,3\"}]' \\\n --buttons='[[{\"text\":\"Подробнее\",\"url\":\"https://example.com/details\"},{\"text\":\"Отлично!\",\"data\":\"awesome\"}]]' \\\n --parent-message-id=194270 \\\n --display-avatar-url=https://example.com/avatar.png \\\n --display-name='Бот Поддержки' \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/messages/create\nПолная справка: `pachca api POST /messages --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/messages","description":"Новое сообщение\n\nОтправляет сообщение в беседу или канал, личное сообщение сотруднику или комментарий в тред.\n\nПри использовании `entity_type: \"discussion\"` (или просто без указания `entity_type`) допускается отправка любого `chat_id` в поле `entity_id`. То есть сообщение можно отправить, зная только идентификатор чата. Сообщение в тред можно отправить и по идентификатору самого треда, а личное — по идентификатору сотрудника, но тогда нужно указать соответствующий `entity_type`: `thread` или `user`.\n\nЛичный чат для этого создавать не требуется: он появится сам, если между вами ещё не было переписки. Между двумя сотрудниками может быть только один личный чат. Со своим собственным идентификатором сообщение уйдёт в чат с самим собой — туда же, куда сотрудник пишет заметки себе.\n\nТекст в поле `content` разбирается как markdown: жирный, курсив, зачёркнутый, строчный код, блок кода и ссылки. Списки и таблицы не разбираются — `-`, `1.` и `|` остаются как есть, у цитаты пропадает `>`, а строка с решёткой и пробелом становится жирной. Подробности — в разделе [Форматирование текста](/guides/markdown).\n\n`@all` упоминает всех участников чата, `@here` — тех, кто сейчас в сети, а `@` с названием тега без пробелов — сотрудников этого тега. В треде упоминание работает ещё и как приглашение: упомянутого сотрудника, которого в треде нет, Пачка туда добавляет, и он получает доступ к треду и родительскому сообщению. Чтобы этого не происходило, передайте `skip_invite_mentions: true`. В беседе и канале упоминание никого не добавляет, и этот параметр там ничего не меняет.\n\nПод текстом сообщения можно показать кнопки — массив `buttons`, где каждый вложенный массив это ряд. Работают они только у сообщений, отправленных токеном бота: нажатие на кнопку с `data` приходит событием `button_click` тому самому боту, а вместе с ним `trigger_id` — на открытие формы по нему есть 3 секунды, метод [Открытие представления](POST /views/open). Кнопка с `url` просто ведёт по ссылке и события не создаёт. Подробности в разделе [Кнопки](/guides/buttons).\n\nБот может подписать сообщение чужим именем и аватаром: `display_name` и `display_avatar_url` меняют отправителя только у этого сообщения. Бейдж «Бот» остаётся, а в профиле отправителя видно настоящего бота. Так показывают автора из другой системы, когда переносят в Пачку чужую переписку. С личным токеном поля недоступны, ответ `403`. Подробности — в разделе [Боты](/guides/bots/overview).\n\nК сообщению можно приложить не больше 10 файлов. Превью ссылки строится, только если передать `link_preview` в корне тела запроса.\n\nДействует суточный предел на число сообщений в один чат от одного отправителя. При превышении метод отвечает `429`, а в заголовке `Retry-After` приходит пауза до следующей попытки. Значения пределов — в разделе [Лимиты](/api/limits).","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на создание сообщения","required":["message"],"properties":{"message":{"type":"object","description":"Собранный объект параметров создаваемого сообщения","required":["entity_id","content"],"properties":{"entity_type":{"description":"Тип сущности. Регистр значения не учитывается. Значение вне списка возвращает `400` с кодом `invalid`.","default":"discussion","example":"discussion","allOf":[{"type":"string","description":"Тип сущности для сообщений","enum":["discussion","thread","user"],"x-enum-descriptions":{"discussion":"Беседа или канал","thread":"Тред","user":"Пользователь"},"$ref":"#/components/schemas/MessageEntityType"}]},"entity_id":{"type":"integer","format":"int32","description":"Идентификатор того, что названо в `entity_type`: беседы или канала, треда либо сотрудника.","example":334},"content":{"type":"string","description":"Текст сообщения. Поддерживает упоминания: `@nickname` или `<@user_id>` (будет автоматически преобразовано в `@nickname`).","example":"Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)"},"files":{"type":"array","description":"Прикрепляемые файлы","items":{"type":"object","required":["key","name","file_type","size"],"properties":{"key":{"type":"string","description":"Путь к файлу, полученный в методе [Загрузка файла](POST /direct_url)","example":"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png","maxLength":1000},"name":{"type":"string","description":"Название файла, которое вы хотите отображать пользователю. Расширение должно совпадать с расширением файла в `key`, иначе ответ будет 422 с кодом `wrong_params`.","example":"logo.png","maxLength":255},"file_type":{"description":"Тип файла","example":"image","allOf":[{"type":"string","description":"Тип файла","enum":["file","image","audio","voice","video"],"x-enum-descriptions":{"file":"Обычный файл","image":"Изображение","audio":"Аудиофайл","voice":"Голосовое сообщение","video":"Видеофайл"},"$ref":"#/components/schemas/FileType"}]},"size":{"type":"integer","format":"int64","description":"Размер файла в байтах, отображаемый пользователю","example":12345},"width":{"type":"integer","format":"int32","description":"Ширина изображения в px (используется в случае, если file_type указан как image)","example":800},"height":{"type":"integer","format":"int32","description":"Высота изображения в px (используется в случае, если file_type указан как image)","example":600},"duration_ms":{"type":"integer","format":"int32","description":"Длительность в миллисекундах. Обязательно для голосовых сообщений (`file_type` — `voice`), для других типов не используется.","example":5400,"minimum":1},"waveform":{"type":"string","description":"Форма волны для визуализации голосового сообщения. Обязательно для голосовых сообщений (`file_type` — `voice`), для других типов не используется.","example":"4,8,12,20,16,10,6,3","maxLength":256}}}},"buttons":{"type":"array","description":"Массив строк, каждая из которых представлена массивом кнопок. Максимум 100 кнопок у сообщения, до 8 кнопок в строке.","example":[[{"text":"Подробнее","url":"https://example.com/details"},{"text":"Отлично!","data":"awesome"}]],"maxItems":32,"items":{"type":"array","items":{"type":"object","description":"Кнопка","required":["text"],"properties":{"text":{"type":"string","description":"Текст, отображаемый на кнопке","example":"Подробнее","maxLength":255},"url":{"type":"string","description":"Ссылка, которая будет открыта по нажатию кнопки. У кнопки должно быть заполнено ровно одно из полей `url` и `data`.","example":"https://example.com/details","maxLength":1024},"data":{"type":"string","description":"Данные, которые будут отправлены в исходящем вебхуке по нажатию кнопки. У кнопки должно быть заполнено ровно одно из полей `url` и `data`.","example":"awesome","maxLength":255}},"$ref":"#/components/schemas/Button"}}},"parent_message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, на которое отвечаете. Ответ появится прямо в ленте чата, а не в треде: для треда отправляйте сообщение с `entity_type: \"thread\"`.","example":194270},"display_avatar_url":{"type":"string","description":"Ссылка на специальную аватарку отправителя для этого сообщения. Использование этого поля возможно только с access_token бота.","example":"https://example.com/avatar.png","maxLength":255},"display_name":{"type":"string","description":"Полное специальное имя отправителя для этого сообщения. Использование этого поля возможно только с access_token бота.","example":"Бот Поддержки","maxLength":255},"skip_invite_mentions":{"type":"boolean","description":"Пропуск добавления упоминаемых пользователей в тред. Работает только при отправке сообщения в тред.","default":false,"example":false}}},"link_preview":{"type":"boolean","description":"Отображение предпросмотра первой найденной ссылки в тексте сообщения","default":false,"example":false}},"$ref":"#/components/schemas/MessageCreateRequest"}}}},"responses":{"201":{"description":"The request has succeeded and a new resource has been created as a result.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Сообщение","required":["id","entity_type","entity_id","chat_id","root_chat_id","content","user_id","created_at","url","files","voice_content","buttons","thread","forwarding","parent_message_id","changed_at","deleted_at"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор сообщения","example":194275},"entity_type":{"description":"Тип сущности, к которой относится сообщение","example":"discussion","allOf":[{"type":"string","description":"Тип сущности для сообщений","enum":["discussion","thread","user"],"x-enum-descriptions":{"discussion":"Беседа или канал","thread":"Тред","user":"Пользователь"},"$ref":"#/components/schemas/MessageEntityType"}]},"entity_id":{"type":"integer","format":"int32","description":"Идентификатор сущности, к которой относится сообщение (беседы/канала, треда или пользователя)","example":334},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором находится сообщение","example":334},"root_chat_id":{"type":"integer","format":"int32","description":"Идентификатор корневого чата. Для сообщений в тредах — идентификатор чата, в котором был создан тред. Для обычных сообщений совпадает с `chat_id`.","example":334},"content":{"type":"string","description":"Текст сообщения","example":"Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)"},"user_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, создавшего сообщение","example":12},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2021-08-28T15:57:23.000Z"},"url":{"type":"string","description":"Прямая ссылка на сообщение","example":"https://app.pachca.com/chats/334?message=194275"},"files":{"type":"array","description":"Прикрепленные файлы","items":{"type":"object","description":"Файл","required":["id","key","name","file_type","url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор файла","example":3560},"key":{"type":"string","description":"Путь к файлу","example":"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png"},"name":{"type":"string","description":"Название файла с расширением","example":"congrat.png"},"file_type":{"description":"Тип файла","example":"image","allOf":[{"type":"string","description":"Тип файла","enum":["file","image","audio","voice","video"],"x-enum-descriptions":{"file":"Обычный файл","image":"Изображение","audio":"Аудиофайл","voice":"Голосовое сообщение","video":"Видеофайл"},"$ref":"#/components/schemas/FileType"}]},"url":{"type":"string","description":"Ссылка на скачивание файла. Обычно ведёт прямо в хранилище и действует до 7 дней, а оставшийся срок может быть меньше — если такая ссылка вернула `403`, запросите сообщение заново и получите свежую. Если в пространстве включено шифрование или задан безопасный контур, ссылка ведёт на [Скачивание файла](GET /files/{id}): забирать такой файл нужно с заголовком `Authorization`, а токену нужен скоуп `files:read`.","example":"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8"},"width":{"type":"integer","format":"int32","description":"Ширина изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке.","example":1920,"nullable":true},"height":{"type":"integer","format":"int32","description":"Высота изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке.","example":1080,"nullable":true},"duration_ms":{"type":"integer","format":"int32","description":"Длительность в миллисекундах у голосового, аудио- и видеофайла. `null` у остальных файлов и если длительность не была передана при загрузке.","example":5400,"nullable":true}},"$ref":"#/components/schemas/File"}},"voice_content":{"type":"object","description":"Данные голосового сообщения. Заполняется только для голосовых сообщений (`file_type` файла — `voice`), иначе `null`.","nullable":true,"allOf":[{"type":"object","description":"Данные голосового сообщения","required":["duration_ms","waveform","transcript"],"properties":{"duration_ms":{"type":"integer","format":"int32","description":"Длительность голосового сообщения в миллисекундах","example":5400},"waveform":{"type":"string","description":"Форма волны (амплитуды) для визуализации голосового сообщения","example":"4,8,12,20,16,10,6,3"},"transcript":{"type":"string","description":"Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна.","example":"Привет, посмотри пожалуйста последний отчёт","nullable":true}},"$ref":"#/components/schemas/VoiceContent"}]},"buttons":{"type":"array","description":"Массив строк, каждая из которых представлена массивом кнопок. `null`, если сообщение отправлено без кнопок.","nullable":true,"items":{"type":"array","items":{"type":"object","description":"Кнопка","required":["text"],"properties":{"text":{"type":"string","description":"Текст, отображаемый на кнопке","example":"Подробнее","maxLength":255},"url":{"type":"string","description":"Ссылка, которая будет открыта по нажатию кнопки. У кнопки должно быть заполнено ровно одно из полей `url` и `data`.","example":"https://example.com/details","maxLength":1024},"data":{"type":"string","description":"Данные, которые будут отправлены в исходящем вебхуке по нажатию кнопки. У кнопки должно быть заполнено ровно одно из полей `url` и `data`.","example":"awesome","maxLength":255}},"$ref":"#/components/schemas/Button"}}},"thread":{"type":"object","description":"Тред, созданный к этому сообщению. `null`, если тред не создан, а также у сообщений, которые сами находятся внутри треда.","required":["id","chat_id"],"nullable":true,"properties":{"id":{"type":"integer","format":"int64","description":"Идентификатор треда","example":265142},"chat_id":{"type":"integer","format":"int64","description":"Идентификатор чата треда","example":2637266155}}},"forwarding":{"type":"object","description":"Информация о пересланном сообщении. `null`, если сообщение не является пересланным.","nullable":true,"allOf":[{"type":"object","description":"Информация о пересланном сообщении","required":["original_message_id","original_chat_id","author_id","original_created_at","original_thread_id","original_thread_message_id","original_thread_parent_chat_id"],"properties":{"original_message_id":{"type":"integer","format":"int32","description":"Идентификатор оригинального сообщения","example":194275},"original_chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором находится оригинальное сообщение","example":334},"author_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, создавшего оригинальное сообщение","example":12},"original_created_at":{"type":"string","format":"date-time","description":"Дата и время создания оригинального сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2025-01-15T10:30:00.000Z"},"original_thread_id":{"type":"integer","format":"int32","description":"Идентификатор треда, в котором находится оригинальное сообщение","example":null,"nullable":true},"original_thread_message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, к которому был создан тред, в котором находится оригинальное сообщение. `null`, если оригинальное сообщение было не в треде или тред создан без привязки к сообщению.","example":null,"nullable":true},"original_thread_parent_chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата сообщения, к которому был создан тред, в котором находится оригинальное сообщение. `null`, если оригинальное сообщение было не в треде или тред создан без привязки к сообщению.","example":null,"nullable":true}},"$ref":"#/components/schemas/Forwarding"}]},"parent_message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, к которому написан ответ. `null`, если сообщение не является ответом на другое сообщение.","example":null,"nullable":true},"display_avatar_url":{"type":"string","description":"Ссылка на аватарку отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. `null`, если бот не переопределял значение при отправке.","example":null,"nullable":true},"display_name":{"type":"string","description":"Полное имя отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. `null`, если бот не переопределял значение при отправке.","example":null,"nullable":true},"changed_at":{"type":"string","format":"date-time","description":"Дата и время последнего изменения сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. У неотредактированного сообщения совпадает с датой создания. `null` у сообщений, отправленных до появления этого поля.","example":"2021-08-28T16:10:00.000Z","nullable":true},"deleted_at":{"type":"string","format":"date-time","description":"Дата и время удаления сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null` у неудалённых сообщений. В списке сообщений удалённые не возвращаются.","example":null,"nullable":true}},"$ref":"#/components/schemas/Message"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}},"headers":{"Retry-After":{"schema":{"type":"integer","format":"int32"}}}}},"requirements":{"scope":"messages:create","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Новое сообщение\n\n**Метод**: `POST`\n\n**Путь**: `/messages`\n\n> **Скоуп:** `messages:create`\n\nОтправляет сообщение в беседу или канал, личное сообщение сотруднику или комментарий в тред.\n\nПри использовании `entity_type: \"discussion\"` (или просто без указания `entity_type`) допускается отправка любого `chat_id` в поле `entity_id`. То есть сообщение можно отправить, зная только идентификатор чата. Сообщение в тред можно отправить и по идентификатору самого треда, а личное — по идентификатору сотрудника, но тогда нужно указать соответствующий `entity_type`: `thread` или `user`.\n\nЛичный чат для этого создавать не требуется: он появится сам, если между вами ещё не было переписки. Между двумя сотрудниками может быть только один личный чат. Со своим собственным идентификатором сообщение уйдёт в чат с самим собой — туда же, куда сотрудник пишет заметки себе.\n\nТекст в поле `content` разбирается как markdown: жирный, курсив, зачёркнутый, строчный код, блок кода и ссылки. Списки и таблицы не разбираются — `-`, `1.` и `|` остаются как есть, у цитаты пропадает `>`, а строка с решёткой и пробелом становится жирной. Подробности — в разделе [Форматирование текста](/guides/markdown).\n\n`@all` упоминает всех участников чата, `@here` — тех, кто сейчас в сети, а `@` с названием тега без пробелов — сотрудников этого тега. В треде упоминание работает ещё и как приглашение: упомянутого сотрудника, которого в треде нет, Пачка туда добавляет, и он получает доступ к треду и родительскому сообщению. Чтобы этого не происходило, передайте `skip_invite_mentions: true`. В беседе и канале упоминание никого не добавляет, и этот параметр там ничего не меняет.\n\nПод текстом сообщения можно показать кнопки — массив `buttons`, где каждый вложенный массив это ряд. Работают они только у сообщений, отправленных токеном бота: нажатие на кнопку с `data` приходит событием `button_click` тому самому боту, а вместе с ним `trigger_id` — на открытие формы по нему есть 3 секунды, метод [Открытие представления](POST /views/open). Кнопка с `url` просто ведёт по ссылке и события не создаёт. Подробности в разделе [Кнопки](/guides/buttons).\n\nБот может подписать сообщение чужим именем и аватаром: `display_name` и `display_avatar_url` меняют отправителя только у этого сообщения. Бейдж «Бот» остаётся, а в профиле отправителя видно настоящего бота. Так показывают автора из другой системы, когда переносят в Пачку чужую переписку. С личным токеном поля недоступны, ответ `403`. Подробности — в разделе [Боты](/guides/bots/overview).\n\nК сообщению можно приложить не больше 10 файлов. Превью ссылки строится, только если передать `link_preview` в корне тела запроса.\n\nДействует суточный предел на число сообщений в один чат от одного отправителя. При превышении метод отвечает `429`, а в заголовке `Retry-After` приходит пауза до следующей попытки. Значения пределов — в разделе [Лимиты](/api/limits).\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `message: object` (required) — Собранный объект параметров создаваемого сообщения\n - `entity_type: string` — Тип сущности. Регистр значения не учитывается. Значение вне списка возвращает `400` с кодом `invalid`.\n Значения: `discussion` — Беседа или канал, `thread` — Тред, `user` — Пользователь\n - `entity_id: integer, int32` (required) — Идентификатор того, что названо в `entity_type`: беседы или канала, треда либо сотрудника. Пример: `334`\n - `content: string` (required) — Текст сообщения. Поддерживает упоминания: `@nickname` или `<@user_id>` (будет автоматически преобразовано в `@nickname`). Пример: `\"Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)\"`\n - `files: array of object` — Прикрепляемые файлы\n - `key: string` (required, max length: 1000) — Путь к файлу, полученный в методе [Загрузка файла](POST /direct_url). Пример: `\"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png\"`\n - `name: string` (required, max length: 255) — Название файла, которое вы хотите отображать пользователю. Расширение должно совпадать с расширением файла в `key`, иначе ответ будет 422 с кодом `wrong_params`. Пример: `\"logo.png\"`\n - `file_type: string` (required) — Тип файла\n Значения: `file` — Обычный файл, `image` — Изображение, `audio` — Аудиофайл, `voice` — Голосовое сообщение, `video` — Видеофайл\n - `size: integer, int64` (required) — Размер файла в байтах, отображаемый пользователю. Пример: `12345`\n - `width: integer, int32` — Ширина изображения в px (используется в случае, если file_type указан как image). Пример: `800`\n - `height: integer, int32` — Высота изображения в px (используется в случае, если file_type указан как image). Пример: `600`\n - `duration_ms: integer, int32` (min: 1) — Длительность в миллисекундах. Обязательно для голосовых сообщений (`file_type` — `voice`), для других типов не используется. Пример: `5400`\n - `waveform: string` (max length: 256) — Форма волны для визуализации голосового сообщения. Обязательно для голосовых сообщений (`file_type` — `voice`), для других типов не используется. Пример: `\"4,8,12,20,16,10,6,3\"`\n - `buttons: array of array` (max items: 32) — Массив строк, каждая из которых представлена массивом кнопок. Максимум 100 кнопок у сообщения, до 8 кнопок в строке. Пример: `[[{\"text\":\"Подробнее\",\"url\":\"https://example.com/details\"},{\"text\":\"Отлично!\",\"data\":\"awesome\"}]]`\n - `parent_message_id: integer, int32` — Идентификатор сообщения, на которое отвечаете. Ответ появится прямо в ленте чата, а не в треде: для треда отправляйте сообщение с `entity_type: \"thread\"`. Пример: `194270`\n - `display_avatar_url: string` (max length: 255) — Ссылка на специальную аватарку отправителя для этого сообщения. Использование этого поля возможно только с access_token бота. Пример: `\"https://example.com/avatar.png\"`\n - `display_name: string` (max length: 255) — Полное специальное имя отправителя для этого сообщения. Использование этого поля возможно только с access_token бота. Пример: `\"Бот Поддержки\"`\n - `skip_invite_mentions: boolean` (default: false) — Пропуск добавления упоминаемых пользователей в тред. Работает только при отправке сообщения в тред. Пример: `false`\n- `link_preview: boolean` (default: false) — Отображение предпросмотра первой найденной ссылки в тексте сообщения. Пример: `false`\n\n### Пример\n\n```json\n{\n \"message\": {\n \"entity_id\": 334,\n \"content\": \"Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)\",\n \"files\": [\n {\n \"key\": \"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png\",\n \"name\": \"logo.png\",\n \"file_type\": \"image\",\n \"size\": 12345,\n \"width\": 800,\n \"height\": 600,\n \"duration_ms\": 5400,\n \"waveform\": \"4,8,12,20,16,10,6,3\"\n }\n ],\n \"buttons\": [\n [\n {\n \"text\": \"Подробнее\",\n \"url\": \"https://example.com/details\"\n },\n {\n \"text\": \"Отлично!\",\n \"data\": \"awesome\"\n }\n ]\n ],\n \"parent_message_id\": 194270,\n \"display_avatar_url\": \"https://example.com/avatar.png\",\n \"display_name\": \"Бот Поддержки\"\n }\n}\n```\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/messages\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"message\": {\n \"entity_id\": 334,\n \"content\": \"Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)\",\n \"files\": [\n {\n \"key\": \"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png\",\n \"name\": \"logo.png\",\n \"file_type\": \"image\",\n \"size\": 12345,\n \"width\": 800,\n \"height\": 600,\n \"duration_ms\": 5400,\n \"waveform\": \"4,8,12,20,16,10,6,3\"\n }\n ],\n \"buttons\": [\n [\n {\n \"text\": \"Подробнее\",\n \"url\": \"https://example.com/details\"\n },\n {\n \"text\": \"Отлично!\",\n \"data\": \"awesome\"\n }\n ]\n ],\n \"parent_message_id\": 194270,\n \"display_avatar_url\": \"https://example.com/avatar.png\",\n \"display_name\": \"Бот Поддержки\"\n }\n}'\n```\n\n## Ответы\n\n### 201: The request has succeeded and a new resource has been created as a result.\n\n**Схема ответа:**\n\n- `data: object` (required) — Сообщение\n - `id: integer, int32` (required) — Идентификатор сообщения. Пример: `194275`\n - `entity_type: string` (required) — Тип сущности, к которой относится сообщение\n Значения: `discussion` — Беседа или канал, `thread` — Тред, `user` — Пользователь\n - `entity_id: integer, int32` (required) — Идентификатор сущности, к которой относится сообщение (беседы/канала, треда или пользователя). Пример: `334`\n - `chat_id: integer, int32` (required) — Идентификатор чата, в котором находится сообщение. Пример: `334`\n - `root_chat_id: integer, int32` (required) — Идентификатор корневого чата. Для сообщений в тредах — идентификатор чата, в котором был создан тред. Для обычных сообщений совпадает с `chat_id`. Пример: `334`\n - `content: string` (required) — Текст сообщения. Пример: `\"Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)\"`\n - `user_id: integer, int32` (required) — Идентификатор пользователя, создавшего сообщение. Пример: `12`\n - `created_at: date-time` (required) — Дата и время создания сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2021-08-28T15:57:23.000Z\"`\n - `url: string` (required) — Прямая ссылка на сообщение. Пример: `\"https://app.pachca.com/chats/334?message=194275\"`\n - `files: array of object` (required) — Прикрепленные файлы\n - `id: integer, int32` (required) — Идентификатор файла. Пример: `3560`\n - `key: string` (required) — Путь к файлу. Пример: `\"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png\"`\n - `name: string` (required) — Название файла с расширением. Пример: `\"congrat.png\"`\n - `file_type: string` (required) — Тип файла\n Значения: `file` — Обычный файл, `image` — Изображение, `audio` — Аудиофайл, `voice` — Голосовое сообщение, `video` — Видеофайл\n - `url: string` (required) — Ссылка на скачивание файла. Обычно ведёт прямо в хранилище и действует до 7 дней, а оставшийся срок может быть меньше — если такая ссылка вернула `403`, запросите сообщение заново и получите свежую. Если в пространстве включено шифрование или задан безопасный контур, ссылка ведёт на [Скачивание файла](GET /files/{id}): забирать такой файл нужно с заголовком `Authorization`, а токену нужен скоуп `files:read`. Пример: `\"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8\"`\n - `width: integer, int32` (nullable) — Ширина изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке. Пример: `1920`\n - `height: integer, int32` (nullable) — Высота изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке. Пример: `1080`\n - `duration_ms: integer, int32` (nullable) — Длительность в миллисекундах у голосового, аудио- и видеофайла. `null` у остальных файлов и если длительность не была передана при загрузке. Пример: `5400`\n - `voice_content: object` (required) — Данные голосового сообщения. Заполняется только для голосовых сообщений (`file_type` файла — `voice`), иначе `null`.\n - `duration_ms: integer, int32` (required) — Длительность голосового сообщения в миллисекундах. Пример: `5400`\n - `waveform: string` (required) — Форма волны (амплитуды) для визуализации голосового сообщения. Пример: `\"4,8,12,20,16,10,6,3\"`\n - `transcript: string` (required, nullable) — Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна. Пример: `\"Привет, посмотри пожалуйста последний отчёт\"`\n - `buttons: array of array` (required, nullable) — Массив строк, каждая из которых представлена массивом кнопок. `null`, если сообщение отправлено без кнопок.\n - `thread: object` (required, nullable) — Тред, созданный к этому сообщению. `null`, если тред не создан, а также у сообщений, которые сами находятся внутри треда.\n - `id: integer, int64` (required) — Идентификатор треда. Пример: `265142`\n - `chat_id: integer, int64` (required) — Идентификатор чата треда. Пример: `2637266155`\n - `forwarding: object` (required) — Информация о пересланном сообщении. `null`, если сообщение не является пересланным.\n - `original_message_id: integer, int32` (required) — Идентификатор оригинального сообщения. Пример: `194275`\n - `original_chat_id: integer, int32` (required) — Идентификатор чата, в котором находится оригинальное сообщение. Пример: `334`\n - `author_id: integer, int32` (required) — Идентификатор пользователя, создавшего оригинальное сообщение. Пример: `12`\n - `original_created_at: date-time` (required) — Дата и время создания оригинального сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2025-01-15T10:30:00.000Z\"`\n - `original_thread_id: integer, int32` (required, nullable) — Идентификатор треда, в котором находится оригинальное сообщение. Пример: `null`\n - `original_thread_message_id: integer, int32` (required, nullable) — Идентификатор сообщения, к которому был создан тред, в котором находится оригинальное сообщение. `null`, если оригинальное сообщение было не в треде или тред создан без привязки к сообщению. Пример: `null`\n - `original_thread_parent_chat_id: integer, int32` (required, nullable) — Идентификатор чата сообщения, к которому был создан тред, в котором находится оригинальное сообщение. `null`, если оригинальное сообщение было не в треде или тред создан без привязки к сообщению. Пример: `null`\n - `parent_message_id: integer, int32` (required, nullable) — Идентификатор сообщения, к которому написан ответ. `null`, если сообщение не является ответом на другое сообщение. Пример: `null`\n - `display_avatar_url: string` (nullable) — Ссылка на аватарку отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. `null`, если бот не переопределял значение при отправке. Пример: `null`\n - `display_name: string` (nullable) — Полное имя отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. `null`, если бот не переопределял значение при отправке. Пример: `null`\n - `changed_at: date-time` (required, nullable) — Дата и время последнего изменения сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. У неотредактированного сообщения совпадает с датой создания. `null` у сообщений, отправленных до появления этого поля. Пример: `\"2021-08-28T16:10:00.000Z\"`\n - `deleted_at: date-time` (required, nullable) — Дата и время удаления сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null` у неудалённых сообщений. В списке сообщений удалённые не возвращаются. Пример: `null`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 194275,\n \"entity_type\": \"discussion\",\n \"entity_id\": 334,\n \"chat_id\": 334,\n \"root_chat_id\": 334,\n \"content\": \"Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)\",\n \"user_id\": 12,\n \"created_at\": \"2021-08-28T15:57:23.000Z\",\n \"url\": \"https://app.pachca.com/chats/334?message=194275\",\n \"files\": [\n {\n \"id\": 3560,\n \"key\": \"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png\",\n \"name\": \"congrat.png\",\n \"file_type\": \"image\",\n \"url\": \"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8\",\n \"width\": 1920,\n \"height\": 1080,\n \"duration_ms\": 5400\n }\n ],\n \"voice_content\": {\n \"duration_ms\": 5400,\n \"waveform\": \"4,8,12,20,16,10,6,3\",\n \"transcript\": \"Привет, посмотри пожалуйста последний отчёт\"\n },\n \"buttons\": [\n [\n {\n \"text\": \"Подробнее\",\n \"url\": \"https://example.com/details\",\n \"data\": \"awesome\"\n }\n ]\n ],\n \"thread\": {\n \"id\": 265142,\n \"chat_id\": 2637266155\n },\n \"forwarding\": {\n \"original_message_id\": 194275,\n \"original_chat_id\": 334,\n \"author_id\": 12,\n \"original_created_at\": \"2025-01-15T10:30:00.000Z\",\n \"original_thread_id\": null,\n \"original_thread_message_id\": null,\n \"original_thread_parent_chat_id\": null\n },\n \"parent_message_id\": null,\n \"display_avatar_url\": null,\n \"display_name\": null,\n \"changed_at\": \"2021-08-28T16:10:00.000Z\",\n \"deleted_at\": null\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 429: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/messages","summary":"Список сообщений чата","scope":"messages:read","plan":null,"auth":true,"paginated":true,"command":"pachca messages list","docLink":"https://dev.pachca.com/api/messages/list","describe":"# GET /messages — Список сообщений чата\n\n> **Скоуп:** `messages:read`\n\n> Пагинация: добавьте `--all` для автоматического обхода страниц\n\n## Параметры\n\n- `chat_id` — query (обязательный): Идентификатор чата (беседа, канал, диалог или чат треда)\n- `sort` — query: Поле сортировки\n- `order` — query: Направление сортировки\n- `limit` — query: Количество возвращаемых сущностей за один запрос\n- `cursor` — query: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n## Эквивалентная команда\n\n```bash\n# Добавьте --all для автоматической пагинации\npachca messages list \\\n --chat-id=198 \\\n --sort=id \\\n --order=desc \\\n --limit=1 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/messages/list\nПолная справка: `pachca api GET /messages --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/messages","description":"Список сообщений чата\n\nЛента сообщений беседы, канала, треда или личной переписки — по `chat_id` нужного чата.\n\nСообщения приходят от новых к старым, то есть первыми идут последние сообщения чата. За более ранними обращайтесь с параметрами `limit` и `cursor`.\n\nУдалённые сообщения в список не попадают.\n\nСообщения треда отдаются по `chat_id` самого треда, а не по чату, где висит родительское сообщение. Идентификатор треда приходит в поле `thread` родительского сообщения.","parameters":[{"name":"chat_id","in":"query","description":"Идентификатор чата (беседа, канал, диалог или чат треда)","required":true,"schema":{"type":"integer","format":"int32","example":198},"example":198,"explode":false},{"name":"sort","in":"query","description":"Поле сортировки","required":false,"schema":{"default":"id","allOf":[{"type":"string","description":"Поле сортировки сообщений","enum":["id"],"x-enum-descriptions":{"id":"По идентификатору сообщения"},"$ref":"#/components/schemas/MessageSortField"}]},"example":"id","explode":false},{"name":"order","in":"query","description":"Направление сортировки","required":false,"schema":{"default":"desc","allOf":[{"type":"string","description":"Порядок сортировки","enum":["asc","desc"],"x-enum-descriptions":{"asc":"По возрастанию","desc":"По убыванию"},"$ref":"#/components/schemas/SortOrder"}]},"example":"desc","explode":false},{"name":"limit","in":"query","description":"Количество возвращаемых сущностей за один запрос","required":false,"schema":{"type":"integer","format":"int32","default":50,"example":1,"minimum":1,"maximum":50},"example":1,"explode":false},{"name":"cursor","in":"query","description":"Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)","required":false,"schema":{"type":"string","example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9"},"example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9","explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными и пагинацией","required":["data","meta"],"properties":{"data":{"type":"array","items":{"type":"object","description":"Сообщение","required":["id","entity_type","entity_id","chat_id","root_chat_id","content","user_id","created_at","url","files","voice_content","buttons","thread","forwarding","parent_message_id","changed_at","deleted_at"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор сообщения","example":194275},"entity_type":{"description":"Тип сущности, к которой относится сообщение","example":"discussion","allOf":[{"type":"string","description":"Тип сущности для сообщений","enum":["discussion","thread","user"],"x-enum-descriptions":{"discussion":"Беседа или канал","thread":"Тред","user":"Пользователь"},"$ref":"#/components/schemas/MessageEntityType"}]},"entity_id":{"type":"integer","format":"int32","description":"Идентификатор сущности, к которой относится сообщение (беседы/канала, треда или пользователя)","example":334},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором находится сообщение","example":334},"root_chat_id":{"type":"integer","format":"int32","description":"Идентификатор корневого чата. Для сообщений в тредах — идентификатор чата, в котором был создан тред. Для обычных сообщений совпадает с `chat_id`.","example":334},"content":{"type":"string","description":"Текст сообщения","example":"Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)"},"user_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, создавшего сообщение","example":12},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2021-08-28T15:57:23.000Z"},"url":{"type":"string","description":"Прямая ссылка на сообщение","example":"https://app.pachca.com/chats/334?message=194275"},"files":{"type":"array","description":"Прикрепленные файлы","items":{"type":"object","description":"Файл","required":["id","key","name","file_type","url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор файла","example":3560},"key":{"type":"string","description":"Путь к файлу","example":"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png"},"name":{"type":"string","description":"Название файла с расширением","example":"congrat.png"},"file_type":{"description":"Тип файла","example":"image","allOf":[{"type":"string","description":"Тип файла","enum":["file","image","audio","voice","video"],"x-enum-descriptions":{"file":"Обычный файл","image":"Изображение","audio":"Аудиофайл","voice":"Голосовое сообщение","video":"Видеофайл"},"$ref":"#/components/schemas/FileType"}]},"url":{"type":"string","description":"Ссылка на скачивание файла. Обычно ведёт прямо в хранилище и действует до 7 дней, а оставшийся срок может быть меньше — если такая ссылка вернула `403`, запросите сообщение заново и получите свежую. Если в пространстве включено шифрование или задан безопасный контур, ссылка ведёт на [Скачивание файла](GET /files/{id}): забирать такой файл нужно с заголовком `Authorization`, а токену нужен скоуп `files:read`.","example":"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8"},"width":{"type":"integer","format":"int32","description":"Ширина изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке.","example":1920,"nullable":true},"height":{"type":"integer","format":"int32","description":"Высота изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке.","example":1080,"nullable":true},"duration_ms":{"type":"integer","format":"int32","description":"Длительность в миллисекундах у голосового, аудио- и видеофайла. `null` у остальных файлов и если длительность не была передана при загрузке.","example":5400,"nullable":true}},"$ref":"#/components/schemas/File"}},"voice_content":{"type":"object","description":"Данные голосового сообщения. Заполняется только для голосовых сообщений (`file_type` файла — `voice`), иначе `null`.","nullable":true,"allOf":[{"type":"object","description":"Данные голосового сообщения","required":["duration_ms","waveform","transcript"],"properties":{"duration_ms":{"type":"integer","format":"int32","description":"Длительность голосового сообщения в миллисекундах","example":5400},"waveform":{"type":"string","description":"Форма волны (амплитуды) для визуализации голосового сообщения","example":"4,8,12,20,16,10,6,3"},"transcript":{"type":"string","description":"Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна.","example":"Привет, посмотри пожалуйста последний отчёт","nullable":true}},"$ref":"#/components/schemas/VoiceContent"}]},"buttons":{"type":"array","description":"Массив строк, каждая из которых представлена массивом кнопок. `null`, если сообщение отправлено без кнопок.","nullable":true,"items":{"type":"array","items":{"type":"object","description":"Кнопка","required":["text"],"properties":{"text":{"type":"string","description":"Текст, отображаемый на кнопке","example":"Подробнее","maxLength":255},"url":{"type":"string","description":"Ссылка, которая будет открыта по нажатию кнопки. У кнопки должно быть заполнено ровно одно из полей `url` и `data`.","example":"https://example.com/details","maxLength":1024},"data":{"type":"string","description":"Данные, которые будут отправлены в исходящем вебхуке по нажатию кнопки. У кнопки должно быть заполнено ровно одно из полей `url` и `data`.","example":"awesome","maxLength":255}},"$ref":"#/components/schemas/Button"}}},"thread":{"type":"object","description":"Тред, созданный к этому сообщению. `null`, если тред не создан, а также у сообщений, которые сами находятся внутри треда.","required":["id","chat_id"],"nullable":true,"properties":{"id":{"type":"integer","format":"int64","description":"Идентификатор треда","example":265142},"chat_id":{"type":"integer","format":"int64","description":"Идентификатор чата треда","example":2637266155}}},"forwarding":{"type":"object","description":"Информация о пересланном сообщении. `null`, если сообщение не является пересланным.","nullable":true,"allOf":[{"type":"object","description":"Информация о пересланном сообщении","required":["original_message_id","original_chat_id","author_id","original_created_at","original_thread_id","original_thread_message_id","original_thread_parent_chat_id"],"properties":{"original_message_id":{"type":"integer","format":"int32","description":"Идентификатор оригинального сообщения","example":194275},"original_chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором находится оригинальное сообщение","example":334},"author_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, создавшего оригинальное сообщение","example":12},"original_created_at":{"type":"string","format":"date-time","description":"Дата и время создания оригинального сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2025-01-15T10:30:00.000Z"},"original_thread_id":{"type":"integer","format":"int32","description":"Идентификатор треда, в котором находится оригинальное сообщение","example":null,"nullable":true},"original_thread_message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, к которому был создан тред, в котором находится оригинальное сообщение. `null`, если оригинальное сообщение было не в треде или тред создан без привязки к сообщению.","example":null,"nullable":true},"original_thread_parent_chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата сообщения, к которому был создан тред, в котором находится оригинальное сообщение. `null`, если оригинальное сообщение было не в треде или тред создан без привязки к сообщению.","example":null,"nullable":true}},"$ref":"#/components/schemas/Forwarding"}]},"parent_message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, к которому написан ответ. `null`, если сообщение не является ответом на другое сообщение.","example":null,"nullable":true},"display_avatar_url":{"type":"string","description":"Ссылка на аватарку отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. `null`, если бот не переопределял значение при отправке.","example":null,"nullable":true},"display_name":{"type":"string","description":"Полное имя отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. `null`, если бот не переопределял значение при отправке.","example":null,"nullable":true},"changed_at":{"type":"string","format":"date-time","description":"Дата и время последнего изменения сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. У неотредактированного сообщения совпадает с датой создания. `null` у сообщений, отправленных до появления этого поля.","example":"2021-08-28T16:10:00.000Z","nullable":true},"deleted_at":{"type":"string","format":"date-time","description":"Дата и время удаления сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null` у неудалённых сообщений. В списке сообщений удалённые не возвращаются.","example":null,"nullable":true}},"$ref":"#/components/schemas/Message"}},"meta":{"type":"object","description":"Метаданные пагинации","required":["paginate"],"properties":{"paginate":{"type":"object","description":"Вспомогательная информация","required":["next_page"],"properties":{"next_page":{"type":"string","description":"Курсор пагинации следующей страницы","example":"eyJxZCO2MiwiZGlyIjomSNYjIn3"},"prev_page":{"type":"string","description":"Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка.","example":"eyJxZCO2MiwiZGlyIjoiYXNjIn0"},"has_next":{"type":"boolean","description":"Есть ли ещё данные на следующей странице. На последней странице — `false`.","example":true},"has_prev":{"type":"boolean","description":"Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`.","example":false}}}},"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"messages:read","scopeRoles":["owner","admin","user","bot"]},"paginated":true},"docs":"# Список сообщений чата\n\n**Метод**: `GET`\n\n**Путь**: `/messages`\n\n> **Скоуп:** `messages:read`\n\nЛента сообщений беседы, канала, треда или личной переписки — по `chat_id` нужного чата.\n\nСообщения приходят от новых к старым, то есть первыми идут последние сообщения чата. За более ранними обращайтесь с параметрами `limit` и `cursor`.\n\nУдалённые сообщения в список не попадают.\n\nСообщения треда отдаются по `chat_id` самого треда, а не по чату, где висит родительское сообщение. Идентификатор треда приходит в поле `thread` родительского сообщения.\n\n## Параметры\n\n### Query параметры\n\n- `chat_id: integer, int32` (required) — Идентификатор чата (беседа, канал, диалог или чат треда)\n- `sort: string` (default: id) — Поле сортировки\n- `order: string` (default: desc) — Направление сортировки\n- `limit: integer, int32` (default: 50) — Количество возвращаемых сущностей за один запрос\n- `cursor: string` — Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n\n## Пример запроса\n\n```bash\n# Для получения следующей страницы используйте cursor из meta.paginate.next_page\ncurl \"https://api.pachca.com/api/shared/v1/messages?chat_id=198&sort=id&order=desc&limit=1\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: array of object` (required)\n - `id: integer, int32` (required) — Идентификатор сообщения. Пример: `194275`\n - `entity_type: string` (required) — Тип сущности, к которой относится сообщение\n Значения: `discussion` — Беседа или канал, `thread` — Тред, `user` — Пользователь\n - `entity_id: integer, int32` (required) — Идентификатор сущности, к которой относится сообщение (беседы/канала, треда или пользователя). Пример: `334`\n - `chat_id: integer, int32` (required) — Идентификатор чата, в котором находится сообщение. Пример: `334`\n - `root_chat_id: integer, int32` (required) — Идентификатор корневого чата. Для сообщений в тредах — идентификатор чата, в котором был создан тред. Для обычных сообщений совпадает с `chat_id`. Пример: `334`\n - `content: string` (required) — Текст сообщения. Пример: `\"Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)\"`\n - `user_id: integer, int32` (required) — Идентификатор пользователя, создавшего сообщение. Пример: `12`\n - `created_at: date-time` (required) — Дата и время создания сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2021-08-28T15:57:23.000Z\"`\n - `url: string` (required) — Прямая ссылка на сообщение. Пример: `\"https://app.pachca.com/chats/334?message=194275\"`\n - `files: array of object` (required) — Прикрепленные файлы\n - `id: integer, int32` (required) — Идентификатор файла. Пример: `3560`\n - `key: string` (required) — Путь к файлу. Пример: `\"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png\"`\n - `name: string` (required) — Название файла с расширением. Пример: `\"congrat.png\"`\n - `file_type: string` (required) — Тип файла\n Значения: `file` — Обычный файл, `image` — Изображение, `audio` — Аудиофайл, `voice` — Голосовое сообщение, `video` — Видеофайл\n - `url: string` (required) — Ссылка на скачивание файла. Обычно ведёт прямо в хранилище и действует до 7 дней, а оставшийся срок может быть меньше — если такая ссылка вернула `403`, запросите сообщение заново и получите свежую. Если в пространстве включено шифрование или задан безопасный контур, ссылка ведёт на [Скачивание файла](GET /files/{id}): забирать такой файл нужно с заголовком `Authorization`, а токену нужен скоуп `files:read`. Пример: `\"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8\"`\n - `width: integer, int32` (nullable) — Ширина изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке. Пример: `1920`\n - `height: integer, int32` (nullable) — Высота изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке. Пример: `1080`\n - `duration_ms: integer, int32` (nullable) — Длительность в миллисекундах у голосового, аудио- и видеофайла. `null` у остальных файлов и если длительность не была передана при загрузке. Пример: `5400`\n - `voice_content: object` (required) — Данные голосового сообщения. Заполняется только для голосовых сообщений (`file_type` файла — `voice`), иначе `null`.\n - `duration_ms: integer, int32` (required) — Длительность голосового сообщения в миллисекундах. Пример: `5400`\n - `waveform: string` (required) — Форма волны (амплитуды) для визуализации голосового сообщения. Пример: `\"4,8,12,20,16,10,6,3\"`\n - `transcript: string` (required, nullable) — Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна. Пример: `\"Привет, посмотри пожалуйста последний отчёт\"`\n - `buttons: array of array` (required, nullable) — Массив строк, каждая из которых представлена массивом кнопок. `null`, если сообщение отправлено без кнопок.\n - `thread: object` (required, nullable) — Тред, созданный к этому сообщению. `null`, если тред не создан, а также у сообщений, которые сами находятся внутри треда.\n - `id: integer, int64` (required) — Идентификатор треда. Пример: `265142`\n - `chat_id: integer, int64` (required) — Идентификатор чата треда. Пример: `2637266155`\n - `forwarding: object` (required) — Информация о пересланном сообщении. `null`, если сообщение не является пересланным.\n - `original_message_id: integer, int32` (required) — Идентификатор оригинального сообщения. Пример: `194275`\n - `original_chat_id: integer, int32` (required) — Идентификатор чата, в котором находится оригинальное сообщение. Пример: `334`\n - `author_id: integer, int32` (required) — Идентификатор пользователя, создавшего оригинальное сообщение. Пример: `12`\n - `original_created_at: date-time` (required) — Дата и время создания оригинального сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2025-01-15T10:30:00.000Z\"`\n - `original_thread_id: integer, int32` (required, nullable) — Идентификатор треда, в котором находится оригинальное сообщение. Пример: `null`\n - `original_thread_message_id: integer, int32` (required, nullable) — Идентификатор сообщения, к которому был создан тред, в котором находится оригинальное сообщение. `null`, если оригинальное сообщение было не в треде или тред создан без привязки к сообщению. Пример: `null`\n - `original_thread_parent_chat_id: integer, int32` (required, nullable) — Идентификатор чата сообщения, к которому был создан тред, в котором находится оригинальное сообщение. `null`, если оригинальное сообщение было не в треде или тред создан без привязки к сообщению. Пример: `null`\n - `parent_message_id: integer, int32` (required, nullable) — Идентификатор сообщения, к которому написан ответ. `null`, если сообщение не является ответом на другое сообщение. Пример: `null`\n - `display_avatar_url: string` (nullable) — Ссылка на аватарку отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. `null`, если бот не переопределял значение при отправке. Пример: `null`\n - `display_name: string` (nullable) — Полное имя отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. `null`, если бот не переопределял значение при отправке. Пример: `null`\n - `changed_at: date-time` (required, nullable) — Дата и время последнего изменения сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. У неотредактированного сообщения совпадает с датой создания. `null` у сообщений, отправленных до появления этого поля. Пример: `\"2021-08-28T16:10:00.000Z\"`\n - `deleted_at: date-time` (required, nullable) — Дата и время удаления сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null` у неудалённых сообщений. В списке сообщений удалённые не возвращаются. Пример: `null`\n- `meta: object` (required) — Метаданные пагинации\n - `paginate: object` (required) — Вспомогательная информация\n - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `\"eyJxZCO2MiwiZGlyIjomSNYjIn3\"`\n - `prev_page: string` — Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка. Пример: `\"eyJxZCO2MiwiZGlyIjoiYXNjIn0\"`\n - `has_next: boolean` — Есть ли ещё данные на следующей странице. На последней странице — `false`. Пример: `true`\n - `has_prev: boolean` — Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`. Пример: `false`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": [\n {\n \"id\": 194275,\n \"entity_type\": \"discussion\",\n \"entity_id\": 334,\n \"chat_id\": 334,\n \"root_chat_id\": 334,\n \"content\": \"Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)\",\n \"user_id\": 12,\n \"created_at\": \"2021-08-28T15:57:23.000Z\",\n \"url\": \"https://app.pachca.com/chats/334?message=194275\",\n \"files\": [\n {\n \"id\": 3560,\n \"key\": \"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png\",\n \"name\": \"congrat.png\",\n \"file_type\": \"image\",\n \"url\": \"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8\",\n \"width\": 1920,\n \"height\": 1080,\n \"duration_ms\": 5400\n }\n ],\n \"voice_content\": {\n \"duration_ms\": 5400,\n \"waveform\": \"4,8,12,20,16,10,6,3\",\n \"transcript\": \"Привет, посмотри пожалуйста последний отчёт\"\n },\n \"buttons\": [\n [\n {\n \"text\": null\n }\n ]\n ],\n \"thread\": {\n \"id\": 265142,\n \"chat_id\": 2637266155\n },\n \"forwarding\": {\n \"original_message_id\": 194275,\n \"original_chat_id\": 334,\n \"author_id\": 12,\n \"original_created_at\": \"2025-01-15T10:30:00.000Z\",\n \"original_thread_id\": null,\n \"original_thread_message_id\": null,\n \"original_thread_parent_chat_id\": null\n },\n \"parent_message_id\": null,\n \"display_avatar_url\": null,\n \"display_name\": null,\n \"changed_at\": \"2021-08-28T16:10:00.000Z\",\n \"deleted_at\": null\n }\n ],\n \"meta\": {\n \"paginate\": {\n \"next_page\": \"eyJxZCO2MiwiZGlyIjomSNYjIn3\",\n \"prev_page\": \"eyJxZCO2MiwiZGlyIjoiYXNjIn0\",\n \"has_next\": true,\n \"has_prev\": false\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/messages/{id}","summary":"Информация о сообщении","scope":"messages:read","plan":null,"auth":true,"paginated":false,"command":"pachca messages get","docLink":"https://dev.pachca.com/api/messages/get","describe":"# GET /messages/{id} — Информация о сообщении\n\n> **Скоуп:** `messages:read`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор сообщения\n\n## Эквивалентная команда\n\n```bash\npachca messages get 194275 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/messages/get\nПолная справка: `pachca api GET /messages/{id} --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/messages/{id}","description":"Информация о сообщении\n\nСообщение вместе с автором, вложениями и кнопками.\n\nУдалённое сообщение метод всё равно отдаёт — с пустым `content` и заполненным `deleted_at`, без файлов и реакций.\n\nСсылки на файлы в ответе временные. Обычный файл отдаётся прямой ссылкой на хранилище, а защищённый и зашифрованный — адресом API, по которому нужен токен со скоупом `files:read`.","parameters":[{"name":"id","in":"path","description":"Идентификатор сообщения","required":true,"schema":{"type":"integer","format":"int32","example":194275},"example":194275}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Сообщение","required":["id","entity_type","entity_id","chat_id","root_chat_id","content","user_id","created_at","url","files","voice_content","buttons","thread","forwarding","parent_message_id","changed_at","deleted_at"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор сообщения","example":194275},"entity_type":{"description":"Тип сущности, к которой относится сообщение","example":"discussion","allOf":[{"type":"string","description":"Тип сущности для сообщений","enum":["discussion","thread","user"],"x-enum-descriptions":{"discussion":"Беседа или канал","thread":"Тред","user":"Пользователь"},"$ref":"#/components/schemas/MessageEntityType"}]},"entity_id":{"type":"integer","format":"int32","description":"Идентификатор сущности, к которой относится сообщение (беседы/канала, треда или пользователя)","example":334},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором находится сообщение","example":334},"root_chat_id":{"type":"integer","format":"int32","description":"Идентификатор корневого чата. Для сообщений в тредах — идентификатор чата, в котором был создан тред. Для обычных сообщений совпадает с `chat_id`.","example":334},"content":{"type":"string","description":"Текст сообщения","example":"Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)"},"user_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, создавшего сообщение","example":12},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2021-08-28T15:57:23.000Z"},"url":{"type":"string","description":"Прямая ссылка на сообщение","example":"https://app.pachca.com/chats/334?message=194275"},"files":{"type":"array","description":"Прикрепленные файлы","items":{"type":"object","description":"Файл","required":["id","key","name","file_type","url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор файла","example":3560},"key":{"type":"string","description":"Путь к файлу","example":"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png"},"name":{"type":"string","description":"Название файла с расширением","example":"congrat.png"},"file_type":{"description":"Тип файла","example":"image","allOf":[{"type":"string","description":"Тип файла","enum":["file","image","audio","voice","video"],"x-enum-descriptions":{"file":"Обычный файл","image":"Изображение","audio":"Аудиофайл","voice":"Голосовое сообщение","video":"Видеофайл"},"$ref":"#/components/schemas/FileType"}]},"url":{"type":"string","description":"Ссылка на скачивание файла. Обычно ведёт прямо в хранилище и действует до 7 дней, а оставшийся срок может быть меньше — если такая ссылка вернула `403`, запросите сообщение заново и получите свежую. Если в пространстве включено шифрование или задан безопасный контур, ссылка ведёт на [Скачивание файла](GET /files/{id}): забирать такой файл нужно с заголовком `Authorization`, а токену нужен скоуп `files:read`.","example":"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8"},"width":{"type":"integer","format":"int32","description":"Ширина изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке.","example":1920,"nullable":true},"height":{"type":"integer","format":"int32","description":"Высота изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке.","example":1080,"nullable":true},"duration_ms":{"type":"integer","format":"int32","description":"Длительность в миллисекундах у голосового, аудио- и видеофайла. `null` у остальных файлов и если длительность не была передана при загрузке.","example":5400,"nullable":true}},"$ref":"#/components/schemas/File"}},"voice_content":{"type":"object","description":"Данные голосового сообщения. Заполняется только для голосовых сообщений (`file_type` файла — `voice`), иначе `null`.","nullable":true,"allOf":[{"type":"object","description":"Данные голосового сообщения","required":["duration_ms","waveform","transcript"],"properties":{"duration_ms":{"type":"integer","format":"int32","description":"Длительность голосового сообщения в миллисекундах","example":5400},"waveform":{"type":"string","description":"Форма волны (амплитуды) для визуализации голосового сообщения","example":"4,8,12,20,16,10,6,3"},"transcript":{"type":"string","description":"Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна.","example":"Привет, посмотри пожалуйста последний отчёт","nullable":true}},"$ref":"#/components/schemas/VoiceContent"}]},"buttons":{"type":"array","description":"Массив строк, каждая из которых представлена массивом кнопок. `null`, если сообщение отправлено без кнопок.","nullable":true,"items":{"type":"array","items":{"type":"object","description":"Кнопка","required":["text"],"properties":{"text":{"type":"string","description":"Текст, отображаемый на кнопке","example":"Подробнее","maxLength":255},"url":{"type":"string","description":"Ссылка, которая будет открыта по нажатию кнопки. У кнопки должно быть заполнено ровно одно из полей `url` и `data`.","example":"https://example.com/details","maxLength":1024},"data":{"type":"string","description":"Данные, которые будут отправлены в исходящем вебхуке по нажатию кнопки. У кнопки должно быть заполнено ровно одно из полей `url` и `data`.","example":"awesome","maxLength":255}},"$ref":"#/components/schemas/Button"}}},"thread":{"type":"object","description":"Тред, созданный к этому сообщению. `null`, если тред не создан, а также у сообщений, которые сами находятся внутри треда.","required":["id","chat_id"],"nullable":true,"properties":{"id":{"type":"integer","format":"int64","description":"Идентификатор треда","example":265142},"chat_id":{"type":"integer","format":"int64","description":"Идентификатор чата треда","example":2637266155}}},"forwarding":{"type":"object","description":"Информация о пересланном сообщении. `null`, если сообщение не является пересланным.","nullable":true,"allOf":[{"type":"object","description":"Информация о пересланном сообщении","required":["original_message_id","original_chat_id","author_id","original_created_at","original_thread_id","original_thread_message_id","original_thread_parent_chat_id"],"properties":{"original_message_id":{"type":"integer","format":"int32","description":"Идентификатор оригинального сообщения","example":194275},"original_chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором находится оригинальное сообщение","example":334},"author_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, создавшего оригинальное сообщение","example":12},"original_created_at":{"type":"string","format":"date-time","description":"Дата и время создания оригинального сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2025-01-15T10:30:00.000Z"},"original_thread_id":{"type":"integer","format":"int32","description":"Идентификатор треда, в котором находится оригинальное сообщение","example":null,"nullable":true},"original_thread_message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, к которому был создан тред, в котором находится оригинальное сообщение. `null`, если оригинальное сообщение было не в треде или тред создан без привязки к сообщению.","example":null,"nullable":true},"original_thread_parent_chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата сообщения, к которому был создан тред, в котором находится оригинальное сообщение. `null`, если оригинальное сообщение было не в треде или тред создан без привязки к сообщению.","example":null,"nullable":true}},"$ref":"#/components/schemas/Forwarding"}]},"parent_message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, к которому написан ответ. `null`, если сообщение не является ответом на другое сообщение.","example":null,"nullable":true},"display_avatar_url":{"type":"string","description":"Ссылка на аватарку отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. `null`, если бот не переопределял значение при отправке.","example":null,"nullable":true},"display_name":{"type":"string","description":"Полное имя отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. `null`, если бот не переопределял значение при отправке.","example":null,"nullable":true},"changed_at":{"type":"string","format":"date-time","description":"Дата и время последнего изменения сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. У неотредактированного сообщения совпадает с датой создания. `null` у сообщений, отправленных до появления этого поля.","example":"2021-08-28T16:10:00.000Z","nullable":true},"deleted_at":{"type":"string","format":"date-time","description":"Дата и время удаления сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null` у неудалённых сообщений. В списке сообщений удалённые не возвращаются.","example":null,"nullable":true}},"$ref":"#/components/schemas/Message"}}}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"messages:read","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Информация о сообщении\n\n**Метод**: `GET`\n\n**Путь**: `/messages/{id}`\n\n> **Скоуп:** `messages:read`\n\nСообщение вместе с автором, вложениями и кнопками.\n\nУдалённое сообщение метод всё равно отдаёт — с пустым `content` и заполненным `deleted_at`, без файлов и реакций.\n\nСсылки на файлы в ответе временные. Обычный файл отдаётся прямой ссылкой на хранилище, а защищённый и зашифрованный — адресом API, по которому нужен токен со скоупом `files:read`.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор сообщения\n\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/messages/194275\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Сообщение\n - `id: integer, int32` (required) — Идентификатор сообщения. Пример: `194275`\n - `entity_type: string` (required) — Тип сущности, к которой относится сообщение\n Значения: `discussion` — Беседа или канал, `thread` — Тред, `user` — Пользователь\n - `entity_id: integer, int32` (required) — Идентификатор сущности, к которой относится сообщение (беседы/канала, треда или пользователя). Пример: `334`\n - `chat_id: integer, int32` (required) — Идентификатор чата, в котором находится сообщение. Пример: `334`\n - `root_chat_id: integer, int32` (required) — Идентификатор корневого чата. Для сообщений в тредах — идентификатор чата, в котором был создан тред. Для обычных сообщений совпадает с `chat_id`. Пример: `334`\n - `content: string` (required) — Текст сообщения. Пример: `\"Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)\"`\n - `user_id: integer, int32` (required) — Идентификатор пользователя, создавшего сообщение. Пример: `12`\n - `created_at: date-time` (required) — Дата и время создания сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2021-08-28T15:57:23.000Z\"`\n - `url: string` (required) — Прямая ссылка на сообщение. Пример: `\"https://app.pachca.com/chats/334?message=194275\"`\n - `files: array of object` (required) — Прикрепленные файлы\n - `id: integer, int32` (required) — Идентификатор файла. Пример: `3560`\n - `key: string` (required) — Путь к файлу. Пример: `\"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png\"`\n - `name: string` (required) — Название файла с расширением. Пример: `\"congrat.png\"`\n - `file_type: string` (required) — Тип файла\n Значения: `file` — Обычный файл, `image` — Изображение, `audio` — Аудиофайл, `voice` — Голосовое сообщение, `video` — Видеофайл\n - `url: string` (required) — Ссылка на скачивание файла. Обычно ведёт прямо в хранилище и действует до 7 дней, а оставшийся срок может быть меньше — если такая ссылка вернула `403`, запросите сообщение заново и получите свежую. Если в пространстве включено шифрование или задан безопасный контур, ссылка ведёт на [Скачивание файла](GET /files/{id}): забирать такой файл нужно с заголовком `Authorization`, а токену нужен скоуп `files:read`. Пример: `\"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8\"`\n - `width: integer, int32` (nullable) — Ширина изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке. Пример: `1920`\n - `height: integer, int32` (nullable) — Высота изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке. Пример: `1080`\n - `duration_ms: integer, int32` (nullable) — Длительность в миллисекундах у голосового, аудио- и видеофайла. `null` у остальных файлов и если длительность не была передана при загрузке. Пример: `5400`\n - `voice_content: object` (required) — Данные голосового сообщения. Заполняется только для голосовых сообщений (`file_type` файла — `voice`), иначе `null`.\n - `duration_ms: integer, int32` (required) — Длительность голосового сообщения в миллисекундах. Пример: `5400`\n - `waveform: string` (required) — Форма волны (амплитуды) для визуализации голосового сообщения. Пример: `\"4,8,12,20,16,10,6,3\"`\n - `transcript: string` (required, nullable) — Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна. Пример: `\"Привет, посмотри пожалуйста последний отчёт\"`\n - `buttons: array of array` (required, nullable) — Массив строк, каждая из которых представлена массивом кнопок. `null`, если сообщение отправлено без кнопок.\n - `thread: object` (required, nullable) — Тред, созданный к этому сообщению. `null`, если тред не создан, а также у сообщений, которые сами находятся внутри треда.\n - `id: integer, int64` (required) — Идентификатор треда. Пример: `265142`\n - `chat_id: integer, int64` (required) — Идентификатор чата треда. Пример: `2637266155`\n - `forwarding: object` (required) — Информация о пересланном сообщении. `null`, если сообщение не является пересланным.\n - `original_message_id: integer, int32` (required) — Идентификатор оригинального сообщения. Пример: `194275`\n - `original_chat_id: integer, int32` (required) — Идентификатор чата, в котором находится оригинальное сообщение. Пример: `334`\n - `author_id: integer, int32` (required) — Идентификатор пользователя, создавшего оригинальное сообщение. Пример: `12`\n - `original_created_at: date-time` (required) — Дата и время создания оригинального сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2025-01-15T10:30:00.000Z\"`\n - `original_thread_id: integer, int32` (required, nullable) — Идентификатор треда, в котором находится оригинальное сообщение. Пример: `null`\n - `original_thread_message_id: integer, int32` (required, nullable) — Идентификатор сообщения, к которому был создан тред, в котором находится оригинальное сообщение. `null`, если оригинальное сообщение было не в треде или тред создан без привязки к сообщению. Пример: `null`\n - `original_thread_parent_chat_id: integer, int32` (required, nullable) — Идентификатор чата сообщения, к которому был создан тред, в котором находится оригинальное сообщение. `null`, если оригинальное сообщение было не в треде или тред создан без привязки к сообщению. Пример: `null`\n - `parent_message_id: integer, int32` (required, nullable) — Идентификатор сообщения, к которому написан ответ. `null`, если сообщение не является ответом на другое сообщение. Пример: `null`\n - `display_avatar_url: string` (nullable) — Ссылка на аватарку отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. `null`, если бот не переопределял значение при отправке. Пример: `null`\n - `display_name: string` (nullable) — Полное имя отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. `null`, если бот не переопределял значение при отправке. Пример: `null`\n - `changed_at: date-time` (required, nullable) — Дата и время последнего изменения сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. У неотредактированного сообщения совпадает с датой создания. `null` у сообщений, отправленных до появления этого поля. Пример: `\"2021-08-28T16:10:00.000Z\"`\n - `deleted_at: date-time` (required, nullable) — Дата и время удаления сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null` у неудалённых сообщений. В списке сообщений удалённые не возвращаются. Пример: `null`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 194275,\n \"entity_type\": \"discussion\",\n \"entity_id\": 334,\n \"chat_id\": 334,\n \"root_chat_id\": 334,\n \"content\": \"Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)\",\n \"user_id\": 12,\n \"created_at\": \"2021-08-28T15:57:23.000Z\",\n \"url\": \"https://app.pachca.com/chats/334?message=194275\",\n \"files\": [\n {\n \"id\": 3560,\n \"key\": \"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png\",\n \"name\": \"congrat.png\",\n \"file_type\": \"image\",\n \"url\": \"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8\",\n \"width\": 1920,\n \"height\": 1080,\n \"duration_ms\": 5400\n }\n ],\n \"voice_content\": {\n \"duration_ms\": 5400,\n \"waveform\": \"4,8,12,20,16,10,6,3\",\n \"transcript\": \"Привет, посмотри пожалуйста последний отчёт\"\n },\n \"buttons\": [\n [\n {\n \"text\": \"Подробнее\",\n \"url\": \"https://example.com/details\",\n \"data\": \"awesome\"\n }\n ]\n ],\n \"thread\": {\n \"id\": 265142,\n \"chat_id\": 2637266155\n },\n \"forwarding\": {\n \"original_message_id\": 194275,\n \"original_chat_id\": 334,\n \"author_id\": 12,\n \"original_created_at\": \"2025-01-15T10:30:00.000Z\",\n \"original_thread_id\": null,\n \"original_thread_message_id\": null,\n \"original_thread_parent_chat_id\": null\n },\n \"parent_message_id\": null,\n \"display_avatar_url\": null,\n \"display_name\": null,\n \"changed_at\": \"2021-08-28T16:10:00.000Z\",\n \"deleted_at\": null\n }\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"PUT","path":"/messages/{id}","summary":"Редактирование сообщения","scope":"messages:update","plan":null,"auth":true,"paginated":false,"command":"pachca messages update","docLink":"https://dev.pachca.com/api/messages/update","describe":"# PUT /messages/{id} — Редактирование сообщения\n\n> **Скоуп:** `messages:update`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор сообщения\n\n## Тело запроса\n\n- `message: object` (required) — Собранный объект параметров редактируемого сообщения\n - `content: string` — Текст сообщения. Поддерживает упоминания: `@nickname` или `<@user_id>` (будет автоматически преобразовано в `@nickname`).\n - `files: array of object` — Прикрепляемые файлы\n - `key: string` (required, max length: 1000) — Путь к файлу, полученный в методе [Загрузка файла](POST /direct_url)\n - `name: string` (required, max length: 255) — Название файла, которое вы хотите отображать пользователю. Расширение должно совпадать с расширением файла в `key`, иначе ответ будет 422 с кодом `wrong_params`.\n - `file_type: string` — Тип файла\n Значения: `file` — Обычный файл, `image` — Изображение, `audio` — Аудиофайл, `voice` — Голосовое сообщение, `video` — Видеофайл\n - `size: integer, int64` — Размер файла в байтах, отображаемый пользователю\n - `width: integer, int32` — Ширина изображения в px (используется в случае, если file_type указан как image)\n - `height: integer, int32` — Высота изображения в px (используется в случае, если file_type указан как image)\n - `duration_ms: integer, int32` (min: 1) — Длительность в миллисекундах. Обязательно для голосовых сообщений (`file_type` — `voice`), для других типов не используется.\n - `waveform: string` (max length: 256) — Форма волны для визуализации голосового сообщения. Без неё запрос с голосовым файлом (`file_type` — `voice`) не пройдёт проверку, но при редактировании присланное значение не сохраняется. Для других типов не используется.\n - `buttons: array of array` (max items: 32) — Массив строк, каждая из которых представлена массивом кнопок. Максимум 100 кнопок у сообщения, до 8 кнопок в строке. Для удаления кнопок пришлите пустой массив.\n - `display_avatar_url: string` — Ссылка на специальную аватарку отправителя для этого сообщения. Использование этого поля возможно только с access_token бота.\n - `display_name: string` — Полное специальное имя отправителя для этого сообщения. Использование этого поля возможно только с access_token бота.\n\n## Эквивалентная команда\n\n```bash\npachca messages update 194275 \\\n --content='Вот попробуйте написать правильно это с первого раза: Будущий, Полощи, Прийти, Грейпфрут, Мозаика, Бюллетень, Дуршлаг, Винегрет.' \\\n --files='[{\"key\":\"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png\",\"name\":\"logo.png\",\"file_type\":\"image\",\"size\":12345,\"width\":800,\"height\":600,\"duration_ms\":5400,\"waveform\":\"4,8,12,20,16,10,6,3\"}]' \\\n --buttons='[[{\"text\":\"Подробнее\",\"url\":\"https://example.com/details\"}]]' \\\n --display-avatar-url=https://example.com/avatar.png \\\n --display-name='Бот Поддержки' \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/messages/update\nПолная справка: `pachca api PUT /messages/{id} --docs` · схема: `--spec`\n","spec":{"method":"PUT","path":"/messages/{id}","description":"Редактирование сообщения\n\nМеняет текст, файлы и кнопки уже отправленного сообщения. В интерфейсе у него появляется пометка о правке.\n\nПравить можно только свои сообщения, и только обычные: системное, пересланное и голосовое метод не меняет. Ограничений по давности отправки нет.\n\nФайлы и кнопки заменяются целиком: пустой массив снимает их все, а отсутствие поля в теле оставляет как было. Любая правка убирает превью ссылок, и заново оно не строится.","parameters":[{"name":"id","in":"path","description":"Идентификатор сообщения","required":true,"schema":{"type":"integer","format":"int32","example":194275},"example":194275}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на редактирование сообщения","required":["message"],"properties":{"message":{"type":"object","description":"Собранный объект параметров редактируемого сообщения","properties":{"content":{"type":"string","description":"Текст сообщения. Поддерживает упоминания: `@nickname` или `<@user_id>` (будет автоматически преобразовано в `@nickname`).","example":"Вот попробуйте написать правильно это с первого раза: Будущий, Полощи, Прийти, Грейпфрут, Мозаика, Бюллетень, Дуршлаг, Винегрет."},"files":{"type":"array","description":"Прикрепляемые файлы","items":{"type":"object","required":["key","name"],"properties":{"key":{"type":"string","description":"Путь к файлу, полученный в методе [Загрузка файла](POST /direct_url)","example":"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png","maxLength":1000},"name":{"type":"string","description":"Название файла, которое вы хотите отображать пользователю. Расширение должно совпадать с расширением файла в `key`, иначе ответ будет 422 с кодом `wrong_params`.","example":"logo.png","maxLength":255},"file_type":{"description":"Тип файла","default":"file","example":"image","allOf":[{"type":"string","description":"Тип файла","enum":["file","image","audio","voice","video"],"x-enum-descriptions":{"file":"Обычный файл","image":"Изображение","audio":"Аудиофайл","voice":"Голосовое сообщение","video":"Видеофайл"},"$ref":"#/components/schemas/FileType"}]},"size":{"type":"integer","format":"int64","description":"Размер файла в байтах, отображаемый пользователю","example":12345},"width":{"type":"integer","format":"int32","description":"Ширина изображения в px (используется в случае, если file_type указан как image)","example":800},"height":{"type":"integer","format":"int32","description":"Высота изображения в px (используется в случае, если file_type указан как image)","example":600},"duration_ms":{"type":"integer","format":"int32","description":"Длительность в миллисекундах. Обязательно для голосовых сообщений (`file_type` — `voice`), для других типов не используется.","example":5400,"minimum":1},"waveform":{"type":"string","description":"Форма волны для визуализации голосового сообщения. Без неё запрос с голосовым файлом (`file_type` — `voice`) не пройдёт проверку, но при редактировании присланное значение не сохраняется. Для других типов не используется.","example":"4,8,12,20,16,10,6,3","maxLength":256}}}},"buttons":{"type":"array","description":"Массив строк, каждая из которых представлена массивом кнопок. Максимум 100 кнопок у сообщения, до 8 кнопок в строке. Для удаления кнопок пришлите пустой массив.","example":[[{"text":"Подробнее","url":"https://example.com/details"}]],"maxItems":32,"items":{"type":"array","items":{"type":"object","description":"Кнопка","required":["text"],"properties":{"text":{"type":"string","description":"Текст, отображаемый на кнопке","example":"Подробнее","maxLength":255},"url":{"type":"string","description":"Ссылка, которая будет открыта по нажатию кнопки. У кнопки должно быть заполнено ровно одно из полей `url` и `data`.","example":"https://example.com/details","maxLength":1024},"data":{"type":"string","description":"Данные, которые будут отправлены в исходящем вебхуке по нажатию кнопки. У кнопки должно быть заполнено ровно одно из полей `url` и `data`.","example":"awesome","maxLength":255}},"$ref":"#/components/schemas/Button"}}},"display_avatar_url":{"type":"string","description":"Ссылка на специальную аватарку отправителя для этого сообщения. Использование этого поля возможно только с access_token бота.","example":"https://example.com/avatar.png"},"display_name":{"type":"string","description":"Полное специальное имя отправителя для этого сообщения. Использование этого поля возможно только с access_token бота.","example":"Бот Поддержки"}}}},"$ref":"#/components/schemas/MessageUpdateRequest"}}}},"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Сообщение","required":["id","entity_type","entity_id","chat_id","root_chat_id","content","user_id","created_at","url","files","voice_content","buttons","thread","forwarding","parent_message_id","changed_at","deleted_at"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор сообщения","example":194275},"entity_type":{"description":"Тип сущности, к которой относится сообщение","example":"discussion","allOf":[{"type":"string","description":"Тип сущности для сообщений","enum":["discussion","thread","user"],"x-enum-descriptions":{"discussion":"Беседа или канал","thread":"Тред","user":"Пользователь"},"$ref":"#/components/schemas/MessageEntityType"}]},"entity_id":{"type":"integer","format":"int32","description":"Идентификатор сущности, к которой относится сообщение (беседы/канала, треда или пользователя)","example":334},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором находится сообщение","example":334},"root_chat_id":{"type":"integer","format":"int32","description":"Идентификатор корневого чата. Для сообщений в тредах — идентификатор чата, в котором был создан тред. Для обычных сообщений совпадает с `chat_id`.","example":334},"content":{"type":"string","description":"Текст сообщения","example":"Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)"},"user_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, создавшего сообщение","example":12},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2021-08-28T15:57:23.000Z"},"url":{"type":"string","description":"Прямая ссылка на сообщение","example":"https://app.pachca.com/chats/334?message=194275"},"files":{"type":"array","description":"Прикрепленные файлы","items":{"type":"object","description":"Файл","required":["id","key","name","file_type","url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор файла","example":3560},"key":{"type":"string","description":"Путь к файлу","example":"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png"},"name":{"type":"string","description":"Название файла с расширением","example":"congrat.png"},"file_type":{"description":"Тип файла","example":"image","allOf":[{"type":"string","description":"Тип файла","enum":["file","image","audio","voice","video"],"x-enum-descriptions":{"file":"Обычный файл","image":"Изображение","audio":"Аудиофайл","voice":"Голосовое сообщение","video":"Видеофайл"},"$ref":"#/components/schemas/FileType"}]},"url":{"type":"string","description":"Ссылка на скачивание файла. Обычно ведёт прямо в хранилище и действует до 7 дней, а оставшийся срок может быть меньше — если такая ссылка вернула `403`, запросите сообщение заново и получите свежую. Если в пространстве включено шифрование или задан безопасный контур, ссылка ведёт на [Скачивание файла](GET /files/{id}): забирать такой файл нужно с заголовком `Authorization`, а токену нужен скоуп `files:read`.","example":"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8"},"width":{"type":"integer","format":"int32","description":"Ширина изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке.","example":1920,"nullable":true},"height":{"type":"integer","format":"int32","description":"Высота изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке.","example":1080,"nullable":true},"duration_ms":{"type":"integer","format":"int32","description":"Длительность в миллисекундах у голосового, аудио- и видеофайла. `null` у остальных файлов и если длительность не была передана при загрузке.","example":5400,"nullable":true}},"$ref":"#/components/schemas/File"}},"voice_content":{"type":"object","description":"Данные голосового сообщения. Заполняется только для голосовых сообщений (`file_type` файла — `voice`), иначе `null`.","nullable":true,"allOf":[{"type":"object","description":"Данные голосового сообщения","required":["duration_ms","waveform","transcript"],"properties":{"duration_ms":{"type":"integer","format":"int32","description":"Длительность голосового сообщения в миллисекундах","example":5400},"waveform":{"type":"string","description":"Форма волны (амплитуды) для визуализации голосового сообщения","example":"4,8,12,20,16,10,6,3"},"transcript":{"type":"string","description":"Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна.","example":"Привет, посмотри пожалуйста последний отчёт","nullable":true}},"$ref":"#/components/schemas/VoiceContent"}]},"buttons":{"type":"array","description":"Массив строк, каждая из которых представлена массивом кнопок. `null`, если сообщение отправлено без кнопок.","nullable":true,"items":{"type":"array","items":{"type":"object","description":"Кнопка","required":["text"],"properties":{"text":{"type":"string","description":"Текст, отображаемый на кнопке","example":"Подробнее","maxLength":255},"url":{"type":"string","description":"Ссылка, которая будет открыта по нажатию кнопки. У кнопки должно быть заполнено ровно одно из полей `url` и `data`.","example":"https://example.com/details","maxLength":1024},"data":{"type":"string","description":"Данные, которые будут отправлены в исходящем вебхуке по нажатию кнопки. У кнопки должно быть заполнено ровно одно из полей `url` и `data`.","example":"awesome","maxLength":255}},"$ref":"#/components/schemas/Button"}}},"thread":{"type":"object","description":"Тред, созданный к этому сообщению. `null`, если тред не создан, а также у сообщений, которые сами находятся внутри треда.","required":["id","chat_id"],"nullable":true,"properties":{"id":{"type":"integer","format":"int64","description":"Идентификатор треда","example":265142},"chat_id":{"type":"integer","format":"int64","description":"Идентификатор чата треда","example":2637266155}}},"forwarding":{"type":"object","description":"Информация о пересланном сообщении. `null`, если сообщение не является пересланным.","nullable":true,"allOf":[{"type":"object","description":"Информация о пересланном сообщении","required":["original_message_id","original_chat_id","author_id","original_created_at","original_thread_id","original_thread_message_id","original_thread_parent_chat_id"],"properties":{"original_message_id":{"type":"integer","format":"int32","description":"Идентификатор оригинального сообщения","example":194275},"original_chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором находится оригинальное сообщение","example":334},"author_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, создавшего оригинальное сообщение","example":12},"original_created_at":{"type":"string","format":"date-time","description":"Дата и время создания оригинального сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2025-01-15T10:30:00.000Z"},"original_thread_id":{"type":"integer","format":"int32","description":"Идентификатор треда, в котором находится оригинальное сообщение","example":null,"nullable":true},"original_thread_message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, к которому был создан тред, в котором находится оригинальное сообщение. `null`, если оригинальное сообщение было не в треде или тред создан без привязки к сообщению.","example":null,"nullable":true},"original_thread_parent_chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата сообщения, к которому был создан тред, в котором находится оригинальное сообщение. `null`, если оригинальное сообщение было не в треде или тред создан без привязки к сообщению.","example":null,"nullable":true}},"$ref":"#/components/schemas/Forwarding"}]},"parent_message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, к которому написан ответ. `null`, если сообщение не является ответом на другое сообщение.","example":null,"nullable":true},"display_avatar_url":{"type":"string","description":"Ссылка на аватарку отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. `null`, если бот не переопределял значение при отправке.","example":null,"nullable":true},"display_name":{"type":"string","description":"Полное имя отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. `null`, если бот не переопределял значение при отправке.","example":null,"nullable":true},"changed_at":{"type":"string","format":"date-time","description":"Дата и время последнего изменения сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. У неотредактированного сообщения совпадает с датой создания. `null` у сообщений, отправленных до появления этого поля.","example":"2021-08-28T16:10:00.000Z","nullable":true},"deleted_at":{"type":"string","format":"date-time","description":"Дата и время удаления сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null` у неудалённых сообщений. В списке сообщений удалённые не возвращаются.","example":null,"nullable":true}},"$ref":"#/components/schemas/Message"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"messages:update","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Редактирование сообщения\n\n**Метод**: `PUT`\n\n**Путь**: `/messages/{id}`\n\n> **Скоуп:** `messages:update`\n\nМеняет текст, файлы и кнопки уже отправленного сообщения. В интерфейсе у него появляется пометка о правке.\n\nПравить можно только свои сообщения, и только обычные: системное, пересланное и голосовое метод не меняет. Ограничений по давности отправки нет.\n\nФайлы и кнопки заменяются целиком: пустой массив снимает их все, а отсутствие поля в теле оставляет как было. Любая правка убирает превью ссылок, и заново оно не строится.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор сообщения\n\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `message: object` (required) — Собранный объект параметров редактируемого сообщения\n - `content: string` — Текст сообщения. Поддерживает упоминания: `@nickname` или `<@user_id>` (будет автоматически преобразовано в `@nickname`). Пример: `\"Вот попробуйте написать правильно это с первого раза: Будущий, Полощи, Прийти, Грейпфрут, Мозаика, Бюллетень, Дуршлаг, Винегрет.\"`\n - `files: array of object` — Прикрепляемые файлы\n - `key: string` (required, max length: 1000) — Путь к файлу, полученный в методе [Загрузка файла](POST /direct_url). Пример: `\"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png\"`\n - `name: string` (required, max length: 255) — Название файла, которое вы хотите отображать пользователю. Расширение должно совпадать с расширением файла в `key`, иначе ответ будет 422 с кодом `wrong_params`. Пример: `\"logo.png\"`\n - `file_type: string` — Тип файла\n Значения: `file` — Обычный файл, `image` — Изображение, `audio` — Аудиофайл, `voice` — Голосовое сообщение, `video` — Видеофайл\n - `size: integer, int64` — Размер файла в байтах, отображаемый пользователю. Пример: `12345`\n - `width: integer, int32` — Ширина изображения в px (используется в случае, если file_type указан как image). Пример: `800`\n - `height: integer, int32` — Высота изображения в px (используется в случае, если file_type указан как image). Пример: `600`\n - `duration_ms: integer, int32` (min: 1) — Длительность в миллисекундах. Обязательно для голосовых сообщений (`file_type` — `voice`), для других типов не используется. Пример: `5400`\n - `waveform: string` (max length: 256) — Форма волны для визуализации голосового сообщения. Без неё запрос с голосовым файлом (`file_type` — `voice`) не пройдёт проверку, но при редактировании присланное значение не сохраняется. Для других типов не используется. Пример: `\"4,8,12,20,16,10,6,3\"`\n - `buttons: array of array` (max items: 32) — Массив строк, каждая из которых представлена массивом кнопок. Максимум 100 кнопок у сообщения, до 8 кнопок в строке. Для удаления кнопок пришлите пустой массив. Пример: `[[{\"text\":\"Подробнее\",\"url\":\"https://example.com/details\"}]]`\n - `display_avatar_url: string` — Ссылка на специальную аватарку отправителя для этого сообщения. Использование этого поля возможно только с access_token бота. Пример: `\"https://example.com/avatar.png\"`\n - `display_name: string` — Полное специальное имя отправителя для этого сообщения. Использование этого поля возможно только с access_token бота. Пример: `\"Бот Поддержки\"`\n\n### Пример\n\n```json\n{\n \"message\": {\n \"content\": \"Вот попробуйте написать правильно это с первого раза: Будущий, Полощи, Прийти, Грейпфрут, Мозаика, Бюллетень, Дуршлаг, Винегрет.\",\n \"files\": [\n {\n \"key\": \"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png\",\n \"name\": \"logo.png\",\n \"file_type\": \"image\",\n \"size\": 12345,\n \"width\": 800,\n \"height\": 600,\n \"duration_ms\": 5400,\n \"waveform\": \"4,8,12,20,16,10,6,3\"\n }\n ],\n \"buttons\": [\n [\n {\n \"text\": \"Подробнее\",\n \"url\": \"https://example.com/details\"\n }\n ]\n ],\n \"display_avatar_url\": \"https://example.com/avatar.png\",\n \"display_name\": \"Бот Поддержки\"\n }\n}\n```\n\n## Пример запроса\n\n```bash\ncurl -X PUT \"https://api.pachca.com/api/shared/v1/messages/194275\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"message\": {\n \"content\": \"Вот попробуйте написать правильно это с первого раза: Будущий, Полощи, Прийти, Грейпфрут, Мозаика, Бюллетень, Дуршлаг, Винегрет.\",\n \"files\": [\n {\n \"key\": \"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png\",\n \"name\": \"logo.png\",\n \"file_type\": \"image\",\n \"size\": 12345,\n \"width\": 800,\n \"height\": 600,\n \"duration_ms\": 5400,\n \"waveform\": \"4,8,12,20,16,10,6,3\"\n }\n ],\n \"buttons\": [\n [\n {\n \"text\": \"Подробнее\",\n \"url\": \"https://example.com/details\"\n }\n ]\n ],\n \"display_avatar_url\": \"https://example.com/avatar.png\",\n \"display_name\": \"Бот Поддержки\"\n }\n}'\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Сообщение\n - `id: integer, int32` (required) — Идентификатор сообщения. Пример: `194275`\n - `entity_type: string` (required) — Тип сущности, к которой относится сообщение\n Значения: `discussion` — Беседа или канал, `thread` — Тред, `user` — Пользователь\n - `entity_id: integer, int32` (required) — Идентификатор сущности, к которой относится сообщение (беседы/канала, треда или пользователя). Пример: `334`\n - `chat_id: integer, int32` (required) — Идентификатор чата, в котором находится сообщение. Пример: `334`\n - `root_chat_id: integer, int32` (required) — Идентификатор корневого чата. Для сообщений в тредах — идентификатор чата, в котором был создан тред. Для обычных сообщений совпадает с `chat_id`. Пример: `334`\n - `content: string` (required) — Текст сообщения. Пример: `\"Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)\"`\n - `user_id: integer, int32` (required) — Идентификатор пользователя, создавшего сообщение. Пример: `12`\n - `created_at: date-time` (required) — Дата и время создания сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2021-08-28T15:57:23.000Z\"`\n - `url: string` (required) — Прямая ссылка на сообщение. Пример: `\"https://app.pachca.com/chats/334?message=194275\"`\n - `files: array of object` (required) — Прикрепленные файлы\n - `id: integer, int32` (required) — Идентификатор файла. Пример: `3560`\n - `key: string` (required) — Путь к файлу. Пример: `\"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png\"`\n - `name: string` (required) — Название файла с расширением. Пример: `\"congrat.png\"`\n - `file_type: string` (required) — Тип файла\n Значения: `file` — Обычный файл, `image` — Изображение, `audio` — Аудиофайл, `voice` — Голосовое сообщение, `video` — Видеофайл\n - `url: string` (required) — Ссылка на скачивание файла. Обычно ведёт прямо в хранилище и действует до 7 дней, а оставшийся срок может быть меньше — если такая ссылка вернула `403`, запросите сообщение заново и получите свежую. Если в пространстве включено шифрование или задан безопасный контур, ссылка ведёт на [Скачивание файла](GET /files/{id}): забирать такой файл нужно с заголовком `Authorization`, а токену нужен скоуп `files:read`. Пример: `\"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8\"`\n - `width: integer, int32` (nullable) — Ширина изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке. Пример: `1920`\n - `height: integer, int32` (nullable) — Высота изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке. Пример: `1080`\n - `duration_ms: integer, int32` (nullable) — Длительность в миллисекундах у голосового, аудио- и видеофайла. `null` у остальных файлов и если длительность не была передана при загрузке. Пример: `5400`\n - `voice_content: object` (required) — Данные голосового сообщения. Заполняется только для голосовых сообщений (`file_type` файла — `voice`), иначе `null`.\n - `duration_ms: integer, int32` (required) — Длительность голосового сообщения в миллисекундах. Пример: `5400`\n - `waveform: string` (required) — Форма волны (амплитуды) для визуализации голосового сообщения. Пример: `\"4,8,12,20,16,10,6,3\"`\n - `transcript: string` (required, nullable) — Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна. Пример: `\"Привет, посмотри пожалуйста последний отчёт\"`\n - `buttons: array of array` (required, nullable) — Массив строк, каждая из которых представлена массивом кнопок. `null`, если сообщение отправлено без кнопок.\n - `thread: object` (required, nullable) — Тред, созданный к этому сообщению. `null`, если тред не создан, а также у сообщений, которые сами находятся внутри треда.\n - `id: integer, int64` (required) — Идентификатор треда. Пример: `265142`\n - `chat_id: integer, int64` (required) — Идентификатор чата треда. Пример: `2637266155`\n - `forwarding: object` (required) — Информация о пересланном сообщении. `null`, если сообщение не является пересланным.\n - `original_message_id: integer, int32` (required) — Идентификатор оригинального сообщения. Пример: `194275`\n - `original_chat_id: integer, int32` (required) — Идентификатор чата, в котором находится оригинальное сообщение. Пример: `334`\n - `author_id: integer, int32` (required) — Идентификатор пользователя, создавшего оригинальное сообщение. Пример: `12`\n - `original_created_at: date-time` (required) — Дата и время создания оригинального сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2025-01-15T10:30:00.000Z\"`\n - `original_thread_id: integer, int32` (required, nullable) — Идентификатор треда, в котором находится оригинальное сообщение. Пример: `null`\n - `original_thread_message_id: integer, int32` (required, nullable) — Идентификатор сообщения, к которому был создан тред, в котором находится оригинальное сообщение. `null`, если оригинальное сообщение было не в треде или тред создан без привязки к сообщению. Пример: `null`\n - `original_thread_parent_chat_id: integer, int32` (required, nullable) — Идентификатор чата сообщения, к которому был создан тред, в котором находится оригинальное сообщение. `null`, если оригинальное сообщение было не в треде или тред создан без привязки к сообщению. Пример: `null`\n - `parent_message_id: integer, int32` (required, nullable) — Идентификатор сообщения, к которому написан ответ. `null`, если сообщение не является ответом на другое сообщение. Пример: `null`\n - `display_avatar_url: string` (nullable) — Ссылка на аватарку отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. `null`, если бот не переопределял значение при отправке. Пример: `null`\n - `display_name: string` (nullable) — Полное имя отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. `null`, если бот не переопределял значение при отправке. Пример: `null`\n - `changed_at: date-time` (required, nullable) — Дата и время последнего изменения сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. У неотредактированного сообщения совпадает с датой создания. `null` у сообщений, отправленных до появления этого поля. Пример: `\"2021-08-28T16:10:00.000Z\"`\n - `deleted_at: date-time` (required, nullable) — Дата и время удаления сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null` у неудалённых сообщений. В списке сообщений удалённые не возвращаются. Пример: `null`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 194275,\n \"entity_type\": \"discussion\",\n \"entity_id\": 334,\n \"chat_id\": 334,\n \"root_chat_id\": 334,\n \"content\": \"Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)\",\n \"user_id\": 12,\n \"created_at\": \"2021-08-28T15:57:23.000Z\",\n \"url\": \"https://app.pachca.com/chats/334?message=194275\",\n \"files\": [\n {\n \"id\": 3560,\n \"key\": \"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png\",\n \"name\": \"congrat.png\",\n \"file_type\": \"image\",\n \"url\": \"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8\",\n \"width\": 1920,\n \"height\": 1080,\n \"duration_ms\": 5400\n }\n ],\n \"voice_content\": {\n \"duration_ms\": 5400,\n \"waveform\": \"4,8,12,20,16,10,6,3\",\n \"transcript\": \"Привет, посмотри пожалуйста последний отчёт\"\n },\n \"buttons\": [\n [\n {\n \"text\": \"Подробнее\",\n \"url\": \"https://example.com/details\",\n \"data\": \"awesome\"\n }\n ]\n ],\n \"thread\": {\n \"id\": 265142,\n \"chat_id\": 2637266155\n },\n \"forwarding\": {\n \"original_message_id\": 194275,\n \"original_chat_id\": 334,\n \"author_id\": 12,\n \"original_created_at\": \"2025-01-15T10:30:00.000Z\",\n \"original_thread_id\": null,\n \"original_thread_message_id\": null,\n \"original_thread_parent_chat_id\": null\n },\n \"parent_message_id\": null,\n \"display_avatar_url\": null,\n \"display_name\": null,\n \"changed_at\": \"2021-08-28T16:10:00.000Z\",\n \"deleted_at\": null\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"DELETE","path":"/messages/{id}","summary":"Удаление сообщения","scope":"messages:delete","plan":null,"auth":true,"paginated":false,"command":"pachca messages delete","docLink":"https://dev.pachca.com/api/messages/delete","describe":"# DELETE /messages/{id} — Удаление сообщения\n\n> **Скоуп:** `messages:delete`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор сообщения\n\n## Эквивалентная команда\n\n```bash\npachca messages delete 194275 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/messages/delete\nПолная справка: `pachca api DELETE /messages/{id} --docs` · схема: `--spec`\n","spec":{"method":"DELETE","path":"/messages/{id}","description":"Удаление сообщения\n\nУдаление сообщения доступно отправителю, админам и редакторам в чате. В личных сообщениях оба пользователя являются редакторами. Ограничений по давности отправки сообщения нет.\n\nТекст, файлы и реакции пропадают у всех и не восстанавливаются, закрепление снимается, а в переписке на месте сообщения остаётся пометка «Сообщение удалено».\n\nТред, заведённый под этим сообщением, остаётся вместе со всей перепиской в нём. Повторное удаление отвечает `204` и уже ничего не меняет.","parameters":[{"name":"id","in":"path","description":"Идентификатор сообщения","required":true,"schema":{"type":"integer","format":"int32","example":194275},"example":194275}],"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"messages:delete","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Удаление сообщения\n\n**Метод**: `DELETE`\n\n**Путь**: `/messages/{id}`\n\n> **Скоуп:** `messages:delete`\n\nУдаление сообщения доступно отправителю, админам и редакторам в чате. В личных сообщениях оба пользователя являются редакторами. Ограничений по давности отправки сообщения нет.\n\nТекст, файлы и реакции пропадают у всех и не восстанавливаются, закрепление снимается, а в переписке на месте сообщения остаётся пометка «Сообщение удалено».\n\nТред, заведённый под этим сообщением, остаётся вместе со всей перепиской в нём. Повторное удаление отвечает `204` и уже ничего не меняет.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор сообщения\n\n\n## Пример запроса\n\n```bash\ncurl -X DELETE \"https://api.pachca.com/api/shared/v1/messages/194275\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"POST","path":"/messages/{id}/link_previews","summary":"Unfurl (разворачивание ссылок)","scope":"link_previews:write","plan":null,"auth":true,"paginated":false,"command":"pachca messages unfurl","docLink":"https://dev.pachca.com/api/messages/unfurl","describe":"# POST /messages/{id}/link_previews — Unfurl (разворачивание ссылок)\n\n> **Скоуп:** `link_previews:write`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор сообщения\n\n## Тело запроса\n\n- `link_previews: Record` (required) — `JSON` карта предпросмотров ссылок, где каждый ключ — `URL`, который был получен в исходящем вебхуке о новом сообщении\n **Структура значений Record:**\n - `title: string` (required) — Заголовок\n - `description: string` (required) — Описание\n - `image_url: string` — Публичная ссылка на изображение (если вы хотите загрузить файл изображения в Пачку, то используйте параметр image)\n - `image: object` — Изображение\n - `key: string` (required) — Путь к изображению, полученный в методе [Загрузка файла](POST /direct_url)\n - `name: string` (required) — Название изображения (рекомендуется писать вместе с расширением)\n - `size: integer, int32` — Размер изображения в байтах\n\n## Эквивалентная команда\n\n```bash\npachca messages unfurl 194275 \\\n --link-previews='{\"https://website.com/articles/123\":{\"title\":\"Статья: Отправка файлов\",\"description\":\"Пример отправки файлов на удаленный сервер\",\"image_url\":\"https://website.com/img/landing.png\",\"image\":{\"key\":\"attaches/files/93746/e354fd79-9jh6-f2hd-fj83-709dae24c763/${filename}\",\"name\":\"files-to-server.jpg\",\"size\":695604}}}' \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/messages/unfurl\nПолная справка: `pachca api POST /messages/{id}/link_previews --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/messages/{id}/link_previews","description":"Unfurl (разворачивание ссылок)\n\nПодставляет в сообщение предпросмотр ссылки, собранный самим ботом: заголовок, описание и картинку. Так внутренние адреса компании, которые Пачка сама открыть не может, показываются в переписке карточкой.\n\nМетод доступен только боту, у которого исходящий вебхук настроен на разворачивание ссылок. Такой бот получает событие `message_link_shared` и отвечает на него этим методом, причём состоять в чате с сообщением ему не нужно — достаточно, чтобы чат был в его пространстве.\n\nДомен ссылки должен быть в списке разрешённых у бота, а сама ссылка — присутствовать в тексте сообщения, иначе метод ответит ошибкой. Ответ приходит пустым даже тогда, когда ни одно превью не применилось: результат проверяют повторным чтением сообщения.","parameters":[{"name":"id","in":"path","description":"Идентификатор сообщения","required":true,"schema":{"type":"integer","format":"int32","example":194275},"example":194275}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на разворачивание ссылок","required":["link_previews"],"properties":{"link_previews":{"type":"object","description":"`JSON` карта предпросмотров ссылок, где каждый ключ — `URL`, который был получен в исходящем вебхуке о новом сообщении","x-record-key-example":"https://website.com/articles/123","additionalProperties":{"type":"object","description":"Данные для предпросмотра ссылки","required":["title","description"],"properties":{"title":{"type":"string","description":"Заголовок","example":"Статья: Отправка файлов"},"description":{"type":"string","description":"Описание","example":"Пример отправки файлов на удаленный сервер"},"image_url":{"type":"string","description":"Публичная ссылка на изображение (если вы хотите загрузить файл изображения в Пачку, то используйте параметр image)","example":"https://website.com/img/landing.png"},"image":{"type":"object","description":"Изображение","required":["key","name"],"properties":{"key":{"type":"string","description":"Путь к изображению, полученный в методе [Загрузка файла](POST /direct_url)","example":"attaches/files/93746/e354fd79-9jh6-f2hd-fj83-709dae24c763/${filename}"},"name":{"type":"string","description":"Название изображения (рекомендуется писать вместе с расширением)","example":"files-to-server.jpg"},"size":{"type":"integer","format":"int32","description":"Размер изображения в байтах","example":695604}}}},"$ref":"#/components/schemas/LinkPreview"}}},"$ref":"#/components/schemas/LinkPreviewsRequest"}}}},"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"link_previews:write","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Unfurl (разворачивание ссылок)\n\n**Метод**: `POST`\n\n**Путь**: `/messages/{id}/link_previews`\n\n> **Скоуп:** `link_previews:write`\n\nПодставляет в сообщение предпросмотр ссылки, собранный самим ботом: заголовок, описание и картинку. Так внутренние адреса компании, которые Пачка сама открыть не может, показываются в переписке карточкой.\n\nМетод доступен только боту, у которого исходящий вебхук настроен на разворачивание ссылок. Такой бот получает событие `message_link_shared` и отвечает на него этим методом, причём состоять в чате с сообщением ему не нужно — достаточно, чтобы чат был в его пространстве.\n\nДомен ссылки должен быть в списке разрешённых у бота, а сама ссылка — присутствовать в тексте сообщения, иначе метод ответит ошибкой. Ответ приходит пустым даже тогда, когда ни одно превью не применилось: результат проверяют повторным чтением сообщения.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор сообщения\n\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `link_previews: Record` (required) — `JSON` карта предпросмотров ссылок, где каждый ключ — `URL`, который был получен в исходящем вебхуке о новом сообщении\n **Структура значений Record:**\n - `title: string` (required) — Заголовок. Пример: `\"Статья: Отправка файлов\"`\n - `description: string` (required) — Описание. Пример: `\"Пример отправки файлов на удаленный сервер\"`\n - `image_url: string` — Публичная ссылка на изображение (если вы хотите загрузить файл изображения в Пачку, то используйте параметр image). Пример: `\"https://website.com/img/landing.png\"`\n - `image: object` — Изображение\n - `key: string` (required) — Путь к изображению, полученный в методе [Загрузка файла](POST /direct_url). Пример: `\"attaches/files/93746/e354fd79-9jh6-f2hd-fj83-709dae24c763/${filename}\"`\n - `name: string` (required) — Название изображения (рекомендуется писать вместе с расширением). Пример: `\"files-to-server.jpg\"`\n - `size: integer, int32` — Размер изображения в байтах. Пример: `695604`\n\n### Пример\n\n```json\n{\n \"link_previews\": {\n \"https://website.com/articles/123\": {\n \"title\": \"Статья: Отправка файлов\",\n \"description\": \"Пример отправки файлов на удаленный сервер\",\n \"image_url\": \"https://website.com/img/landing.png\",\n \"image\": {\n \"key\": \"attaches/files/93746/e354fd79-9jh6-f2hd-fj83-709dae24c763/${filename}\",\n \"name\": \"files-to-server.jpg\",\n \"size\": 695604\n }\n }\n }\n}\n```\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/messages/194275/link_previews\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"link_previews\": {\n \"https://website.com/articles/123\": {\n \"title\": \"Статья: Отправка файлов\",\n \"description\": \"Пример отправки файлов на удаленный сервер\",\n \"image_url\": \"https://website.com/img/landing.png\",\n \"image\": {\n \"key\": \"attaches/files/93746/e354fd79-9jh6-f2hd-fj83-709dae24c763/${filename}\",\n \"name\": \"files-to-server.jpg\",\n \"size\": 695604\n }\n }\n }\n}'\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"POST","path":"/messages/{id}/pin","summary":"Закрепление сообщения","scope":"pins:write","plan":null,"auth":true,"paginated":false,"command":"pachca messages pin","docLink":"https://dev.pachca.com/api/messages/pin","describe":"# POST /messages/{id}/pin — Закрепление сообщения\n\n> **Скоуп:** `pins:write`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор сообщения\n\n## Эквивалентная команда\n\n```bash\npachca messages pin 194275 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/messages/pin\nПолная справка: `pachca api POST /messages/{id}/pin --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/messages/{id}/pin","description":"Закрепление сообщения\n\nЗакрепляет сообщение в шапке беседы или канала, где его видят все участники. Ограничения на число закреплённых сообщений нет.\n\nВ тредах метод не работает. Уже закреплённое сообщение отвечает `409`, а удалённое — `422`.","parameters":[{"name":"id","in":"path","description":"Идентификатор сообщения","required":true,"schema":{"type":"integer","format":"int32","example":194275},"example":194275}],"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error"}},"requirements":{"scope":"pins:write","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Закрепление сообщения\n\n**Метод**: `POST`\n\n**Путь**: `/messages/{id}/pin`\n\n> **Скоуп:** `pins:write`\n\nЗакрепляет сообщение в шапке беседы или канала, где его видят все участники. Ограничения на число закреплённых сообщений нет.\n\nВ тредах метод не работает. Уже закреплённое сообщение отвечает `409`, а удалённое — `422`.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор сообщения\n\n\n## Пример запроса\n\n```bash\ncurl -X POST \"https://api.pachca.com/api/shared/v1/messages/194275/pin\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 409: The request conflicts with the current state of the server.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n"},{"method":"DELETE","path":"/messages/{id}/pin","summary":"Открепление сообщения","scope":"pins:write","plan":null,"auth":true,"paginated":false,"command":"pachca messages unpin","docLink":"https://dev.pachca.com/api/messages/unpin","describe":"# DELETE /messages/{id}/pin — Открепление сообщения\n\n> **Скоуп:** `pins:write`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор сообщения\n\n## Эквивалентная команда\n\n```bash\npachca messages unpin 194275 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/messages/unpin\nПолная справка: `pachca api DELETE /messages/{id}/pin --docs` · схема: `--spec`\n","spec":{"method":"DELETE","path":"/messages/{id}/pin","description":"Открепление сообщения\n\nСнимает закрепление с сообщения. Если сообщение не было закреплено, ответ всё равно `204`, поэтому повторный вызов безопасен.","parameters":[{"name":"id","in":"path","description":"Идентификатор сообщения","required":true,"schema":{"type":"integer","format":"int32","example":194275},"example":194275}],"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"pins:write","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Открепление сообщения\n\n**Метод**: `DELETE`\n\n**Путь**: `/messages/{id}/pin`\n\n> **Скоуп:** `pins:write`\n\nСнимает закрепление с сообщения. Если сообщение не было закреплено, ответ всё равно `204`, поэтому повторный вызов безопасен.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор сообщения\n\n\n## Пример запроса\n\n```bash\ncurl -X DELETE \"https://api.pachca.com/api/shared/v1/messages/194275/pin\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"POST","path":"/messages/{id}/reactions","summary":"Добавление реакции","scope":"reactions:write","plan":null,"auth":true,"paginated":false,"command":"pachca reactions add","docLink":"https://dev.pachca.com/api/reactions/add","describe":"# POST /messages/{id}/reactions — Добавление реакции\n\n> **Скоуп:** `reactions:write`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор сообщения\n\n## Тело запроса\n\n- `code: string` (required) — Emoji символ реакции. Именно символ: текстовые записи вроде `+1` или `:+1:` отклоняются как неизвестный эмодзи.\n- `name: string` — Текстовое имя эмодзи (используется для кастомных эмодзи)\n\n## Эквивалентная команда\n\n```bash\npachca reactions add 7231942 \\\n --code=👍 \\\n --name=:+1: \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/reactions/add\nПолная справка: `pachca api POST /messages/{id}/reactions --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/messages/{id}/reactions","description":"Добавление реакции\n\nСтавит эмодзи-реакцию на сообщение от имени владельца токена.\n\nВ поле `code` передаётся сам символ эмодзи: текстовые записи вроде `+1` или `:+1:` метод не принимает. Если пользователь уже ставил реакцию, повторно она установлена не будет. Для удаления реакции надо воспользоваться методом [Удаление реакции](DELETE /messages/{id}/reactions).\n\nЕсли под сообщением есть тред, реагирующий заодно подписывается на него и начинает получать новые сообщения треда.\n\n**Лимиты реакций:**\n\n- Каждый пользователь может установить на сообщение не более **20 уникальных** реакций\n- Сообщение может иметь не более **30 уникальных** реакций\n- Общее количество реакций на сообщение не может превышать **1000**","parameters":[{"name":"id","in":"path","description":"Идентификатор сообщения","required":true,"schema":{"type":"integer","format":"int32","example":7231942},"example":7231942}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на добавление реакции","required":["code"],"properties":{"code":{"type":"string","description":"Emoji символ реакции. Именно символ: текстовые записи вроде `+1` или `:+1:` отклоняются как неизвестный эмодзи.","example":"👍"},"name":{"type":"string","description":"Текстовое имя эмодзи (используется для кастомных эмодзи)","example":":+1:"}},"$ref":"#/components/schemas/ReactionRequest"}}}},"responses":{"201":{"description":"The request has succeeded and a new resource has been created as a result.","content":{"application/json":{"schema":{"type":"object","description":"Реакция на сообщение","required":["user_id","created_at","code","name"],"properties":{"user_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, который добавил реакцию","example":12},"created_at":{"type":"string","format":"date-time","description":"Дата и время добавления реакции (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2024-01-20T10:30:00.000Z"},"code":{"type":"string","description":"Emoji символ реакции","example":"👍"},"name":{"type":"string","description":"Название emoji реакции","example":":+1::skin-tone-1:"}},"$ref":"#/components/schemas/Reaction"}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"reactions:write","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Добавление реакции\n\n**Метод**: `POST`\n\n**Путь**: `/messages/{id}/reactions`\n\n> **Скоуп:** `reactions:write`\n\nСтавит эмодзи-реакцию на сообщение от имени владельца токена.\n\nВ поле `code` передаётся сам символ эмодзи: текстовые записи вроде `+1` или `:+1:` метод не принимает. Если пользователь уже ставил реакцию, повторно она установлена не будет. Для удаления реакции надо воспользоваться методом [Удаление реакции](DELETE /messages/{id}/reactions).\n\nЕсли под сообщением есть тред, реагирующий заодно подписывается на него и начинает получать новые сообщения треда.\n\n**Лимиты реакций:**\n\n- Каждый пользователь может установить на сообщение не более **20 уникальных** реакций\n- Сообщение может иметь не более **30 уникальных** реакций\n- Общее количество реакций на сообщение не может превышать **1000**\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор сообщения\n\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `code: string` (required) — Emoji символ реакции. Именно символ: текстовые записи вроде `+1` или `:+1:` отклоняются как неизвестный эмодзи. Пример: `\"👍\"`\n- `name: string` — Текстовое имя эмодзи (используется для кастомных эмодзи). Пример: `\":+1:\"`\n\n### Пример\n\n```json\n{\n \"code\": \"👍\",\n \"name\": \":+1:\"\n}\n```\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/messages/7231942/reactions\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"code\": \"👍\",\n \"name\": \":+1:\"\n}'\n```\n\n## Ответы\n\n### 201: The request has succeeded and a new resource has been created as a result.\n\n**Схема ответа:**\n\n- `user_id: integer, int32` (required) — Идентификатор пользователя, который добавил реакцию. Пример: `12`\n- `created_at: date-time` (required) — Дата и время добавления реакции (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2024-01-20T10:30:00.000Z\"`\n- `code: string` (required) — Emoji символ реакции. Пример: `\"👍\"`\n- `name: string` (required) — Название emoji реакции. Пример: `\":+1::skin-tone-1:\"`\n\n**Пример ответа:**\n\n```json\n{\n \"user_id\": 12,\n \"created_at\": \"2024-01-20T10:30:00.000Z\",\n \"code\": \"👍\",\n \"name\": \":+1::skin-tone-1:\"\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"DELETE","path":"/messages/{id}/reactions","summary":"Удаление реакции","scope":"reactions:write","plan":null,"auth":true,"paginated":false,"command":"pachca reactions remove","docLink":"https://dev.pachca.com/api/reactions/remove","describe":"# DELETE /messages/{id}/reactions — Удаление реакции\n\n> **Скоуп:** `reactions:write`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор сообщения\n- `code` — query (обязательный): Emoji символ реакции. Именно символ: текстовые записи вроде `+1` или `:+1:` отклоняются как неизвестный эмодзи.\n- `name` — query: Текстовое имя эмодзи (используется для кастомных эмодзи)\n\n## Эквивалентная команда\n\n```bash\npachca reactions remove 7231942 \\\n --code=👍 \\\n --name=:+1: \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/reactions/remove\nПолная справка: `pachca api DELETE /messages/{id}/reactions --docs` · схема: `--spec`\n","spec":{"method":"DELETE","path":"/messages/{id}/reactions","description":"Удаление реакции\n\nСнимает с сообщения свою реакцию.\n\nЧужая реакция и реакция, которой нет, отвечают `404`. Подписку на тред, если она появилась вместе с реакцией, снятие реакции не отменяет.","parameters":[{"name":"id","in":"path","description":"Идентификатор сообщения","required":true,"schema":{"type":"integer","format":"int32","example":7231942},"example":7231942},{"name":"code","in":"query","description":"Emoji символ реакции. Именно символ: текстовые записи вроде `+1` или `:+1:` отклоняются как неизвестный эмодзи.","required":true,"schema":{"type":"string","example":"👍"},"example":"👍","explode":false},{"name":"name","in":"query","description":"Текстовое имя эмодзи (используется для кастомных эмодзи)","required":false,"schema":{"type":"string","example":":+1:"},"example":":+1:","explode":false}],"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"reactions:write","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Удаление реакции\n\n**Метод**: `DELETE`\n\n**Путь**: `/messages/{id}/reactions`\n\n> **Скоуп:** `reactions:write`\n\nСнимает с сообщения свою реакцию.\n\nЧужая реакция и реакция, которой нет, отвечают `404`. Подписку на тред, если она появилась вместе с реакцией, снятие реакции не отменяет.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор сообщения\n\n### Query параметры\n\n- `code: string` (required) — Emoji символ реакции. Именно символ: текстовые записи вроде `+1` или `:+1:` отклоняются как неизвестный эмодзи.\n- `name: string` — Текстовое имя эмодзи (используется для кастомных эмодзи)\n\n\n## Пример запроса\n\n```bash\ncurl -X DELETE \"https://api.pachca.com/api/shared/v1/messages/7231942/reactions?code=👍&name=:+1:\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/messages/{id}/reactions","summary":"Список реакций","scope":"reactions:read","plan":null,"auth":true,"paginated":true,"command":"pachca reactions list","docLink":"https://dev.pachca.com/api/reactions/list","describe":"# GET /messages/{id}/reactions — Список реакций\n\n> **Скоуп:** `reactions:read`\n\n> Пагинация: добавьте `--all` для автоматического обхода страниц\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор сообщения\n- `limit` — query: Количество возвращаемых сущностей за один запрос\n- `cursor` — query: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n## Эквивалентная команда\n\n```bash\n# Добавьте --all для автоматической пагинации\npachca reactions list 194275 \\\n --limit=1 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/reactions/list\nПолная справка: `pachca api GET /messages/{id}/reactions --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/messages/{id}/reactions","description":"Список реакций\n\nВсе реакции на сообщении и кто их поставил: в каждой записи приходит `user_id` и сам символ.\n\nУ удалённого сообщения список пуст — реакции пропадают вместе с текстом и файлами.","parameters":[{"name":"id","in":"path","description":"Идентификатор сообщения","required":true,"schema":{"type":"integer","format":"int32","example":194275},"example":194275},{"name":"limit","in":"query","description":"Количество возвращаемых сущностей за один запрос","required":false,"schema":{"type":"integer","format":"int32","default":50,"example":1,"minimum":1,"maximum":50},"example":1,"explode":false},{"name":"cursor","in":"query","description":"Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)","required":false,"schema":{"type":"string","example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9"},"example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9","explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными и пагинацией","required":["data","meta"],"properties":{"data":{"type":"array","items":{"type":"object","description":"Реакция на сообщение","required":["user_id","created_at","code","name"],"properties":{"user_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, который добавил реакцию","example":12},"created_at":{"type":"string","format":"date-time","description":"Дата и время добавления реакции (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2024-01-20T10:30:00.000Z"},"code":{"type":"string","description":"Emoji символ реакции","example":"👍"},"name":{"type":"string","description":"Название emoji реакции","example":":+1::skin-tone-1:"}},"$ref":"#/components/schemas/Reaction"}},"meta":{"type":"object","description":"Метаданные пагинации","required":["paginate"],"properties":{"paginate":{"type":"object","description":"Вспомогательная информация","required":["next_page"],"properties":{"next_page":{"type":"string","description":"Курсор пагинации следующей страницы","example":"eyJxZCO2MiwiZGlyIjomSNYjIn3"},"prev_page":{"type":"string","description":"Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка.","example":"eyJxZCO2MiwiZGlyIjoiYXNjIn0"},"has_next":{"type":"boolean","description":"Есть ли ещё данные на следующей странице. На последней странице — `false`.","example":true},"has_prev":{"type":"boolean","description":"Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`.","example":false}}}},"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"reactions:read","scopeRoles":["owner","admin","user","bot"]},"paginated":true},"docs":"# Список реакций\n\n**Метод**: `GET`\n\n**Путь**: `/messages/{id}/reactions`\n\n> **Скоуп:** `reactions:read`\n\nВсе реакции на сообщении и кто их поставил: в каждой записи приходит `user_id` и сам символ.\n\nУ удалённого сообщения список пуст — реакции пропадают вместе с текстом и файлами.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор сообщения\n\n### Query параметры\n\n- `limit: integer, int32` (default: 50) — Количество возвращаемых сущностей за один запрос\n- `cursor: string` — Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n\n## Пример запроса\n\n```bash\n# Для получения следующей страницы используйте cursor из meta.paginate.next_page\ncurl \"https://api.pachca.com/api/shared/v1/messages/194275/reactions?limit=1\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: array of object` (required)\n - `user_id: integer, int32` (required) — Идентификатор пользователя, который добавил реакцию. Пример: `12`\n - `created_at: date-time` (required) — Дата и время добавления реакции (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2024-01-20T10:30:00.000Z\"`\n - `code: string` (required) — Emoji символ реакции. Пример: `\"👍\"`\n - `name: string` (required) — Название emoji реакции. Пример: `\":+1::skin-tone-1:\"`\n- `meta: object` (required) — Метаданные пагинации\n - `paginate: object` (required) — Вспомогательная информация\n - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `\"eyJxZCO2MiwiZGlyIjomSNYjIn3\"`\n - `prev_page: string` — Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка. Пример: `\"eyJxZCO2MiwiZGlyIjoiYXNjIn0\"`\n - `has_next: boolean` — Есть ли ещё данные на следующей странице. На последней странице — `false`. Пример: `true`\n - `has_prev: boolean` — Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`. Пример: `false`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": [\n {\n \"user_id\": 12,\n \"created_at\": \"2024-01-20T10:30:00.000Z\",\n \"code\": \"👍\",\n \"name\": \":+1::skin-tone-1:\"\n }\n ],\n \"meta\": {\n \"paginate\": {\n \"next_page\": \"eyJxZCO2MiwiZGlyIjomSNYjIn3\",\n \"prev_page\": \"eyJxZCO2MiwiZGlyIjoiYXNjIn0\",\n \"has_next\": true,\n \"has_prev\": false\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/messages/{id}/read_member_ids","summary":"Список прочитавших сообщение","scope":"messages:read","plan":null,"auth":true,"paginated":true,"command":"pachca read-member list-readers","docLink":"https://dev.pachca.com/api/read-member/list-readers","describe":"# GET /messages/{id}/read_member_ids — Список прочитавших сообщение\n\n> **Скоуп:** `messages:read`\n\n> Пагинация: добавьте `--all` для автоматического обхода страниц\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор сообщения\n- `limit` — query: Количество возвращаемых сущностей за один запрос\n- `cursor` — query: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n## Эквивалентная команда\n\n```bash\n# Добавьте --all для автоматической пагинации\npachca read-member list-readers 194275 \\\n --limit=300 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/read-member/list-readers\nПолная справка: `pachca api GET /messages/{id}/read_member_ids --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/messages/{id}/read_member_ids","description":"Список прочитавших сообщение\n\nКто из участников чата дочитал ленту до этого сообщения. Отдаётся плоский массив идентификаторов.\n\nСамого вызывающего и автора сообщения в списке не будет никогда — считаются только остальные участники. Для сообщения в треде это участники треда, а не родительского чата.\n\nИмён метод не отдаёт. За ними ходят методом [Информация о сотруднике](GET /users/{id}) по каждому идентификатору.","parameters":[{"name":"id","in":"path","description":"Идентификатор сообщения","required":true,"schema":{"type":"integer","format":"int32","example":194275},"example":194275},{"name":"limit","in":"query","description":"Количество возвращаемых сущностей за один запрос","required":false,"schema":{"type":"integer","format":"int32","default":300,"example":300,"minimum":1,"maximum":300},"example":300,"explode":false},{"name":"cursor","in":"query","description":"Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)","required":false,"schema":{"type":"string","example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9"},"example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9","explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными и пагинацией","required":["data","meta"],"properties":{"data":{"type":"array","items":{"type":"integer","format":"int32"}},"meta":{"type":"object","description":"Метаданные пагинации","required":["paginate"],"properties":{"paginate":{"type":"object","description":"Вспомогательная информация","required":["next_page"],"properties":{"next_page":{"type":"string","description":"Курсор пагинации следующей страницы","example":"eyJxZCO2MiwiZGlyIjomSNYjIn3"},"prev_page":{"type":"string","description":"Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка.","example":"eyJxZCO2MiwiZGlyIjoiYXNjIn0"},"has_next":{"type":"boolean","description":"Есть ли ещё данные на следующей странице. На последней странице — `false`.","example":true},"has_prev":{"type":"boolean","description":"Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`.","example":false}}}},"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"messages:read","scopeRoles":["owner","admin","user","bot"]},"paginated":true},"docs":"# Список прочитавших сообщение\n\n**Метод**: `GET`\n\n**Путь**: `/messages/{id}/read_member_ids`\n\n> **Скоуп:** `messages:read`\n\nКто из участников чата дочитал ленту до этого сообщения. Отдаётся плоский массив идентификаторов.\n\nСамого вызывающего и автора сообщения в списке не будет никогда — считаются только остальные участники. Для сообщения в треде это участники треда, а не родительского чата.\n\nИмён метод не отдаёт. За ними ходят методом [Информация о сотруднике](GET /users/{id}) по каждому идентификатору.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор сообщения\n\n### Query параметры\n\n- `limit: integer, int32` (default: 300) — Количество возвращаемых сущностей за один запрос\n- `cursor: string` — Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n\n## Пример запроса\n\n```bash\n# Для получения следующей страницы используйте cursor из meta.paginate.next_page\ncurl \"https://api.pachca.com/api/shared/v1/messages/194275/read_member_ids?limit=300\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: array of integer` (required)\n- `meta: object` (required) — Метаданные пагинации\n - `paginate: object` (required) — Вспомогательная информация\n - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `\"eyJxZCO2MiwiZGlyIjomSNYjIn3\"`\n - `prev_page: string` — Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка. Пример: `\"eyJxZCO2MiwiZGlyIjoiYXNjIn0\"`\n - `has_next: boolean` — Есть ли ещё данные на следующей странице. На последней странице — `false`. Пример: `true`\n - `has_prev: boolean` — Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`. Пример: `false`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": [\n 100\n ],\n \"meta\": {\n \"paginate\": {\n \"next_page\": \"eyJxZCO2MiwiZGlyIjomSNYjIn3\",\n \"prev_page\": \"eyJxZCO2MiwiZGlyIjoiYXNjIn0\",\n \"has_next\": true,\n \"has_prev\": false\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"POST","path":"/messages/{id}/thread","summary":"Новый тред","scope":"threads:create","plan":null,"auth":true,"paginated":false,"command":"pachca threads add","docLink":"https://dev.pachca.com/api/threads/add","describe":"# POST /messages/{id}/thread — Новый тред\n\n> **Скоуп:** `threads:create`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор сообщения\n\n## Эквивалентная команда\n\n```bash\npachca threads add 154332686 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/threads/add\nПолная справка: `pachca api POST /messages/{id}/thread --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/messages/{id}/thread","description":"Новый тред\n\nЗаводит тред под сообщением — место, где обсуждают сказанное, не засоряя ленту чата. Тред — это отдельный доступ: в него можно позвать сотрудника, не открывая ему сам чат, и он увидит только тред и родительское сообщение.\n\nВ новый тред сразу попадают тот, кто его создал, автор сообщения, все, кто ставил на сообщение реакции, и участники чата, включившие уведомления о тредах. Упомянутых в родительском сообщении — и поимённо, и тегом — добавляет фоновая задача сразу после создания, поэтому в первом ответе их может ещё не быть. Общие упоминания вроде `@all` в тред никого не приводят, а упомянутого, которого нет в самом чате, тред не подхватит.\n\nПустой тред разговором ещё не является: сразу отправьте в него первое сообщение методом [Новое сообщение](POST /messages) с `entity_type: \"thread\"`. Названия у треда нет, и удалить его нельзя ни через API, ни в приложении.\n\nЕсли у сообщения уже был создан тред, то в ответе на запрос вернётся информация об уже созданном ранее треде. Тред под сообщением, которое само лежит в треде, завести нельзя: вложенных тредов в Пачке нет.","parameters":[{"name":"id","in":"path","description":"Идентификатор сообщения","required":true,"schema":{"type":"integer","format":"int32","example":154332686},"example":154332686}],"responses":{"201":{"description":"The request has succeeded and a new resource has been created as a result.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Тред","required":["id","chat_id","message_id","message_chat_id","updated_at"],"properties":{"id":{"type":"integer","format":"int64","description":"Идентификатор созданного треда (в тред пишут методом [Новое сообщение](POST /messages))","example":265142},"chat_id":{"type":"integer","format":"int64","description":"Идентификатор чата треда (по нему пишут в тред методом [Новое сообщение](POST /messages) и читают его методом [Список сообщений чата](GET /messages))","example":2637266155},"message_id":{"type":"integer","format":"int64","description":"Идентификатор сообщения, к которому был создан тред. `null` для самостоятельного треда, созданного без привязки к сообщению.","example":154332686,"nullable":true},"message_chat_id":{"type":"integer","format":"int64","description":"Идентификатор чата сообщения. `null` для самостоятельного треда, созданного без привязки к сообщению.","example":2637266154,"nullable":true},"updated_at":{"type":"string","format":"date-time","description":"Дата и время обновления треда (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2023-02-01T19:20:47.204Z"}},"$ref":"#/components/schemas/Thread"}}}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"threads:create","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Новый тред\n\n**Метод**: `POST`\n\n**Путь**: `/messages/{id}/thread`\n\n> **Скоуп:** `threads:create`\n\nЗаводит тред под сообщением — место, где обсуждают сказанное, не засоряя ленту чата. Тред — это отдельный доступ: в него можно позвать сотрудника, не открывая ему сам чат, и он увидит только тред и родительское сообщение.\n\nВ новый тред сразу попадают тот, кто его создал, автор сообщения, все, кто ставил на сообщение реакции, и участники чата, включившие уведомления о тредах. Упомянутых в родительском сообщении — и поимённо, и тегом — добавляет фоновая задача сразу после создания, поэтому в первом ответе их может ещё не быть. Общие упоминания вроде `@all` в тред никого не приводят, а упомянутого, которого нет в самом чате, тред не подхватит.\n\nПустой тред разговором ещё не является: сразу отправьте в него первое сообщение методом [Новое сообщение](POST /messages) с `entity_type: \"thread\"`. Названия у треда нет, и удалить его нельзя ни через API, ни в приложении.\n\nЕсли у сообщения уже был создан тред, то в ответе на запрос вернётся информация об уже созданном ранее треде. Тред под сообщением, которое само лежит в треде, завести нельзя: вложенных тредов в Пачке нет.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор сообщения\n\n\n## Пример запроса\n\n```bash\ncurl -X POST \"https://api.pachca.com/api/shared/v1/messages/154332686/thread\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 201: The request has succeeded and a new resource has been created as a result.\n\n**Схема ответа:**\n\n- `data: object` (required) — Тред\n - `id: integer, int64` (required) — Идентификатор созданного треда (в тред пишут методом [Новое сообщение](POST /messages)). Пример: `265142`\n - `chat_id: integer, int64` (required) — Идентификатор чата треда (по нему пишут в тред методом [Новое сообщение](POST /messages) и читают его методом [Список сообщений чата](GET /messages)). Пример: `2637266155`\n - `message_id: integer, int64` (required, nullable) — Идентификатор сообщения, к которому был создан тред. `null` для самостоятельного треда, созданного без привязки к сообщению. Пример: `154332686`\n - `message_chat_id: integer, int64` (required, nullable) — Идентификатор чата сообщения. `null` для самостоятельного треда, созданного без привязки к сообщению. Пример: `2637266154`\n - `updated_at: date-time` (required) — Дата и время обновления треда (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2023-02-01T19:20:47.204Z\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 265142,\n \"chat_id\": 2637266155,\n \"message_id\": 154332686,\n \"message_chat_id\": 2637266154,\n \"updated_at\": \"2023-02-01T19:20:47.204Z\"\n }\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/oauth/token/info","summary":"Информация о токене","scope":null,"plan":null,"auth":true,"paginated":false,"command":"pachca oauth token-info","docLink":"https://dev.pachca.com/api/oauth/token-info","describe":"# GET /oauth/token/info — Информация о токене\n\n## Эквивалентная команда\n\n```bash\npachca oauth token-info \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/oauth/token-info\nПолная справка: `pachca api GET /oauth/token/info --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/oauth/token/info","description":"Информация о токене\n\nСведения о токене, которым сделан сам запрос: его скоупы, владелец, даты создания и последнего использования. Сам токен приходит замаскированным — видны только первые 8 и последние 4 символа.\n\nМетод не требует скоупа и отвечает на любой действующий токен, личный или бота. Поэтому им удобно проверять токен перед работой: живой отвечает `200`, отозванный или просроченный — `401`, а список скоупов сразу показывает, какие методы этому токену доступны.\n\nЧей это токен, видно по `user_id`. Полную карточку владельца отдаёт [Свой профиль](GET /profile).","parameters":[],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Токен доступа","required":["id","token","name","user_id","scopes","created_at","revoked_at","expires_in","last_used_at"],"properties":{"id":{"type":"integer","format":"int64","description":"Идентификатор токена","example":4827},"token":{"type":"string","description":"Маскированный токен (видны первые 8 и последние 4 символа)","example":"cH5kR9mN...x7Qp"},"name":{"type":"string","description":"Пользовательское имя токена. `null` у токена бота — имя задаётся только при создании токена вручную.","example":"Мой API токен","nullable":true},"user_id":{"type":"integer","format":"int64","description":"Идентификатор владельца токена","example":12},"scopes":{"type":"array","description":"Список скоупов токена","example":["messages:read","chats:read"],"items":{"type":"string","description":"Скоуп доступа OAuth токена","enum":["chats:read","chats:create","chats:update","chats:archive","chats:leave","chat_members:read","chat_members:write","chat_exports:read","chat_exports:write","messages:read","messages:create","messages:update","messages:delete","reactions:read","reactions:write","pins:write","threads:read","threads:create","link_previews:write","users:read","users:create","users:update","users:delete","group_tags:read","group_tags:write","bots:read","bots:write","bot_self:webhook:write","bot_self:write","profile:read","profile_status:read","profile_status:write","profile_avatar:write","user_status:read","user_status:write","user_avatar:write","custom_properties:read","audit_events:read","company_chats:read","company_bots:read","tasks:read","tasks:create","tasks:update","tasks:delete","files:read","files:write","uploads:write","views:write","webhooks:read","webhooks:write","webhooks:events:read","webhooks:events:delete","search:users","search:chats","search:messages","drafts:read","drafts:write"],"x-enum-descriptions":{"chats:read":"Просмотр чатов и списка чатов","chats:create":"Создание новых чатов","chats:update":"Изменение настроек чата","chats:archive":"Архивация и разархивация чатов","chats:leave":"Выход из чатов","chat_members:read":"Просмотр участников чата","chat_members:write":"Добавление, изменение и удаление участников чата","chat_exports:read":"Скачивание экспортов чата","chat_exports:write":"Создание экспортов чата","messages:read":"Просмотр сообщений в чатах","messages:create":"Отправка сообщений","messages:update":"Редактирование сообщений","messages:delete":"Удаление сообщений","reactions:read":"Просмотр реакций на сообщения","reactions:write":"Добавление и удаление реакций","pins:write":"Закрепление и открепление сообщений","threads:read":"Просмотр тредов (комментариев)","threads:create":"Создание тредов (комментариев)","link_previews:write":"Unfurl (разворачивание ссылок)","views:write":"Открытие форм (представлений)","users:read":"Просмотр информации о сотрудниках и списка сотрудников","users:create":"Создание новых сотрудников","users:update":"Редактирование данных сотрудника","users:delete":"Удаление сотрудников","group_tags:read":"Просмотр тегов","group_tags:write":"Создание, редактирование и удаление тегов","bots:read":"Просмотр ботов","bots:write":"Управление ботами","bot_self:webhook:write":"Самостоятельное управление адресом вебхука бота","bot_self:write":"Самостоятельное управление настройками бота","profile:read":"Просмотр информации о своем профиле","profile_status:read":"Просмотр статуса профиля","profile_status:write":"Изменение и удаление статуса профиля","profile_avatar:write":"Изменение и удаление аватара профиля","user_status:read":"Просмотр статуса сотрудника","user_status:write":"Изменение и удаление статуса сотрудника","user_avatar:write":"Изменение и удаление аватара сотрудника","custom_properties:read":"Просмотр дополнительных полей","audit_events:read":"Просмотр журнала аудита","company_chats:read":"Просмотр списка всех чатов пространства","company_bots:read":"Просмотр списка всех ботов пространства","tasks:read":"Просмотр задач","tasks:create":"Создание задач","tasks:update":"Изменение задачи","tasks:delete":"Удаление задачи","files:read":"Скачивание файлов","files:write":"Загрузка файлов","uploads:write":"Получение данных для загрузки файлов","webhooks:read":"Просмотр вебхуков","webhooks:write":"Создание и управление вебхуками","webhooks:events:read":"Просмотр лога вебхуков","webhooks:events:delete":"Удаление записи в логе вебхука","search:users":"Поиск сотрудников","search:chats":"Поиск чатов","search:messages":"Поиск сообщений","drafts:read":"Просмотр черновиков и отложенных сообщений","drafts:write":"Создание, изменение и удаление черновиков и отложенных сообщений"},"x-scope-roles":{"chats:read":["owner","admin","user","bot"],"chats:create":["owner","admin","user","bot"],"chats:update":["owner","admin","user","bot"],"chats:archive":["owner","admin","user","bot"],"chats:leave":["owner","admin","user","bot"],"chat_members:read":["owner","admin","user","bot"],"chat_members:write":["owner","admin","user","bot"],"chat_exports:read":["owner"],"chat_exports:write":["owner"],"messages:read":["owner","admin","user","bot"],"messages:create":["owner","admin","user","bot"],"messages:update":["owner","admin","user","bot"],"messages:delete":["owner","admin","user","bot"],"reactions:read":["owner","admin","user","bot"],"reactions:write":["owner","admin","user","bot"],"pins:write":["owner","admin","user","bot"],"threads:read":["owner","admin","user","bot"],"threads:create":["owner","admin","user","bot"],"link_previews:write":["owner","admin","user","bot"],"views:write":["owner","admin","user","bot"],"users:read":["owner","admin","user","bot"],"users:create":["owner","admin"],"users:update":["owner","admin"],"users:delete":["owner","admin"],"group_tags:read":["owner","admin","user","bot"],"group_tags:write":["owner","admin"],"bots:read":["owner","admin","user"],"bots:write":["owner","admin","user"],"bot_self:webhook:write":["bot"],"bot_self:write":["bot"],"profile:read":["owner","admin","user","bot"],"profile_status:read":["owner","admin","user","bot"],"profile_status:write":["owner","admin","user","bot"],"profile_avatar:write":["owner","admin","user","bot"],"user_status:read":["owner","admin","user","bot"],"user_status:write":["owner","admin"],"user_avatar:write":["owner","admin"],"custom_properties:read":["owner","admin","user","bot"],"audit_events:read":["owner"],"company_chats:read":["owner"],"company_bots:read":["owner"],"tasks:read":["owner","admin","user","bot"],"tasks:create":["owner","admin","user","bot"],"tasks:update":["owner","admin","user","bot"],"tasks:delete":["owner","admin","user","bot"],"files:read":["owner","admin","user","bot"],"files:write":["owner","admin","user","bot"],"uploads:write":["owner","admin","user","bot"],"webhooks:read":["owner","admin","user","bot"],"webhooks:write":["owner","admin","user","bot"],"webhooks:events:read":["owner","admin","user","bot"],"webhooks:events:delete":["owner","admin","user","bot"],"search:users":["owner","admin","user","bot"],"search:chats":["owner","admin","user","bot"],"search:messages":["owner","admin","user","bot"],"drafts:read":["owner","admin","user"],"drafts:write":["owner","admin","user"]},"$ref":"#/components/schemas/OAuthScope"}},"created_at":{"type":"string","format":"date-time","description":"Дата создания токена","example":"2025-01-15T10:30:00.000Z"},"revoked_at":{"type":"string","format":"date-time","description":"Дата отзыва токена. Всегда `null`: по отозванному токену метод возвращает 401.","example":null,"nullable":true},"expires_in":{"type":"integer","format":"int32","description":"Время жизни токена в секундах. `null` у бессрочного токена — такие выдаёт интерфейс. У токена, полученного входом из CLI, здесь `3600`: он живёт час и продлевается сам.","example":null,"nullable":true},"last_used_at":{"type":"string","format":"date-time","description":"Дата последнего использования токена. `null`, пока по токену не было ни одного запроса. Обновляется не чаще раза в час, поэтому может отставать.","example":"2025-02-24T14:20:00.000Z","nullable":true}},"$ref":"#/components/schemas/AccessTokenInfo"}}}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}}},"paginated":false},"docs":"# Информация о токене\n\n**Метод**: `GET`\n\n**Путь**: `/oauth/token/info`\n\nСведения о токене, которым сделан сам запрос: его скоупы, владелец, даты создания и последнего использования. Сам токен приходит замаскированным — видны только первые 8 и последние 4 символа.\n\nМетод не требует скоупа и отвечает на любой действующий токен, личный или бота. Поэтому им удобно проверять токен перед работой: живой отвечает `200`, отозванный или просроченный — `401`, а список скоупов сразу показывает, какие методы этому токену доступны.\n\nЧей это токен, видно по `user_id`. Полную карточку владельца отдаёт [Свой профиль](GET /profile).\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/oauth/token/info\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Токен доступа\n - `id: integer, int64` (required) — Идентификатор токена. Пример: `4827`\n - `token: string` (required) — Маскированный токен (видны первые 8 и последние 4 символа). Пример: `\"cH5kR9mN...x7Qp\"`\n - `name: string` (required, nullable) — Пользовательское имя токена. `null` у токена бота — имя задаётся только при создании токена вручную. Пример: `\"Мой API токен\"`\n - `user_id: integer, int64` (required) — Идентификатор владельца токена. Пример: `12`\n - `scopes: array of string` (required) — Список скоупов токена. Пример: `[\"messages:read\",\"chats:read\"]`\n - `created_at: date-time` (required) — Дата создания токена. Пример: `\"2025-01-15T10:30:00.000Z\"`\n - `revoked_at: date-time` (required, nullable) — Дата отзыва токена. Всегда `null`: по отозванному токену метод возвращает 401. Пример: `null`\n - `expires_in: integer, int32` (required, nullable) — Время жизни токена в секундах. `null` у бессрочного токена — такие выдаёт интерфейс. У токена, полученного входом из CLI, здесь `3600`: он живёт час и продлевается сам. Пример: `null`\n - `last_used_at: date-time` (required, nullable) — Дата последнего использования токена. `null`, пока по токену не было ни одного запроса. Обновляется не чаще раза в час, поэтому может отставать. Пример: `\"2025-02-24T14:20:00.000Z\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 4827,\n \"token\": \"cH5kR9mN...x7Qp\",\n \"name\": \"Мой API токен\",\n \"user_id\": 12,\n \"scopes\": [\n \"messages:read\",\n \"chats:read\"\n ],\n \"created_at\": \"2025-01-15T10:30:00.000Z\",\n \"revoked_at\": null,\n \"expires_in\": null,\n \"last_used_at\": \"2025-02-24T14:20:00.000Z\"\n }\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n"},{"method":"GET","path":"/profile","summary":"Свой профиль","scope":"profile:read","plan":null,"auth":true,"paginated":false,"command":"pachca profile get","docLink":"https://dev.pachca.com/api/profile/get","describe":"# GET /profile — Свой профиль\n\n> **Скоуп:** `profile:read`\n\n## Эквивалентная команда\n\n```bash\npachca profile get \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/profile/get\nПолная справка: `pachca api GET /profile --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/profile","description":"Свой профиль\n\nКарточка владельца токена. У бот-токена это карточка самого бота.\n\nЧасовой пояс нужен, чтобы правильно понимать сроки, названные словами: «до 15:00» и «к пятнице» считаются в поясе сотрудника, а не в UTC. Пустое значение означает часовой пояс пространства.\n\nЧужую карточку отдаёт [Информация о сотруднике](GET /users/{id}).","parameters":[],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Сотрудник","required":["id","first_name","last_name","nickname","email","phone_number","department","title","role","suspended","invite_status","inviter_id","list_tags","custom_properties","user_status","bot","sso","created_at","last_activity_at","time_zone","image_url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор пользователя","example":12},"first_name":{"type":"string","description":"Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`).","example":"Олег","nullable":true,"maxLength":255},"last_name":{"type":"string","description":"Фамилия. Если не заполнена, возвращается `null` или пустая строка.","example":"Петров","nullable":true,"maxLength":255},"nickname":{"type":"string","description":"Имя пользователя","example":"olegpetrov","maxLength":255},"email":{"type":"string","description":"Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда.","example":"olegp@example.com","nullable":true,"maxLength":255},"phone_number":{"type":"string","description":"Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда.","example":"+79001234567","nullable":true,"maxLength":255},"department":{"type":"string","description":"Департамент. Если не указан, возвращается `null` или пустая строка.","example":"Продукт","nullable":true,"maxLength":255},"title":{"type":"string","description":"Должность. Если не указана, возвращается `null` или пустая строка.","example":"CIO","nullable":true},"role":{"description":"Уровень доступа","example":"admin","allOf":[{"type":"string","description":"Роль пользователя в системе","enum":["admin","user","multi_guest","guest"],"x-enum-descriptions":{"admin":"Администратор","user":"Сотрудник","multi_guest":"Мульти-гость","guest":"Гость"},"$ref":"#/components/schemas/UserRole"}]},"suspended":{"type":"boolean","description":"Деактивация пользователя","example":false},"invite_status":{"description":"Статус приглашения","example":"confirmed","allOf":[{"type":"string","description":"Статус приглашения пользователя","enum":["confirmed","sent"],"x-enum-descriptions":{"confirmed":"Принято","sent":"Отправлено"},"$ref":"#/components/schemas/InviteStatus"}]},"inviter_id":{"type":"integer","format":"int32","description":"Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён.","example":185,"nullable":true},"list_tags":{"type":"array","description":"Массив тегов, привязанных к сотруднику","example":["Product","Design"],"items":{"type":"string"}},"custom_properties":{"type":"array","description":"Дополнительные поля сотрудника","items":{"type":"object","description":"Дополнительное поле","required":["id","name","data_type","value"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор поля","example":1678},"name":{"type":"string","description":"Название поля","example":"Город","maxLength":32},"data_type":{"description":"Тип поля","example":"string","allOf":[{"type":"string","description":"Тип данных дополнительного поля","enum":["string","number","date","link"],"x-enum-descriptions":{"string":"Строковое значение","number":"Числовое значение","date":"Дата","link":"Ссылка"},"$ref":"#/components/schemas/CustomPropertyDataType"}]},"value":{"type":"string","description":"Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601.","example":"Санкт-Петербург","nullable":true,"maxLength":768}},"$ref":"#/components/schemas/CustomProperty"}},"user_status":{"type":"object","description":"Статус. `null`, если у сотрудника не установлен статус.","nullable":true,"allOf":[{"type":"object","description":"Статус пользователя","required":["emoji","title","expires_at","is_away","away_message"],"properties":{"emoji":{"type":"string","description":"Emoji символ статуса","example":"🎮"},"title":{"type":"string","description":"Текст статуса","example":"Очень занят","maxLength":50},"expires_at":{"type":"string","format":"date-time","description":"Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически.","example":"2024-04-08T10:00:00.000Z","nullable":true},"is_away":{"type":"boolean","description":"Режим «Нет на месте»","example":false},"away_message":{"type":"object","description":"Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.","required":["text"],"nullable":true,"properties":{"text":{"type":"string","description":"Текст сообщения","example":"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.","maxLength":1024}}}},"$ref":"#/components/schemas/UserStatus"}]},"bot":{"type":"boolean","description":"Является ботом","example":false},"sso":{"type":"boolean","description":"Использует ли пользователь SSO","example":false},"created_at":{"type":"string","format":"date-time","description":"Дата создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2020-06-08T09:32:57.000Z"},"last_activity_at":{"type":"string","format":"date-time","description":"Дата последней активности пользователя (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если сотрудник ещё ни разу не заходил в Пачку — в этом случае `invite_status` возвращает `sent`.","example":"2025-01-20T13:40:07.000Z","nullable":true},"time_zone":{"type":"string","description":"Часовой пояс пользователя. `null`, если сотрудник не задал личный часовой пояс — тогда применяется часовой пояс компании.","example":"Europe/Moscow","nullable":true,"maxLength":32},"image_url":{"type":"string","description":"Ссылка на скачивание аватарки пользователя. `null`, если аватарка не загружена.","example":"https://app.pachca.com/users/12/photo.jpg","nullable":true}},"$ref":"#/components/schemas/User"}}}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}}},"requirements":{"scope":"profile:read","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Свой профиль\n\n**Метод**: `GET`\n\n**Путь**: `/profile`\n\n> **Скоуп:** `profile:read`\n\nКарточка владельца токена. У бот-токена это карточка самого бота.\n\nЧасовой пояс нужен, чтобы правильно понимать сроки, названные словами: «до 15:00» и «к пятнице» считаются в поясе сотрудника, а не в UTC. Пустое значение означает часовой пояс пространства.\n\nЧужую карточку отдаёт [Информация о сотруднике](GET /users/{id}).\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/profile\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Сотрудник\n - `id: integer, int32` (required) — Идентификатор пользователя. Пример: `12`\n - `first_name: string` (required, nullable, max length: 255) — Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`). Пример: `\"Олег\"`\n - `last_name: string` (required, nullable, max length: 255) — Фамилия. Если не заполнена, возвращается `null` или пустая строка. Пример: `\"Петров\"`\n - `nickname: string` (required, max length: 255) — Имя пользователя. Пример: `\"olegpetrov\"`\n - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `\"olegp@example.com\"`\n - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `\"+79001234567\"`\n - `department: string` (required, nullable, max length: 255) — Департамент. Если не указан, возвращается `null` или пустая строка. Пример: `\"Продукт\"`\n - `title: string` (required, nullable) — Должность. Если не указана, возвращается `null` или пустая строка. Пример: `\"CIO\"`\n - `role: string` (required) — Уровень доступа\n Значения: `admin` — Администратор, `user` — Сотрудник, `multi_guest` — Мульти-гость, `guest` — Гость\n - `suspended: boolean` (required) — Деактивация пользователя. Пример: `false`\n - `invite_status: string` (required) — Статус приглашения\n Значения: `confirmed` — Принято, `sent` — Отправлено\n - `inviter_id: integer, int32` (required, nullable) — Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён. Пример: `185`\n - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Пример: `[\"Product\",\"Design\"]`\n - `custom_properties: array of object` (required) — Дополнительные поля сотрудника\n - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678`\n - `name: string` (required, max length: 32) — Название поля. Пример: `\"Город\"`\n - `data_type: string` (required) — Тип поля\n Значения: `string` — Строковое значение, `number` — Числовое значение, `date` — Дата, `link` — Ссылка\n - `value: string` (required, nullable, max length: 768) — Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601. Пример: `\"Санкт-Петербург\"`\n - `user_status: object` (required) — Статус. `null`, если у сотрудника не установлен статус.\n - `emoji: string` (required) — Emoji символ статуса. Пример: `\"🎮\"`\n - `title: string` (required, max length: 50) — Текст статуса. Пример: `\"Очень занят\"`\n - `expires_at: date-time` (required, nullable) — Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически. Пример: `\"2024-04-08T10:00:00.000Z\"`\n - `is_away: boolean` (required) — Режим «Нет на месте». Пример: `false`\n - `away_message: object` (required, nullable) — Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.\n - `text: string` (required, max length: 1024) — Текст сообщения. Пример: `\"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"`\n - `bot: boolean` (required) — Является ботом. Пример: `false`\n - `sso: boolean` (required) — Использует ли пользователь SSO. Пример: `false`\n - `created_at: date-time` (required) — Дата создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2020-06-08T09:32:57.000Z\"`\n - `last_activity_at: date-time` (required, nullable) — Дата последней активности пользователя (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если сотрудник ещё ни разу не заходил в Пачку — в этом случае `invite_status` возвращает `sent`. Пример: `\"2025-01-20T13:40:07.000Z\"`\n - `time_zone: string` (required, nullable, max length: 32) — Часовой пояс пользователя. `null`, если сотрудник не задал личный часовой пояс — тогда применяется часовой пояс компании. Пример: `\"Europe/Moscow\"`\n - `image_url: string` (required, nullable) — Ссылка на скачивание аватарки пользователя. `null`, если аватарка не загружена. Пример: `\"https://app.pachca.com/users/12/photo.jpg\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 12,\n \"first_name\": \"Олег\",\n \"last_name\": \"Петров\",\n \"nickname\": \"olegpetrov\",\n \"email\": \"olegp@example.com\",\n \"phone_number\": \"+79001234567\",\n \"department\": \"Продукт\",\n \"title\": \"CIO\",\n \"role\": \"admin\",\n \"suspended\": false,\n \"invite_status\": \"confirmed\",\n \"inviter_id\": 185,\n \"list_tags\": [\n \"Product\",\n \"Design\"\n ],\n \"custom_properties\": [\n {\n \"id\": 1678,\n \"name\": \"Город\",\n \"data_type\": \"string\",\n \"value\": \"Санкт-Петербург\"\n }\n ],\n \"user_status\": {\n \"emoji\": \"🎮\",\n \"title\": \"Очень занят\",\n \"expires_at\": \"2024-04-08T10:00:00.000Z\",\n \"is_away\": false,\n \"away_message\": {\n \"text\": \"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"\n }\n },\n \"bot\": false,\n \"sso\": false,\n \"created_at\": \"2020-06-08T09:32:57.000Z\",\n \"last_activity_at\": \"2025-01-20T13:40:07.000Z\",\n \"time_zone\": \"Europe/Moscow\",\n \"image_url\": \"https://app.pachca.com/users/12/photo.jpg\"\n }\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n"},{"method":"PUT","path":"/profile/avatar","summary":"Загрузка своего аватара","scope":"profile_avatar:write","plan":null,"auth":true,"paginated":false,"command":"pachca profile update-avatar","docLink":"https://dev.pachca.com/api/profile/update-avatar","describe":"# PUT /profile/avatar — Загрузка своего аватара\n\n> **Скоуп:** `profile_avatar:write`\n\n## Тело запроса\n\n- `image: binary` (required) — Файл изображения для аватара\n\n## Эквивалентная команда\n\n```bash\npachca profile update-avatar \\\n --file=./image.jpg \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/profile/update-avatar\nПолная справка: `pachca api PUT /profile/avatar --docs` · схема: `--spec`\n","spec":{"method":"PUT","path":"/profile/avatar","description":"Загрузка своего аватара\n\nСтавит или заменяет аватар владельца токена. Файл передаётся в формате `multipart/form-data`, в ответе приходит только ссылка на новое изображение.\n\nПринимаются `jpg`, `jpeg`, `png` и `gif`, причём анимированный `gif` — не больше 2 МБ. Картинка уменьшается до 1024 на 1024 пикселя, а непрозрачный `png` сохраняется как `jpg`.\n\nАватар другого сотрудника ставит [Загрузка аватара сотрудника](PUT /users/{user_id}/avatar), и это доступно только владельцу пространства и администратору.","parameters":[],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"type":"string","format":"binary","description":"Файл изображения для аватара"}}}}}},"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Данные аватара","required":["image_url"],"properties":{"image_url":{"type":"string","description":"URL аватара","example":"https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg"}},"$ref":"#/components/schemas/AvatarData"}}}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"},{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}]}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"profile_avatar:write","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Загрузка своего аватара\n\n**Метод**: `PUT`\n\n**Путь**: `/profile/avatar`\n\n> **Скоуп:** `profile_avatar:write`\n\nСтавит или заменяет аватар владельца токена. Файл передаётся в формате `multipart/form-data`, в ответе приходит только ссылка на новое изображение.\n\nПринимаются `jpg`, `jpeg`, `png` и `gif`, причём анимированный `gif` — не больше 2 МБ. Картинка уменьшается до 1024 на 1024 пикселя, а непрозрачный `png` сохраняется как `jpg`.\n\nАватар другого сотрудника ставит [Загрузка аватара сотрудника](PUT /users/{user_id}/avatar), и это доступно только владельцу пространства и администратору.\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `multipart/form-data`\n\n### Схема\n\n- `image: binary` (required) — Файл изображения для аватара\n\n\n## Пример запроса\n\n```bash\ncurl -X PUT \"https://api.pachca.com/api/shared/v1/profile/avatar\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -F 'image=@filename.png'\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Данные аватара\n - `image_url: string` (required) — URL аватара. Пример: `\"https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"image_url\": \"https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg\"\n }\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n**anyOf** - один из вариантов:\n\n- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)\n - `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403)\n - `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n - `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"DELETE","path":"/profile/avatar","summary":"Удаление своего аватара","scope":"profile_avatar:write","plan":null,"auth":true,"paginated":false,"command":"pachca profile delete-avatar","docLink":"https://dev.pachca.com/api/profile/delete-avatar","describe":"# DELETE /profile/avatar — Удаление своего аватара\n\n> **Скоуп:** `profile_avatar:write`\n\n## Эквивалентная команда\n\n```bash\npachca profile delete-avatar \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/profile/delete-avatar\nПолная справка: `pachca api DELETE /profile/avatar --docs` · схема: `--spec`\n","spec":{"method":"DELETE","path":"/profile/avatar","description":"Удаление своего аватара\n\nУбирает аватар владельца токена, дальше в интерфейсе показываются инициалы. Если аватара не было, ответ всё равно `204`.","parameters":[],"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"},{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}]}}}}},"requirements":{"scope":"profile_avatar:write","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Удаление своего аватара\n\n**Метод**: `DELETE`\n\n**Путь**: `/profile/avatar`\n\n> **Скоуп:** `profile_avatar:write`\n\nУбирает аватар владельца токена, дальше в интерфейсе показываются инициалы. Если аватара не было, ответ всё равно `204`.\n\n## Пример запроса\n\n```bash\ncurl -X DELETE \"https://api.pachca.com/api/shared/v1/profile/avatar\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n**anyOf** - один из вариантов:\n\n- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)\n - `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403)\n - `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n - `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/profile/status","summary":"Свой статус","scope":"profile_status:read","plan":null,"auth":true,"paginated":false,"command":"pachca profile get-status","docLink":"https://dev.pachca.com/api/profile/get-status","describe":"# GET /profile/status — Свой статус\n\n> **Скоуп:** `profile_status:read`\n\n## Эквивалентная команда\n\n```bash\npachca profile get-status \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/profile/get-status\nПолная справка: `pachca api GET /profile/status --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/profile/status","description":"Свой статус\n\nСтатус владельца токена: эмодзи, подпись, срок и режим «Нет на месте».\n\nЕсли статус не установлен, метод возвращает `200` и `null` в теле ответа — без объекта-обёртки. Статус с истёкшим `expires_at` какое-то время ещё возвращается, пока не будет очищен, поэтому проверяйте `expires_at` на стороне клиента.","parameters":[],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"nullable":true,"properties":{"data":{"type":"object","description":"Статус пользователя","required":["emoji","title","expires_at","is_away","away_message"],"properties":{"emoji":{"type":"string","description":"Emoji символ статуса","example":"🎮"},"title":{"type":"string","description":"Текст статуса","example":"Очень занят","maxLength":50},"expires_at":{"type":"string","format":"date-time","description":"Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически.","example":"2024-04-08T10:00:00.000Z","nullable":true},"is_away":{"type":"boolean","description":"Режим «Нет на месте»","example":false},"away_message":{"type":"object","description":"Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.","required":["text"],"nullable":true,"properties":{"text":{"type":"string","description":"Текст сообщения","example":"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.","maxLength":1024}}}},"$ref":"#/components/schemas/UserStatus"}}}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}}},"requirements":{"scope":"profile_status:read","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Свой статус\n\n**Метод**: `GET`\n\n**Путь**: `/profile/status`\n\n> **Скоуп:** `profile_status:read`\n\nСтатус владельца токена: эмодзи, подпись, срок и режим «Нет на месте».\n\nЕсли статус не установлен, метод возвращает `200` и `null` в теле ответа — без объекта-обёртки. Статус с истёкшим `expires_at` какое-то время ещё возвращается, пока не будет очищен, поэтому проверяйте `expires_at` на стороне клиента.\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/profile/status\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Статус пользователя\n - `emoji: string` (required) — Emoji символ статуса. Пример: `\"🎮\"`\n - `title: string` (required, max length: 50) — Текст статуса. Пример: `\"Очень занят\"`\n - `expires_at: date-time` (required, nullable) — Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически. Пример: `\"2024-04-08T10:00:00.000Z\"`\n - `is_away: boolean` (required) — Режим «Нет на месте». Пример: `false`\n - `away_message: object` (required, nullable) — Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.\n - `text: string` (required, max length: 1024) — Текст сообщения. Пример: `\"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"emoji\": \"🎮\",\n \"title\": \"Очень занят\",\n \"expires_at\": \"2024-04-08T10:00:00.000Z\",\n \"is_away\": false,\n \"away_message\": {\n \"text\": \"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"\n }\n }\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n"},{"method":"PUT","path":"/profile/status","summary":"Новый свой статус","scope":"profile_status:write","plan":null,"auth":true,"paginated":false,"command":"pachca profile update-status","docLink":"https://dev.pachca.com/api/profile/update-status","describe":"# PUT /profile/status — Новый свой статус\n\n> **Скоуп:** `profile_status:write`\n\n## Тело запроса\n\n- `status: object` (required)\n - `emoji: string` (required) — Emoji символ статуса\n - `title: string` (required, max length: 50) — Текст статуса\n - `expires_at: date-time` — Срок жизни статуса (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Сюда идёт срок, названный словами: «до трёх» это значение поля, а не часть подписи.\n - `is_away: boolean` — Режим «Нет на месте»\n - `away_message: string` (max length: 1024) — Текст сообщения при режиме «Нет на месте». Отображается в профиле и при личных сообщениях/упоминаниях.\n\n## Эквивалентная команда\n\n```bash\npachca profile update-status \\\n --emoji=🎮 \\\n --title='Очень занят' \\\n --expires-at=2024-04-08T10:00:00.000Z \\\n --is-away \\\n --away-message='Вернусь после 15:00' \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/profile/update-status\nПолная справка: `pachca api PUT /profile/status --docs` · схема: `--spec`\n","spec":{"method":"PUT","path":"/profile/status","description":"Новый свой статус\n\nСтавит статус владельцу токена: эмодзи, подпись и, если нужно, срок. Метод доступен и боту — статус появится в карточке самого бота.\n\nРежим «Нет на месте» включается этим же методом, флагом `is_away`. В `away_message` кладут текст, который увидят в профиле и при попытке написать или упомянуть. Когда срок из `expires_at` истекает, статус снимается целиком, вместе с режимом и этим текстом.\n\nПерезаписываются только переданные поля. Чтобы продлить текущий статус, достаточно прислать один `expires_at`.\n\nСрок, названный словами («до трёх», «до конца дня»), — это `expires_at`, а не часть подписи. Считается он в часовом поясе сотрудника, а пояс приходит в методе [Свой профиль](GET /profile).\n\nЭмодзи обязателен, и он должен быть ровно один, без текста вокруг. Подпись обязательна и не длиннее 50 символов.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на установку статуса","required":["status"],"properties":{"status":{"type":"object","required":["emoji","title"],"properties":{"emoji":{"type":"string","description":"Emoji символ статуса","example":"🎮"},"title":{"type":"string","description":"Текст статуса","example":"Очень занят","maxLength":50},"expires_at":{"type":"string","format":"date-time","description":"Срок жизни статуса (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Сюда идёт срок, названный словами: «до трёх» это значение поля, а не часть подписи.","example":"2024-04-08T10:00:00.000Z"},"is_away":{"type":"boolean","description":"Режим «Нет на месте»","example":true},"away_message":{"type":"string","description":"Текст сообщения при режиме «Нет на месте». Отображается в профиле и при личных сообщениях/упоминаниях.","example":"Вернусь после 15:00","maxLength":1024}}}},"$ref":"#/components/schemas/StatusUpdateRequest"}}}},"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Статус пользователя","required":["emoji","title","expires_at","is_away","away_message"],"properties":{"emoji":{"type":"string","description":"Emoji символ статуса","example":"🎮"},"title":{"type":"string","description":"Текст статуса","example":"Очень занят","maxLength":50},"expires_at":{"type":"string","format":"date-time","description":"Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически.","example":"2024-04-08T10:00:00.000Z","nullable":true},"is_away":{"type":"boolean","description":"Режим «Нет на месте»","example":false},"away_message":{"type":"object","description":"Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.","required":["text"],"nullable":true,"properties":{"text":{"type":"string","description":"Текст сообщения","example":"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.","maxLength":1024}}}},"$ref":"#/components/schemas/UserStatus"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"profile_status:write","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Новый свой статус\n\n**Метод**: `PUT`\n\n**Путь**: `/profile/status`\n\n> **Скоуп:** `profile_status:write`\n\nСтавит статус владельцу токена: эмодзи, подпись и, если нужно, срок. Метод доступен и боту — статус появится в карточке самого бота.\n\nРежим «Нет на месте» включается этим же методом, флагом `is_away`. В `away_message` кладут текст, который увидят в профиле и при попытке написать или упомянуть. Когда срок из `expires_at` истекает, статус снимается целиком, вместе с режимом и этим текстом.\n\nПерезаписываются только переданные поля. Чтобы продлить текущий статус, достаточно прислать один `expires_at`.\n\nСрок, названный словами («до трёх», «до конца дня»), — это `expires_at`, а не часть подписи. Считается он в часовом поясе сотрудника, а пояс приходит в методе [Свой профиль](GET /profile).\n\nЭмодзи обязателен, и он должен быть ровно один, без текста вокруг. Подпись обязательна и не длиннее 50 символов.\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `status: object` (required)\n - `emoji: string` (required) — Emoji символ статуса. Пример: `\"🎮\"`\n - `title: string` (required, max length: 50) — Текст статуса. Пример: `\"Очень занят\"`\n - `expires_at: date-time` — Срок жизни статуса (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Сюда идёт срок, названный словами: «до трёх» это значение поля, а не часть подписи. Пример: `\"2024-04-08T10:00:00.000Z\"`\n - `is_away: boolean` — Режим «Нет на месте». Пример: `true`\n - `away_message: string` (max length: 1024) — Текст сообщения при режиме «Нет на месте». Отображается в профиле и при личных сообщениях/упоминаниях. Пример: `\"Вернусь после 15:00\"`\n\n### Пример\n\n```json\n{\n \"status\": {\n \"emoji\": \"🎮\",\n \"title\": \"Очень занят\",\n \"expires_at\": \"2024-04-08T10:00:00.000Z\",\n \"is_away\": true,\n \"away_message\": \"Вернусь после 15:00\"\n }\n}\n```\n\n## Пример запроса\n\n```bash\ncurl -X PUT \"https://api.pachca.com/api/shared/v1/profile/status\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"status\": {\n \"emoji\": \"🎮\",\n \"title\": \"Очень занят\",\n \"expires_at\": \"2024-04-08T10:00:00.000Z\",\n \"is_away\": true,\n \"away_message\": \"Вернусь после 15:00\"\n }\n}'\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Статус пользователя\n - `emoji: string` (required) — Emoji символ статуса. Пример: `\"🎮\"`\n - `title: string` (required, max length: 50) — Текст статуса. Пример: `\"Очень занят\"`\n - `expires_at: date-time` (required, nullable) — Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически. Пример: `\"2024-04-08T10:00:00.000Z\"`\n - `is_away: boolean` (required) — Режим «Нет на месте». Пример: `false`\n - `away_message: object` (required, nullable) — Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.\n - `text: string` (required, max length: 1024) — Текст сообщения. Пример: `\"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"emoji\": \"🎮\",\n \"title\": \"Очень занят\",\n \"expires_at\": \"2024-04-08T10:00:00.000Z\",\n \"is_away\": false,\n \"away_message\": {\n \"text\": \"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"DELETE","path":"/profile/status","summary":"Удаление своего статуса","scope":"profile_status:write","plan":null,"auth":true,"paginated":false,"command":"pachca profile delete-status","docLink":"https://dev.pachca.com/api/profile/delete-status","describe":"# DELETE /profile/status — Удаление своего статуса\n\n> **Скоуп:** `profile_status:write`\n\n## Эквивалентная команда\n\n```bash\npachca profile delete-status \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/profile/delete-status\nПолная справка: `pachca api DELETE /profile/status --docs` · схема: `--spec`\n","spec":{"method":"DELETE","path":"/profile/status","description":"Удаление своего статуса\n\nСнимает статус с владельца токена вместе с режимом «Нет на месте» и его текстом. Если статуса не было, ответ всё равно `204`, поэтому повторный вызов безопасен.","parameters":[],"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}}},"requirements":{"scope":"profile_status:write","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Удаление своего статуса\n\n**Метод**: `DELETE`\n\n**Путь**: `/profile/status`\n\n> **Скоуп:** `profile_status:write`\n\nСнимает статус с владельца токена вместе с режимом «Нет на месте» и его текстом. Если статуса не было, ответ всё равно `204`, поэтому повторный вызов безопасен.\n\n## Пример запроса\n\n```bash\ncurl -X DELETE \"https://api.pachca.com/api/shared/v1/profile/status\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n"},{"method":"GET","path":"/search/chats","summary":"Поиск чатов","scope":"search:chats","plan":null,"auth":true,"paginated":true,"command":"pachca search list-chats","docLink":"https://dev.pachca.com/api/search/list-chats","describe":"# GET /search/chats — Поиск чатов\n\n> **Скоуп:** `search:chats`\n\n> Пагинация: добавьте `--all` для автоматического обхода страниц\n\n## Параметры\n\n- `query` — query: Текст поискового запроса\n- `limit` — query: Количество возвращаемых результатов за один запрос\n- `cursor` — query: Курсор для пагинации (из `meta.paginate.next_page`)\n- `order` — query: Направление сортировки\n- `created_from` — query: Фильтр по дате создания (от)\n- `created_to` — query: Фильтр по дате создания (до)\n- `active` — query: Фильтр по активности чата\n- `chat_subtype` — query: Фильтр по типу чата\n- `personal` — query: Фильтр по личным чатам\n\n## Эквивалентная команда\n\n```bash\n# Добавьте --all для автоматической пагинации\npachca search list-chats \\\n --query=Разработка \\\n --limit=10 \\\n --order=desc \\\n --created-from=2025-01-01T00:00:00.000Z \\\n --created-to=2025-02-01T00:00:00.000Z \\\n --active \\\n --chat-subtype=discussion \\\n --no-personal \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/search/list-chats\nПолная справка: `pachca api GET /search/chats --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/search/chats","description":"Поиск чатов\n\nИщет беседы и каналы по названию, прощая опечатки. Находит и открытые чаты пространства, куда вызывающий не вступал, а закрытые — только те, где он состоит.\n\nЛичные переписки по умолчанию не ищутся. Передайте `personal=true`, и поиск пойдёт по имени собеседника, а не по названию чата.\n\nМетод ищет по названиям, а не по содержанию. Если нужно найти, где что-то обсуждали или о чём договорились, это [Поиск сообщений](GET /search/messages).","parameters":[{"name":"query","in":"query","description":"Текст поискового запроса","required":false,"schema":{"type":"string","example":"Разработка"},"example":"Разработка","explode":false},{"name":"limit","in":"query","description":"Количество возвращаемых результатов за один запрос","required":false,"schema":{"type":"integer","format":"int32","default":100,"example":10,"maximum":100},"example":10,"explode":false},{"name":"cursor","in":"query","description":"Курсор для пагинации (из `meta.paginate.next_page`)","required":false,"schema":{"type":"string","example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9"},"example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9","explode":false},{"name":"order","in":"query","description":"Направление сортировки","required":false,"schema":{"type":"string","description":"Порядок сортировки","enum":["asc","desc"],"x-enum-descriptions":{"asc":"По возрастанию","desc":"По убыванию"},"example":"desc","$ref":"#/components/schemas/SortOrder"},"example":"desc","explode":false},{"name":"created_from","in":"query","description":"Фильтр по дате создания (от)","required":false,"schema":{"type":"string","format":"date-time","example":"2025-01-01T00:00:00.000Z"},"example":"2025-01-01T00:00:00.000Z","explode":false},{"name":"created_to","in":"query","description":"Фильтр по дате создания (до)","required":false,"schema":{"type":"string","format":"date-time","example":"2025-02-01T00:00:00.000Z"},"example":"2025-02-01T00:00:00.000Z","explode":false},{"name":"active","in":"query","description":"Фильтр по активности чата","required":false,"schema":{"type":"boolean","example":true},"example":true,"explode":false},{"name":"chat_subtype","in":"query","description":"Фильтр по типу чата","required":false,"schema":{"type":"string","description":"Тип чата","enum":["discussion","thread"],"x-enum-descriptions":{"discussion":"Канал или беседа","thread":"Тред"},"example":"discussion","$ref":"#/components/schemas/ChatSubtype"},"example":"discussion","explode":false},{"name":"personal","in":"query","description":"Фильтр по личным чатам","required":false,"schema":{"type":"boolean","example":false},"example":false,"explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа поисковых результатов с данными и пагинацией","required":["data","meta"],"properties":{"data":{"type":"array","items":{"type":"object","description":"Чат","required":["id","name","created_at","owner_id","member_ids","group_tag_ids","channel","archived","personal","public","last_message_at","meet_room_url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор созданного чата","example":334},"name":{"type":"string","description":"Название","example":"🤿 aqua","maxLength":255},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания чата (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2021-08-28T15:56:53.000Z"},"owner_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, создавшего чат","example":185},"member_ids":{"type":"array","description":"Массив идентификаторов пользователей, участников","example":[185,186,187],"items":{"type":"integer","format":"int32"}},"group_tag_ids":{"type":"array","description":"Массив идентификаторов тегов, участников","example":[9111],"items":{"type":"integer","format":"int32"}},"channel":{"type":"boolean","description":"Является каналом","example":true},"archived":{"type":"boolean","description":"Находится в архиве","example":false},"personal":{"type":"boolean","description":"Является личным чатом","example":false},"public":{"type":"boolean","description":"Открытый доступ","example":false},"last_message_at":{"type":"string","format":"date-time","description":"Дата и время создания последнего сообщения в чате (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2021-08-28T15:56:53.000Z"},"meet_room_url":{"type":"string","description":"Ссылка на Видеочат","example":"https://meet.pachca.com/aqua-94bb21b5"}},"$ref":"#/components/schemas/Chat"}},"meta":{"type":"object","description":"Мета-информация для пагинации поисковых результатов","required":["total","paginate"],"properties":{"total":{"type":"integer","format":"int32","description":"Общее количество найденных результатов","example":42},"paginate":{"type":"object","description":"Вспомогательная информация","required":["next_page"],"properties":{"next_page":{"type":"string","description":"Курсор пагинации следующей страницы","example":"eyJxZCO2MiwiZGlyIjomSNYjIn3"}}}},"$ref":"#/components/schemas/SearchPaginationMeta"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}}},"requirements":{"scope":"search:chats","scopeRoles":["owner","admin","user","bot"]},"paginated":true},"docs":"# Поиск чатов\n\n**Метод**: `GET`\n\n**Путь**: `/search/chats`\n\n> **Скоуп:** `search:chats`\n\nИщет беседы и каналы по названию, прощая опечатки. Находит и открытые чаты пространства, куда вызывающий не вступал, а закрытые — только те, где он состоит.\n\nЛичные переписки по умолчанию не ищутся. Передайте `personal=true`, и поиск пойдёт по имени собеседника, а не по названию чата.\n\nМетод ищет по названиям, а не по содержанию. Если нужно найти, где что-то обсуждали или о чём договорились, это [Поиск сообщений](GET /search/messages).\n\n## Параметры\n\n### Query параметры\n\n- `query: string` — Текст поискового запроса\n- `limit: integer, int32` (default: 100) — Количество возвращаемых результатов за один запрос\n- `cursor: string` — Курсор для пагинации (из `meta.paginate.next_page`)\n- `order: string` — Направление сортировки\n Значения: `asc`, `desc`\n- `created_from: date-time` — Фильтр по дате создания (от)\n- `created_to: date-time` — Фильтр по дате создания (до)\n- `active: boolean` — Фильтр по активности чата\n- `chat_subtype: string` — Фильтр по типу чата\n Значения: `discussion`, `thread`\n- `personal: boolean` — Фильтр по личным чатам\n\n\n## Пример запроса\n\n```bash\n# Для получения следующей страницы используйте cursor из meta.paginate.next_page\ncurl \"https://api.pachca.com/api/shared/v1/search/chats?query=Разработка&limit=10&order=desc&created_from=2025-01-01T00:00:00.000Z&created_to=2025-02-01T00:00:00.000Z&active=true&chat_subtype=discussion&personal=false\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: array of object` (required)\n - `id: integer, int32` (required) — Идентификатор созданного чата. Пример: `334`\n - `name: string` (required, max length: 255) — Название. Пример: `\"🤿 aqua\"`\n - `created_at: date-time` (required) — Дата и время создания чата (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2021-08-28T15:56:53.000Z\"`\n - `owner_id: integer, int32` (required) — Идентификатор пользователя, создавшего чат. Пример: `185`\n - `member_ids: array of integer` (required) — Массив идентификаторов пользователей, участников. Пример: `[185,186,187]`\n - `group_tag_ids: array of integer` (required) — Массив идентификаторов тегов, участников. Пример: `[9111]`\n - `channel: boolean` (required) — Является каналом. Пример: `true`\n - `archived: boolean` (required) — Находится в архиве. Пример: `false`\n - `personal: boolean` (required) — Является личным чатом. Пример: `false`\n - `public: boolean` (required) — Открытый доступ. Пример: `false`\n - `last_message_at: date-time` (required) — Дата и время создания последнего сообщения в чате (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2021-08-28T15:56:53.000Z\"`\n - `meet_room_url: string` (required) — Ссылка на Видеочат. Пример: `\"https://meet.pachca.com/aqua-94bb21b5\"`\n- `meta: object` (required) — Мета-информация для пагинации поисковых результатов\n - `total: integer, int32` (required) — Общее количество найденных результатов. Пример: `42`\n - `paginate: object` (required) — Вспомогательная информация\n - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `\"eyJxZCO2MiwiZGlyIjomSNYjIn3\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": [\n {\n \"id\": 334,\n \"name\": \"🤿 aqua\",\n \"created_at\": \"2021-08-28T15:56:53.000Z\",\n \"owner_id\": 185,\n \"member_ids\": [\n 185,\n 186,\n 187\n ],\n \"group_tag_ids\": [\n 9111\n ],\n \"channel\": true,\n \"archived\": false,\n \"personal\": false,\n \"public\": false,\n \"last_message_at\": \"2021-08-28T15:56:53.000Z\",\n \"meet_room_url\": \"https://meet.pachca.com/aqua-94bb21b5\"\n }\n ],\n \"meta\": {\n \"total\": 42,\n \"paginate\": {\n \"next_page\": \"eyJxZCO2MiwiZGlyIjomSNYjIn3\"\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n"},{"method":"GET","path":"/search/messages","summary":"Поиск сообщений","scope":"search:messages","plan":null,"auth":true,"paginated":true,"command":"pachca search list-messages","docLink":"https://dev.pachca.com/api/search/list-messages","describe":"# GET /search/messages — Поиск сообщений\n\n> **Скоуп:** `search:messages`\n\n> Пагинация: добавьте `--all` для автоматического обхода страниц\n\n## Параметры\n\n- `query` — query: Текст поискового запроса\n- `limit` — query: Количество возвращаемых результатов за один запрос\n- `cursor` — query: Курсор для пагинации (из `meta.paginate.next_page`)\n- `order` — query: Направление сортировки\n- `sort` — query: Сортировка результатов\n- `created_from` — query: Фильтр по дате создания (от)\n- `created_to` — query: Фильтр по дате создания (до)\n- `chat_ids` — query: Фильтр по ID чатов\n- `user_ids` — query: Фильтр по ID авторов сообщений\n- `active` — query: Фильтр по активности чата\n\n## Эквивалентная команда\n\n```bash\n# Добавьте --all для автоматической пагинации\npachca search list-messages \\\n --query=футболки \\\n --limit=10 \\\n --order=desc \\\n --sort=created_at \\\n --created-from=2025-01-01T00:00:00.000Z \\\n --created-to=2025-02-01T00:00:00.000Z \\\n --chat-ids=198,334 \\\n --user-ids=12,185 \\\n --active \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/search/list-messages\nПолная справка: `pachca api GET /search/messages --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/search/messages","description":"Поиск сообщений\n\nИщет по тексту сообщений и по именам вложенных файлов, но только в чатах, где владелец токена состоит. Открытый канал, в который он не вступал, в поиск не попадает, хотя ленту его читать можно. Сообщения тредов в выдачу входят.\n\nСлова запроса ищутся по словоформам и по части слова, опечатки при этом не исправляются. Запрос в кавычках ищется строгой фразой, поиск по части слова в нём не работает.\n\nПо умолчанию сообщения приходят от новых к старым. `sort=relevance` переключает выдачу на соответствие запросу, где свежие сообщения всё равно ценятся выше.","parameters":[{"name":"query","in":"query","description":"Текст поискового запроса","required":false,"schema":{"type":"string","example":"футболки"},"example":"футболки","explode":false},{"name":"limit","in":"query","description":"Количество возвращаемых результатов за один запрос","required":false,"schema":{"type":"integer","format":"int32","default":200,"example":10,"maximum":200},"example":10,"explode":false},{"name":"cursor","in":"query","description":"Курсор для пагинации (из `meta.paginate.next_page`)","required":false,"schema":{"type":"string","example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9"},"example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9","explode":false},{"name":"order","in":"query","description":"Направление сортировки","required":false,"schema":{"type":"string","description":"Порядок сортировки","enum":["asc","desc"],"x-enum-descriptions":{"asc":"По возрастанию","desc":"По убыванию"},"example":"desc","$ref":"#/components/schemas/SortOrder"},"example":"desc","explode":false},{"name":"sort","in":"query","description":"Сортировка результатов","required":false,"schema":{"default":"created_at","allOf":[{"type":"string","description":"Сортировка результатов поиска сообщений","enum":["created_at","relevance"],"x-enum-descriptions":{"created_at":"По дате создания (хронология)","relevance":"По релевантности"},"$ref":"#/components/schemas/MessageSearchSort"}]},"example":"created_at","explode":false},{"name":"created_from","in":"query","description":"Фильтр по дате создания (от)","required":false,"schema":{"type":"string","format":"date-time","example":"2025-01-01T00:00:00.000Z"},"example":"2025-01-01T00:00:00.000Z","explode":false},{"name":"created_to","in":"query","description":"Фильтр по дате создания (до)","required":false,"schema":{"type":"string","format":"date-time","example":"2025-02-01T00:00:00.000Z"},"example":"2025-02-01T00:00:00.000Z","explode":false},{"name":"chat_ids","in":"query","description":"Фильтр по ID чатов","required":false,"schema":{"type":"array","example":[198,334],"items":{"type":"integer","format":"int32"}},"example":[198,334],"explode":false},{"name":"user_ids","in":"query","description":"Фильтр по ID авторов сообщений","required":false,"schema":{"type":"array","example":[12,185],"items":{"type":"integer","format":"int32"}},"example":[12,185],"explode":false},{"name":"active","in":"query","description":"Фильтр по активности чата","required":false,"schema":{"type":"boolean","example":true},"example":true,"explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа поисковых результатов с данными и пагинацией","required":["data","meta"],"properties":{"data":{"type":"array","items":{"type":"object","description":"Сообщение","required":["id","entity_type","entity_id","chat_id","root_chat_id","content","user_id","created_at","url","files","voice_content","buttons","thread","forwarding","parent_message_id","changed_at","deleted_at"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор сообщения","example":194275},"entity_type":{"description":"Тип сущности, к которой относится сообщение","example":"discussion","allOf":[{"type":"string","description":"Тип сущности для сообщений","enum":["discussion","thread","user"],"x-enum-descriptions":{"discussion":"Беседа или канал","thread":"Тред","user":"Пользователь"},"$ref":"#/components/schemas/MessageEntityType"}]},"entity_id":{"type":"integer","format":"int32","description":"Идентификатор сущности, к которой относится сообщение (беседы/канала, треда или пользователя)","example":334},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором находится сообщение","example":334},"root_chat_id":{"type":"integer","format":"int32","description":"Идентификатор корневого чата. Для сообщений в тредах — идентификатор чата, в котором был создан тред. Для обычных сообщений совпадает с `chat_id`.","example":334},"content":{"type":"string","description":"Текст сообщения","example":"Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)"},"user_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, создавшего сообщение","example":12},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2021-08-28T15:57:23.000Z"},"url":{"type":"string","description":"Прямая ссылка на сообщение","example":"https://app.pachca.com/chats/334?message=194275"},"files":{"type":"array","description":"Прикрепленные файлы","items":{"type":"object","description":"Файл","required":["id","key","name","file_type","url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор файла","example":3560},"key":{"type":"string","description":"Путь к файлу","example":"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png"},"name":{"type":"string","description":"Название файла с расширением","example":"congrat.png"},"file_type":{"description":"Тип файла","example":"image","allOf":[{"type":"string","description":"Тип файла","enum":["file","image","audio","voice","video"],"x-enum-descriptions":{"file":"Обычный файл","image":"Изображение","audio":"Аудиофайл","voice":"Голосовое сообщение","video":"Видеофайл"},"$ref":"#/components/schemas/FileType"}]},"url":{"type":"string","description":"Ссылка на скачивание файла. Обычно ведёт прямо в хранилище и действует до 7 дней, а оставшийся срок может быть меньше — если такая ссылка вернула `403`, запросите сообщение заново и получите свежую. Если в пространстве включено шифрование или задан безопасный контур, ссылка ведёт на [Скачивание файла](GET /files/{id}): забирать такой файл нужно с заголовком `Authorization`, а токену нужен скоуп `files:read`.","example":"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8"},"width":{"type":"integer","format":"int32","description":"Ширина изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке.","example":1920,"nullable":true},"height":{"type":"integer","format":"int32","description":"Высота изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке.","example":1080,"nullable":true},"duration_ms":{"type":"integer","format":"int32","description":"Длительность в миллисекундах у голосового, аудио- и видеофайла. `null` у остальных файлов и если длительность не была передана при загрузке.","example":5400,"nullable":true}},"$ref":"#/components/schemas/File"}},"voice_content":{"type":"object","description":"Данные голосового сообщения. Заполняется только для голосовых сообщений (`file_type` файла — `voice`), иначе `null`.","nullable":true,"allOf":[{"type":"object","description":"Данные голосового сообщения","required":["duration_ms","waveform","transcript"],"properties":{"duration_ms":{"type":"integer","format":"int32","description":"Длительность голосового сообщения в миллисекундах","example":5400},"waveform":{"type":"string","description":"Форма волны (амплитуды) для визуализации голосового сообщения","example":"4,8,12,20,16,10,6,3"},"transcript":{"type":"string","description":"Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна.","example":"Привет, посмотри пожалуйста последний отчёт","nullable":true}},"$ref":"#/components/schemas/VoiceContent"}]},"buttons":{"type":"array","description":"Массив строк, каждая из которых представлена массивом кнопок. `null`, если сообщение отправлено без кнопок.","nullable":true,"items":{"type":"array","items":{"type":"object","description":"Кнопка","required":["text"],"properties":{"text":{"type":"string","description":"Текст, отображаемый на кнопке","example":"Подробнее","maxLength":255},"url":{"type":"string","description":"Ссылка, которая будет открыта по нажатию кнопки. У кнопки должно быть заполнено ровно одно из полей `url` и `data`.","example":"https://example.com/details","maxLength":1024},"data":{"type":"string","description":"Данные, которые будут отправлены в исходящем вебхуке по нажатию кнопки. У кнопки должно быть заполнено ровно одно из полей `url` и `data`.","example":"awesome","maxLength":255}},"$ref":"#/components/schemas/Button"}}},"thread":{"type":"object","description":"Тред, созданный к этому сообщению. `null`, если тред не создан, а также у сообщений, которые сами находятся внутри треда.","required":["id","chat_id"],"nullable":true,"properties":{"id":{"type":"integer","format":"int64","description":"Идентификатор треда","example":265142},"chat_id":{"type":"integer","format":"int64","description":"Идентификатор чата треда","example":2637266155}}},"forwarding":{"type":"object","description":"Информация о пересланном сообщении. `null`, если сообщение не является пересланным.","nullable":true,"allOf":[{"type":"object","description":"Информация о пересланном сообщении","required":["original_message_id","original_chat_id","author_id","original_created_at","original_thread_id","original_thread_message_id","original_thread_parent_chat_id"],"properties":{"original_message_id":{"type":"integer","format":"int32","description":"Идентификатор оригинального сообщения","example":194275},"original_chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором находится оригинальное сообщение","example":334},"author_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, создавшего оригинальное сообщение","example":12},"original_created_at":{"type":"string","format":"date-time","description":"Дата и время создания оригинального сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2025-01-15T10:30:00.000Z"},"original_thread_id":{"type":"integer","format":"int32","description":"Идентификатор треда, в котором находится оригинальное сообщение","example":null,"nullable":true},"original_thread_message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, к которому был создан тред, в котором находится оригинальное сообщение. `null`, если оригинальное сообщение было не в треде или тред создан без привязки к сообщению.","example":null,"nullable":true},"original_thread_parent_chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата сообщения, к которому был создан тред, в котором находится оригинальное сообщение. `null`, если оригинальное сообщение было не в треде или тред создан без привязки к сообщению.","example":null,"nullable":true}},"$ref":"#/components/schemas/Forwarding"}]},"parent_message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, к которому написан ответ. `null`, если сообщение не является ответом на другое сообщение.","example":null,"nullable":true},"display_avatar_url":{"type":"string","description":"Ссылка на аватарку отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. `null`, если бот не переопределял значение при отправке.","example":null,"nullable":true},"display_name":{"type":"string","description":"Полное имя отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. `null`, если бот не переопределял значение при отправке.","example":null,"nullable":true},"changed_at":{"type":"string","format":"date-time","description":"Дата и время последнего изменения сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. У неотредактированного сообщения совпадает с датой создания. `null` у сообщений, отправленных до появления этого поля.","example":"2021-08-28T16:10:00.000Z","nullable":true},"deleted_at":{"type":"string","format":"date-time","description":"Дата и время удаления сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null` у неудалённых сообщений. В списке сообщений удалённые не возвращаются.","example":null,"nullable":true}},"$ref":"#/components/schemas/Message"}},"meta":{"type":"object","description":"Мета-информация для пагинации поисковых результатов","required":["total","paginate"],"properties":{"total":{"type":"integer","format":"int32","description":"Общее количество найденных результатов","example":42},"paginate":{"type":"object","description":"Вспомогательная информация","required":["next_page"],"properties":{"next_page":{"type":"string","description":"Курсор пагинации следующей страницы","example":"eyJxZCO2MiwiZGlyIjomSNYjIn3"}}}},"$ref":"#/components/schemas/SearchPaginationMeta"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}}},"requirements":{"scope":"search:messages","scopeRoles":["owner","admin","user","bot"]},"paginated":true},"docs":"# Поиск сообщений\n\n**Метод**: `GET`\n\n**Путь**: `/search/messages`\n\n> **Скоуп:** `search:messages`\n\nИщет по тексту сообщений и по именам вложенных файлов, но только в чатах, где владелец токена состоит. Открытый канал, в который он не вступал, в поиск не попадает, хотя ленту его читать можно. Сообщения тредов в выдачу входят.\n\nСлова запроса ищутся по словоформам и по части слова, опечатки при этом не исправляются. Запрос в кавычках ищется строгой фразой, поиск по части слова в нём не работает.\n\nПо умолчанию сообщения приходят от новых к старым. `sort=relevance` переключает выдачу на соответствие запросу, где свежие сообщения всё равно ценятся выше.\n\n## Параметры\n\n### Query параметры\n\n- `query: string` — Текст поискового запроса\n- `limit: integer, int32` (default: 200) — Количество возвращаемых результатов за один запрос\n- `cursor: string` — Курсор для пагинации (из `meta.paginate.next_page`)\n- `order: string` — Направление сортировки\n Значения: `asc`, `desc`\n- `sort: string` (default: created_at) — Сортировка результатов\n- `created_from: date-time` — Фильтр по дате создания (от)\n- `created_to: date-time` — Фильтр по дате создания (до)\n- `chat_ids: array` — Фильтр по ID чатов\n- `user_ids: array` — Фильтр по ID авторов сообщений\n- `active: boolean` — Фильтр по активности чата\n\n\n## Пример запроса\n\n```bash\n# Для получения следующей страницы используйте cursor из meta.paginate.next_page\ncurl \"https://api.pachca.com/api/shared/v1/search/messages?query=футболки&limit=10&order=desc&sort=created_at&created_from=2025-01-01T00:00:00.000Z&created_to=2025-02-01T00:00:00.000Z&chat_ids[]=198&chat_ids[]=334&user_ids[]=12&user_ids[]=185&active=true\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: array of object` (required)\n - `id: integer, int32` (required) — Идентификатор сообщения. Пример: `194275`\n - `entity_type: string` (required) — Тип сущности, к которой относится сообщение\n Значения: `discussion` — Беседа или канал, `thread` — Тред, `user` — Пользователь\n - `entity_id: integer, int32` (required) — Идентификатор сущности, к которой относится сообщение (беседы/канала, треда или пользователя). Пример: `334`\n - `chat_id: integer, int32` (required) — Идентификатор чата, в котором находится сообщение. Пример: `334`\n - `root_chat_id: integer, int32` (required) — Идентификатор корневого чата. Для сообщений в тредах — идентификатор чата, в котором был создан тред. Для обычных сообщений совпадает с `chat_id`. Пример: `334`\n - `content: string` (required) — Текст сообщения. Пример: `\"Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)\"`\n - `user_id: integer, int32` (required) — Идентификатор пользователя, создавшего сообщение. Пример: `12`\n - `created_at: date-time` (required) — Дата и время создания сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2021-08-28T15:57:23.000Z\"`\n - `url: string` (required) — Прямая ссылка на сообщение. Пример: `\"https://app.pachca.com/chats/334?message=194275\"`\n - `files: array of object` (required) — Прикрепленные файлы\n - `id: integer, int32` (required) — Идентификатор файла. Пример: `3560`\n - `key: string` (required) — Путь к файлу. Пример: `\"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png\"`\n - `name: string` (required) — Название файла с расширением. Пример: `\"congrat.png\"`\n - `file_type: string` (required) — Тип файла\n Значения: `file` — Обычный файл, `image` — Изображение, `audio` — Аудиофайл, `voice` — Голосовое сообщение, `video` — Видеофайл\n - `url: string` (required) — Ссылка на скачивание файла. Обычно ведёт прямо в хранилище и действует до 7 дней, а оставшийся срок может быть меньше — если такая ссылка вернула `403`, запросите сообщение заново и получите свежую. Если в пространстве включено шифрование или задан безопасный контур, ссылка ведёт на [Скачивание файла](GET /files/{id}): забирать такой файл нужно с заголовком `Authorization`, а токену нужен скоуп `files:read`. Пример: `\"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8\"`\n - `width: integer, int32` (nullable) — Ширина изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке. Пример: `1920`\n - `height: integer, int32` (nullable) — Высота изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке. Пример: `1080`\n - `duration_ms: integer, int32` (nullable) — Длительность в миллисекундах у голосового, аудио- и видеофайла. `null` у остальных файлов и если длительность не была передана при загрузке. Пример: `5400`\n - `voice_content: object` (required) — Данные голосового сообщения. Заполняется только для голосовых сообщений (`file_type` файла — `voice`), иначе `null`.\n - `duration_ms: integer, int32` (required) — Длительность голосового сообщения в миллисекундах. Пример: `5400`\n - `waveform: string` (required) — Форма волны (амплитуды) для визуализации голосового сообщения. Пример: `\"4,8,12,20,16,10,6,3\"`\n - `transcript: string` (required, nullable) — Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна. Пример: `\"Привет, посмотри пожалуйста последний отчёт\"`\n - `buttons: array of array` (required, nullable) — Массив строк, каждая из которых представлена массивом кнопок. `null`, если сообщение отправлено без кнопок.\n - `thread: object` (required, nullable) — Тред, созданный к этому сообщению. `null`, если тред не создан, а также у сообщений, которые сами находятся внутри треда.\n - `id: integer, int64` (required) — Идентификатор треда. Пример: `265142`\n - `chat_id: integer, int64` (required) — Идентификатор чата треда. Пример: `2637266155`\n - `forwarding: object` (required) — Информация о пересланном сообщении. `null`, если сообщение не является пересланным.\n - `original_message_id: integer, int32` (required) — Идентификатор оригинального сообщения. Пример: `194275`\n - `original_chat_id: integer, int32` (required) — Идентификатор чата, в котором находится оригинальное сообщение. Пример: `334`\n - `author_id: integer, int32` (required) — Идентификатор пользователя, создавшего оригинальное сообщение. Пример: `12`\n - `original_created_at: date-time` (required) — Дата и время создания оригинального сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2025-01-15T10:30:00.000Z\"`\n - `original_thread_id: integer, int32` (required, nullable) — Идентификатор треда, в котором находится оригинальное сообщение. Пример: `null`\n - `original_thread_message_id: integer, int32` (required, nullable) — Идентификатор сообщения, к которому был создан тред, в котором находится оригинальное сообщение. `null`, если оригинальное сообщение было не в треде или тред создан без привязки к сообщению. Пример: `null`\n - `original_thread_parent_chat_id: integer, int32` (required, nullable) — Идентификатор чата сообщения, к которому был создан тред, в котором находится оригинальное сообщение. `null`, если оригинальное сообщение было не в треде или тред создан без привязки к сообщению. Пример: `null`\n - `parent_message_id: integer, int32` (required, nullable) — Идентификатор сообщения, к которому написан ответ. `null`, если сообщение не является ответом на другое сообщение. Пример: `null`\n - `display_avatar_url: string` (nullable) — Ссылка на аватарку отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. `null`, если бот не переопределял значение при отправке. Пример: `null`\n - `display_name: string` (nullable) — Полное имя отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. `null`, если бот не переопределял значение при отправке. Пример: `null`\n - `changed_at: date-time` (required, nullable) — Дата и время последнего изменения сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. У неотредактированного сообщения совпадает с датой создания. `null` у сообщений, отправленных до появления этого поля. Пример: `\"2021-08-28T16:10:00.000Z\"`\n - `deleted_at: date-time` (required, nullable) — Дата и время удаления сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null` у неудалённых сообщений. В списке сообщений удалённые не возвращаются. Пример: `null`\n- `meta: object` (required) — Мета-информация для пагинации поисковых результатов\n - `total: integer, int32` (required) — Общее количество найденных результатов. Пример: `42`\n - `paginate: object` (required) — Вспомогательная информация\n - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `\"eyJxZCO2MiwiZGlyIjomSNYjIn3\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": [\n {\n \"id\": 194275,\n \"entity_type\": \"discussion\",\n \"entity_id\": 334,\n \"chat_id\": 334,\n \"root_chat_id\": 334,\n \"content\": \"Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)\",\n \"user_id\": 12,\n \"created_at\": \"2021-08-28T15:57:23.000Z\",\n \"url\": \"https://app.pachca.com/chats/334?message=194275\",\n \"files\": [\n {\n \"id\": 3560,\n \"key\": \"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png\",\n \"name\": \"congrat.png\",\n \"file_type\": \"image\",\n \"url\": \"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8\",\n \"width\": 1920,\n \"height\": 1080,\n \"duration_ms\": 5400\n }\n ],\n \"voice_content\": {\n \"duration_ms\": 5400,\n \"waveform\": \"4,8,12,20,16,10,6,3\",\n \"transcript\": \"Привет, посмотри пожалуйста последний отчёт\"\n },\n \"buttons\": [\n [\n {\n \"text\": null\n }\n ]\n ],\n \"thread\": {\n \"id\": 265142,\n \"chat_id\": 2637266155\n },\n \"forwarding\": {\n \"original_message_id\": 194275,\n \"original_chat_id\": 334,\n \"author_id\": 12,\n \"original_created_at\": \"2025-01-15T10:30:00.000Z\",\n \"original_thread_id\": null,\n \"original_thread_message_id\": null,\n \"original_thread_parent_chat_id\": null\n },\n \"parent_message_id\": null,\n \"display_avatar_url\": null,\n \"display_name\": null,\n \"changed_at\": \"2021-08-28T16:10:00.000Z\",\n \"deleted_at\": null\n }\n ],\n \"meta\": {\n \"total\": 42,\n \"paginate\": {\n \"next_page\": \"eyJxZCO2MiwiZGlyIjomSNYjIn3\"\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n"},{"method":"GET","path":"/search/users","summary":"Поиск сотрудников","scope":"search:users","plan":null,"auth":true,"paginated":true,"command":"pachca search list-users","docLink":"https://dev.pachca.com/api/search/list-users","describe":"# GET /search/users — Поиск сотрудников\n\n> **Скоуп:** `search:users`\n\n> Пагинация: добавьте `--all` для автоматического обхода страниц\n\n## Параметры\n\n- `query` — query: Текст поискового запроса\n- `limit` — query: Количество возвращаемых результатов за один запрос\n- `cursor` — query: Курсор для пагинации (из `meta.paginate.next_page`)\n- `sort` — query: Сортировка результатов\n- `order` — query: Направление сортировки\n- `created_from` — query: Фильтр по дате создания (от)\n- `created_to` — query: Фильтр по дате создания (до)\n- `company_roles` — query: Фильтр по ролям сотрудников\n\n## Эквивалентная команда\n\n```bash\n# Добавьте --all для автоматической пагинации\npachca search list-users \\\n --query=Олег \\\n --limit=10 \\\n --sort=by_score \\\n --order=desc \\\n --created-from=2025-01-01T00:00:00.000Z \\\n --created-to=2025-02-01T00:00:00.000Z \\\n --company-roles=admin,user \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/search/list-users\nПолная справка: `pachca api GET /search/users --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/search/users","description":"Поиск сотрудников\n\nИщет сотрудников по имени и фамилии, нику, должности и отделу. Опечатки прощаются только в имени и фамилии, остальным полям нужно точное слово.\n\nПо почте метод ищет лишь тем, кому в пространстве видны персональные данные. По телефону он не ищет вовсе — для этого есть [Список сотрудников](GET /users) с параметром `query`.\n\nУдалённые сотрудники не находятся никогда, приостановленные — только когда задан текстовый запрос, и стоят в выдаче ниже остальных. Из ботов находятся лишь публичные.","parameters":[{"name":"query","in":"query","description":"Текст поискового запроса","required":false,"schema":{"type":"string","example":"Олег"},"example":"Олег","explode":false},{"name":"limit","in":"query","description":"Количество возвращаемых результатов за один запрос","required":false,"schema":{"type":"integer","format":"int32","default":200,"example":10,"maximum":200},"example":10,"explode":false},{"name":"cursor","in":"query","description":"Курсор для пагинации (из `meta.paginate.next_page`)","required":false,"schema":{"type":"string","example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9"},"example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9","explode":false},{"name":"sort","in":"query","description":"Сортировка результатов","required":false,"schema":{"type":"string","description":"Сортировка результатов поиска","enum":["by_score","alphabetical","creation"],"x-enum-descriptions":{"by_score":"По релевантности","alphabetical":"По алфавиту","creation":"По дате создания"},"example":"by_score","$ref":"#/components/schemas/SearchSortOrder"},"example":"by_score","explode":false},{"name":"order","in":"query","description":"Направление сортировки","required":false,"schema":{"type":"string","description":"Порядок сортировки","enum":["asc","desc"],"x-enum-descriptions":{"asc":"По возрастанию","desc":"По убыванию"},"example":"desc","$ref":"#/components/schemas/SortOrder"},"example":"desc","explode":false},{"name":"created_from","in":"query","description":"Фильтр по дате создания (от)","required":false,"schema":{"type":"string","format":"date-time","example":"2025-01-01T00:00:00.000Z"},"example":"2025-01-01T00:00:00.000Z","explode":false},{"name":"created_to","in":"query","description":"Фильтр по дате создания (до)","required":false,"schema":{"type":"string","format":"date-time","example":"2025-02-01T00:00:00.000Z"},"example":"2025-02-01T00:00:00.000Z","explode":false},{"name":"company_roles","in":"query","description":"Фильтр по ролям сотрудников","required":false,"schema":{"type":"array","example":["admin","user"],"items":{"type":"string","description":"Роль пользователя в системе","enum":["admin","user","multi_guest","guest"],"x-enum-descriptions":{"admin":"Администратор","user":"Сотрудник","multi_guest":"Мульти-гость","guest":"Гость"},"$ref":"#/components/schemas/UserRole"}},"example":["admin","user"],"explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа поисковых результатов с данными и пагинацией","required":["data","meta"],"properties":{"data":{"type":"array","items":{"type":"object","description":"Сотрудник","required":["id","first_name","last_name","nickname","email","phone_number","department","title","role","suspended","invite_status","inviter_id","list_tags","custom_properties","user_status","bot","sso","created_at","last_activity_at","time_zone","image_url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор пользователя","example":12},"first_name":{"type":"string","description":"Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`).","example":"Олег","nullable":true,"maxLength":255},"last_name":{"type":"string","description":"Фамилия. Если не заполнена, возвращается `null` или пустая строка.","example":"Петров","nullable":true,"maxLength":255},"nickname":{"type":"string","description":"Имя пользователя","example":"olegpetrov","maxLength":255},"email":{"type":"string","description":"Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда.","example":"olegp@example.com","nullable":true,"maxLength":255},"phone_number":{"type":"string","description":"Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда.","example":"+79001234567","nullable":true,"maxLength":255},"department":{"type":"string","description":"Департамент. Если не указан, возвращается `null` или пустая строка.","example":"Продукт","nullable":true,"maxLength":255},"title":{"type":"string","description":"Должность. Если не указана, возвращается `null` или пустая строка.","example":"CIO","nullable":true},"role":{"description":"Уровень доступа","example":"admin","allOf":[{"type":"string","description":"Роль пользователя в системе","enum":["admin","user","multi_guest","guest"],"x-enum-descriptions":{"admin":"Администратор","user":"Сотрудник","multi_guest":"Мульти-гость","guest":"Гость"},"$ref":"#/components/schemas/UserRole"}]},"suspended":{"type":"boolean","description":"Деактивация пользователя","example":false},"invite_status":{"description":"Статус приглашения","example":"confirmed","allOf":[{"type":"string","description":"Статус приглашения пользователя","enum":["confirmed","sent"],"x-enum-descriptions":{"confirmed":"Принято","sent":"Отправлено"},"$ref":"#/components/schemas/InviteStatus"}]},"inviter_id":{"type":"integer","format":"int32","description":"Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён.","example":185,"nullable":true},"list_tags":{"type":"array","description":"Массив тегов, привязанных к сотруднику","example":["Product","Design"],"items":{"type":"string"}},"custom_properties":{"type":"array","description":"Дополнительные поля сотрудника","items":{"type":"object","description":"Дополнительное поле","required":["id","name","data_type","value"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор поля","example":1678},"name":{"type":"string","description":"Название поля","example":"Город","maxLength":32},"data_type":{"description":"Тип поля","example":"string","allOf":[{"type":"string","description":"Тип данных дополнительного поля","enum":["string","number","date","link"],"x-enum-descriptions":{"string":"Строковое значение","number":"Числовое значение","date":"Дата","link":"Ссылка"},"$ref":"#/components/schemas/CustomPropertyDataType"}]},"value":{"type":"string","description":"Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601.","example":"Санкт-Петербург","nullable":true,"maxLength":768}},"$ref":"#/components/schemas/CustomProperty"}},"user_status":{"type":"object","description":"Статус. `null`, если у сотрудника не установлен статус.","nullable":true,"allOf":[{"type":"object","description":"Статус пользователя","required":["emoji","title","expires_at","is_away","away_message"],"properties":{"emoji":{"type":"string","description":"Emoji символ статуса","example":"🎮"},"title":{"type":"string","description":"Текст статуса","example":"Очень занят","maxLength":50},"expires_at":{"type":"string","format":"date-time","description":"Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически.","example":"2024-04-08T10:00:00.000Z","nullable":true},"is_away":{"type":"boolean","description":"Режим «Нет на месте»","example":false},"away_message":{"type":"object","description":"Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.","required":["text"],"nullable":true,"properties":{"text":{"type":"string","description":"Текст сообщения","example":"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.","maxLength":1024}}}},"$ref":"#/components/schemas/UserStatus"}]},"bot":{"type":"boolean","description":"Является ботом","example":false},"sso":{"type":"boolean","description":"Использует ли пользователь SSO","example":false},"created_at":{"type":"string","format":"date-time","description":"Дата создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2020-06-08T09:32:57.000Z"},"last_activity_at":{"type":"string","format":"date-time","description":"Дата последней активности пользователя (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если сотрудник ещё ни разу не заходил в Пачку — в этом случае `invite_status` возвращает `sent`.","example":"2025-01-20T13:40:07.000Z","nullable":true},"time_zone":{"type":"string","description":"Часовой пояс пользователя. `null`, если сотрудник не задал личный часовой пояс — тогда применяется часовой пояс компании.","example":"Europe/Moscow","nullable":true,"maxLength":32},"image_url":{"type":"string","description":"Ссылка на скачивание аватарки пользователя. `null`, если аватарка не загружена.","example":"https://app.pachca.com/users/12/photo.jpg","nullable":true}},"$ref":"#/components/schemas/User"}},"meta":{"type":"object","description":"Мета-информация для пагинации поисковых результатов","required":["total","paginate"],"properties":{"total":{"type":"integer","format":"int32","description":"Общее количество найденных результатов","example":42},"paginate":{"type":"object","description":"Вспомогательная информация","required":["next_page"],"properties":{"next_page":{"type":"string","description":"Курсор пагинации следующей страницы","example":"eyJxZCO2MiwiZGlyIjomSNYjIn3"}}}},"$ref":"#/components/schemas/SearchPaginationMeta"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}}},"requirements":{"scope":"search:users","scopeRoles":["owner","admin","user","bot"]},"paginated":true},"docs":"# Поиск сотрудников\n\n**Метод**: `GET`\n\n**Путь**: `/search/users`\n\n> **Скоуп:** `search:users`\n\nИщет сотрудников по имени и фамилии, нику, должности и отделу. Опечатки прощаются только в имени и фамилии, остальным полям нужно точное слово.\n\nПо почте метод ищет лишь тем, кому в пространстве видны персональные данные. По телефону он не ищет вовсе — для этого есть [Список сотрудников](GET /users) с параметром `query`.\n\nУдалённые сотрудники не находятся никогда, приостановленные — только когда задан текстовый запрос, и стоят в выдаче ниже остальных. Из ботов находятся лишь публичные.\n\n## Параметры\n\n### Query параметры\n\n- `query: string` — Текст поискового запроса\n- `limit: integer, int32` (default: 200) — Количество возвращаемых результатов за один запрос\n- `cursor: string` — Курсор для пагинации (из `meta.paginate.next_page`)\n- `sort: string` — Сортировка результатов\n Значения: `by_score`, `alphabetical`, `creation`\n- `order: string` — Направление сортировки\n Значения: `asc`, `desc`\n- `created_from: date-time` — Фильтр по дате создания (от)\n- `created_to: date-time` — Фильтр по дате создания (до)\n- `company_roles: array` — Фильтр по ролям сотрудников\n\n\n## Пример запроса\n\n```bash\n# Для получения следующей страницы используйте cursor из meta.paginate.next_page\ncurl \"https://api.pachca.com/api/shared/v1/search/users?query=Олег&limit=10&sort=by_score&order=desc&created_from=2025-01-01T00:00:00.000Z&created_to=2025-02-01T00:00:00.000Z&company_roles[]=admin&company_roles[]=user\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: array of object` (required)\n - `id: integer, int32` (required) — Идентификатор пользователя. Пример: `12`\n - `first_name: string` (required, nullable, max length: 255) — Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`). Пример: `\"Олег\"`\n - `last_name: string` (required, nullable, max length: 255) — Фамилия. Если не заполнена, возвращается `null` или пустая строка. Пример: `\"Петров\"`\n - `nickname: string` (required, max length: 255) — Имя пользователя. Пример: `\"olegpetrov\"`\n - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `\"olegp@example.com\"`\n - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `\"+79001234567\"`\n - `department: string` (required, nullable, max length: 255) — Департамент. Если не указан, возвращается `null` или пустая строка. Пример: `\"Продукт\"`\n - `title: string` (required, nullable) — Должность. Если не указана, возвращается `null` или пустая строка. Пример: `\"CIO\"`\n - `role: string` (required) — Уровень доступа\n Значения: `admin` — Администратор, `user` — Сотрудник, `multi_guest` — Мульти-гость, `guest` — Гость\n - `suspended: boolean` (required) — Деактивация пользователя. Пример: `false`\n - `invite_status: string` (required) — Статус приглашения\n Значения: `confirmed` — Принято, `sent` — Отправлено\n - `inviter_id: integer, int32` (required, nullable) — Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён. Пример: `185`\n - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Пример: `[\"Product\",\"Design\"]`\n - `custom_properties: array of object` (required) — Дополнительные поля сотрудника\n - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678`\n - `name: string` (required, max length: 32) — Название поля. Пример: `\"Город\"`\n - `data_type: string` (required) — Тип поля\n Значения: `string` — Строковое значение, `number` — Числовое значение, `date` — Дата, `link` — Ссылка\n - `value: string` (required, nullable, max length: 768) — Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601. Пример: `\"Санкт-Петербург\"`\n - `user_status: object` (required) — Статус. `null`, если у сотрудника не установлен статус.\n - `emoji: string` (required) — Emoji символ статуса. Пример: `\"🎮\"`\n - `title: string` (required, max length: 50) — Текст статуса. Пример: `\"Очень занят\"`\n - `expires_at: date-time` (required, nullable) — Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически. Пример: `\"2024-04-08T10:00:00.000Z\"`\n - `is_away: boolean` (required) — Режим «Нет на месте». Пример: `false`\n - `away_message: object` (required, nullable) — Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.\n - `text: string` (required, max length: 1024) — Текст сообщения. Пример: `\"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"`\n - `bot: boolean` (required) — Является ботом. Пример: `false`\n - `sso: boolean` (required) — Использует ли пользователь SSO. Пример: `false`\n - `created_at: date-time` (required) — Дата создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2020-06-08T09:32:57.000Z\"`\n - `last_activity_at: date-time` (required, nullable) — Дата последней активности пользователя (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если сотрудник ещё ни разу не заходил в Пачку — в этом случае `invite_status` возвращает `sent`. Пример: `\"2025-01-20T13:40:07.000Z\"`\n - `time_zone: string` (required, nullable, max length: 32) — Часовой пояс пользователя. `null`, если сотрудник не задал личный часовой пояс — тогда применяется часовой пояс компании. Пример: `\"Europe/Moscow\"`\n - `image_url: string` (required, nullable) — Ссылка на скачивание аватарки пользователя. `null`, если аватарка не загружена. Пример: `\"https://app.pachca.com/users/12/photo.jpg\"`\n- `meta: object` (required) — Мета-информация для пагинации поисковых результатов\n - `total: integer, int32` (required) — Общее количество найденных результатов. Пример: `42`\n - `paginate: object` (required) — Вспомогательная информация\n - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `\"eyJxZCO2MiwiZGlyIjomSNYjIn3\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": [\n {\n \"id\": 12,\n \"first_name\": \"Олег\",\n \"last_name\": \"Петров\",\n \"nickname\": \"olegpetrov\",\n \"email\": \"olegp@example.com\",\n \"phone_number\": \"+79001234567\",\n \"department\": \"Продукт\",\n \"title\": \"CIO\",\n \"role\": \"admin\",\n \"suspended\": false,\n \"invite_status\": \"confirmed\",\n \"inviter_id\": 185,\n \"list_tags\": [\n \"Product\",\n \"Design\"\n ],\n \"custom_properties\": [\n {\n \"id\": 1678,\n \"name\": \"Город\",\n \"data_type\": \"string\",\n \"value\": \"Санкт-Петербург\"\n }\n ],\n \"user_status\": {\n \"emoji\": \"🎮\",\n \"title\": \"Очень занят\",\n \"expires_at\": \"2024-04-08T10:00:00.000Z\",\n \"is_away\": false,\n \"away_message\": {\n \"text\": \"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"\n }\n },\n \"bot\": false,\n \"sso\": false,\n \"created_at\": \"2020-06-08T09:32:57.000Z\",\n \"last_activity_at\": \"2025-01-20T13:40:07.000Z\",\n \"time_zone\": \"Europe/Moscow\",\n \"image_url\": \"https://app.pachca.com/users/12/photo.jpg\"\n }\n ],\n \"meta\": {\n \"total\": 42,\n \"paginate\": {\n \"next_page\": \"eyJxZCO2MiwiZGlyIjomSNYjIn3\"\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n"},{"method":"POST","path":"/tasks","summary":"Новое напоминание","scope":"tasks:create","plan":null,"auth":true,"paginated":false,"command":"pachca tasks create","docLink":"https://dev.pachca.com/api/tasks/create","describe":"# POST /tasks — Новое напоминание\n\n> **Скоуп:** `tasks:create`\n\n## Тело запроса\n\n- `task: object` (required) — Собранный объект параметров создаваемого напоминания\n - `kind: string` (required) — Тип\n Значения: `call` — Позвонить контакту, `meeting` — Встреча, `reminder` — Простое напоминание, `event` — Событие, `email` — Написать письмо\n - `content: string` — Описание (по умолчанию — название типа)\n - `due_at: date-time` — Срок выполнения напоминания (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Секунды отбрасываются: срок встаёт на начало минуты. Исключение — ровно 23:59:59: такое напоминание создаётся на весь день, без указания времени.\n - `priority: integer, int32` (default: 1, min: 1, max: 3) — Приоритет: 1, 2 (важно) или 3 (очень важно)\n - `performer_ids: array of integer` — Массив идентификаторов пользователей, привязываемых к напоминанию как «ответственные» (по умолчанию ответственным назначается вы)\n - `chat_id: integer, int32` — Идентификатор чата, к которому привязывается напоминание\n - `all_day: boolean` — Напоминание на весь день (без указания времени)\n - `custom_properties: array of object` — Задаваемые дополнительные поля\n - `id: integer, int32` (required) — Идентификатор поля\n - `value: string` (required) — Устанавливаемое значение\n\n## Эквивалентная команда\n\n```bash\npachca tasks create \\\n --kind=reminder \\\n --content='Забрать со склада 21 заказ' \\\n --due-at=2020-06-05T12:00:00.000+03:00 \\\n --priority=2 \\\n --performer-ids='[12,13]' \\\n --chat-id=456 \\\n --no-all-day \\\n --custom-properties='[{\"id\":78,\"value\":\"Синий склад\"}]' \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/tasks/create\nПолная справка: `pachca api POST /tasks --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/tasks","description":"Новое напоминание\n\nСоздаёт напоминание и назначает на него ответственных.\n\nПри создании напоминания обязательно указать его тип: звонок, встреча, простое напоминание, событие или письмо. Описание при этом не требуется — напоминание создастся с текстом по типу. Если описание передано, именно оно и станет текстом напоминания.\n\nУ напоминания должны быть ответственные. Если их не указать, ответственным становится владелец токена.\n\nОтветственным для напоминания без привязки к каким-либо сущностям может стать любой сотрудник компании. Актуальный состав сотрудников компании вы можете получить в методе [Список сотрудников](GET /users). Ответственные, которых вызывающий не видит, молча отбрасываются: ответ приходит успешным, а в `performer_ids` их нет, поэтому сверяйте состав в ответе.\n\nНапоминание можно привязать к беседе полем `chat_id` — тогда кроме автора и ответственных его видят участники этой беседы. Привязывающий должен сам в ней состоять. В канале, в треде и в архивном чате напоминания не создаются.\n\nПередать напоминание другому сотруднику — значит сменить ответственного методом [Редактирование напоминания](PUT /tasks/{id}).\n\nЕсли к пространству или к профилю подключён календарь, напоминание заодно появляется в нём событием.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на создание напоминания","required":["task"],"properties":{"task":{"type":"object","description":"Собранный объект параметров создаваемого напоминания","required":["kind"],"properties":{"kind":{"description":"Тип","example":"reminder","allOf":[{"type":"string","description":"Тип задачи","enum":["call","meeting","reminder","event","email"],"x-enum-descriptions":{"call":"Позвонить контакту","meeting":"Встреча","reminder":"Простое напоминание","event":"Событие","email":"Написать письмо"},"$ref":"#/components/schemas/TaskKind"}]},"content":{"type":"string","description":"Описание (по умолчанию — название типа)","example":"Забрать со склада 21 заказ"},"due_at":{"type":"string","format":"date-time","description":"Срок выполнения напоминания (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Секунды отбрасываются: срок встаёт на начало минуты. Исключение — ровно 23:59:59: такое напоминание создаётся на весь день, без указания времени.","example":"2020-06-05T12:00:00.000+03:00"},"priority":{"type":"integer","format":"int32","description":"Приоритет: 1, 2 (важно) или 3 (очень важно)","default":1,"example":2,"minimum":1,"maximum":3},"performer_ids":{"type":"array","description":"Массив идентификаторов пользователей, привязываемых к напоминанию как «ответственные» (по умолчанию ответственным назначается вы)","example":[12,13],"items":{"type":"integer","format":"int32"}},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, к которому привязывается напоминание","example":456},"all_day":{"type":"boolean","description":"Напоминание на весь день (без указания времени)","example":false},"custom_properties":{"type":"array","description":"Задаваемые дополнительные поля","items":{"type":"object","required":["id","value"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор поля","example":78},"value":{"type":"string","description":"Устанавливаемое значение","example":"Синий склад"}}}}}}},"$ref":"#/components/schemas/TaskCreateRequest"}}}},"responses":{"201":{"description":"The request has succeeded and a new resource has been created as a result.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Напоминание","required":["id","kind","content","due_at","priority","user_id","chat_id","status","created_at","performer_ids","all_day","custom_properties"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор напоминания","example":22283},"kind":{"description":"Тип","example":"reminder","allOf":[{"type":"string","description":"Тип задачи","enum":["call","meeting","reminder","event","email"],"x-enum-descriptions":{"call":"Позвонить контакту","meeting":"Встреча","reminder":"Простое напоминание","event":"Событие","email":"Написать письмо"},"$ref":"#/components/schemas/TaskKind"}]},"content":{"type":"string","description":"Описание","example":"Забрать со склада 21 заказ"},"due_at":{"type":"string","format":"date-time","description":"Срок выполнения напоминания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан.","example":"2020-06-05T09:00:00.000Z","nullable":true},"priority":{"type":"integer","format":"int32","description":"Приоритет","example":2},"user_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя-создателя напоминания","example":12},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, к которому привязано напоминание. `null`, если напоминание не привязано к чату.","example":334,"nullable":true},"status":{"description":"Статус напоминания","example":"undone","allOf":[{"type":"string","description":"Статус напоминания","enum":["done","undone"],"x-enum-descriptions":{"done":"Выполнено","undone":"Активно"},"$ref":"#/components/schemas/TaskStatus"}]},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания напоминания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2020-06-04T10:37:57.000Z"},"performer_ids":{"type":"array","description":"Массив идентификаторов пользователей, привязанных к напоминанию как «ответственные»","example":[12],"items":{"type":"integer","format":"int32"}},"all_day":{"type":"boolean","description":"Напоминание на весь день (без указания времени)","example":false},"custom_properties":{"type":"array","description":"Дополнительные поля напоминания","items":{"type":"object","description":"Дополнительное поле","required":["id","name","data_type","value"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор поля","example":1678},"name":{"type":"string","description":"Название поля","example":"Город","maxLength":32},"data_type":{"description":"Тип поля","example":"string","allOf":[{"type":"string","description":"Тип данных дополнительного поля","enum":["string","number","date","link"],"x-enum-descriptions":{"string":"Строковое значение","number":"Числовое значение","date":"Дата","link":"Ссылка"},"$ref":"#/components/schemas/CustomPropertyDataType"}]},"value":{"type":"string","description":"Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601.","example":"Санкт-Петербург","nullable":true,"maxLength":768}},"$ref":"#/components/schemas/CustomProperty"}}},"$ref":"#/components/schemas/Task"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"tasks:create","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Новое напоминание\n\n**Метод**: `POST`\n\n**Путь**: `/tasks`\n\n> **Скоуп:** `tasks:create`\n\nСоздаёт напоминание и назначает на него ответственных.\n\nПри создании напоминания обязательно указать его тип: звонок, встреча, простое напоминание, событие или письмо. Описание при этом не требуется — напоминание создастся с текстом по типу. Если описание передано, именно оно и станет текстом напоминания.\n\nУ напоминания должны быть ответственные. Если их не указать, ответственным становится владелец токена.\n\nОтветственным для напоминания без привязки к каким-либо сущностям может стать любой сотрудник компании. Актуальный состав сотрудников компании вы можете получить в методе [Список сотрудников](GET /users). Ответственные, которых вызывающий не видит, молча отбрасываются: ответ приходит успешным, а в `performer_ids` их нет, поэтому сверяйте состав в ответе.\n\nНапоминание можно привязать к беседе полем `chat_id` — тогда кроме автора и ответственных его видят участники этой беседы. Привязывающий должен сам в ней состоять. В канале, в треде и в архивном чате напоминания не создаются.\n\nПередать напоминание другому сотруднику — значит сменить ответственного методом [Редактирование напоминания](PUT /tasks/{id}).\n\nЕсли к пространству или к профилю подключён календарь, напоминание заодно появляется в нём событием.\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `task: object` (required) — Собранный объект параметров создаваемого напоминания\n - `kind: string` (required) — Тип\n Значения: `call` — Позвонить контакту, `meeting` — Встреча, `reminder` — Простое напоминание, `event` — Событие, `email` — Написать письмо\n - `content: string` — Описание (по умолчанию — название типа). Пример: `\"Забрать со склада 21 заказ\"`\n - `due_at: date-time` — Срок выполнения напоминания (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Секунды отбрасываются: срок встаёт на начало минуты. Исключение — ровно 23:59:59: такое напоминание создаётся на весь день, без указания времени. Пример: `\"2020-06-05T12:00:00.000+03:00\"`\n - `priority: integer, int32` (default: 1, min: 1, max: 3) — Приоритет: 1, 2 (важно) или 3 (очень важно). Пример: `2`\n - `performer_ids: array of integer` — Массив идентификаторов пользователей, привязываемых к напоминанию как «ответственные» (по умолчанию ответственным назначается вы). Пример: `[12,13]`\n - `chat_id: integer, int32` — Идентификатор чата, к которому привязывается напоминание. Пример: `456`\n - `all_day: boolean` — Напоминание на весь день (без указания времени). Пример: `false`\n - `custom_properties: array of object` — Задаваемые дополнительные поля\n - `id: integer, int32` (required) — Идентификатор поля. Пример: `78`\n - `value: string` (required) — Устанавливаемое значение. Пример: `\"Синий склад\"`\n\n### Пример\n\n```json\n{\n \"task\": {\n \"kind\": \"reminder\",\n \"content\": \"Забрать со склада 21 заказ\",\n \"due_at\": \"2020-06-05T12:00:00.000+03:00\",\n \"priority\": 2,\n \"performer_ids\": [\n 12,\n 13\n ],\n \"chat_id\": 456,\n \"all_day\": false,\n \"custom_properties\": [\n {\n \"id\": 78,\n \"value\": \"Синий склад\"\n }\n ]\n }\n}\n```\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/tasks\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"task\": {\n \"kind\": \"reminder\",\n \"content\": \"Забрать со склада 21 заказ\",\n \"due_at\": \"2020-06-05T12:00:00.000+03:00\",\n \"priority\": 2,\n \"performer_ids\": [\n 12,\n 13\n ],\n \"chat_id\": 456,\n \"all_day\": false,\n \"custom_properties\": [\n {\n \"id\": 78,\n \"value\": \"Синий склад\"\n }\n ]\n }\n}'\n```\n\n## Ответы\n\n### 201: The request has succeeded and a new resource has been created as a result.\n\n**Схема ответа:**\n\n- `data: object` (required) — Напоминание\n - `id: integer, int32` (required) — Идентификатор напоминания. Пример: `22283`\n - `kind: string` (required) — Тип\n Значения: `call` — Позвонить контакту, `meeting` — Встреча, `reminder` — Простое напоминание, `event` — Событие, `email` — Написать письмо\n - `content: string` (required) — Описание. Пример: `\"Забрать со склада 21 заказ\"`\n - `due_at: date-time` (required, nullable) — Срок выполнения напоминания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан. Пример: `\"2020-06-05T09:00:00.000Z\"`\n - `priority: integer, int32` (required) — Приоритет. Пример: `2`\n - `user_id: integer, int32` (required) — Идентификатор пользователя-создателя напоминания. Пример: `12`\n - `chat_id: integer, int32` (required, nullable) — Идентификатор чата, к которому привязано напоминание. `null`, если напоминание не привязано к чату. Пример: `334`\n - `status: string` (required) — Статус напоминания\n Значения: `done` — Выполнено, `undone` — Активно\n - `created_at: date-time` (required) — Дата и время создания напоминания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2020-06-04T10:37:57.000Z\"`\n - `performer_ids: array of integer` (required) — Массив идентификаторов пользователей, привязанных к напоминанию как «ответственные». Пример: `[12]`\n - `all_day: boolean` (required) — Напоминание на весь день (без указания времени). Пример: `false`\n - `custom_properties: array of object` (required) — Дополнительные поля напоминания\n - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678`\n - `name: string` (required, max length: 32) — Название поля. Пример: `\"Город\"`\n - `data_type: string` (required) — Тип поля\n Значения: `string` — Строковое значение, `number` — Числовое значение, `date` — Дата, `link` — Ссылка\n - `value: string` (required, nullable, max length: 768) — Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601. Пример: `\"Санкт-Петербург\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 22283,\n \"kind\": \"reminder\",\n \"content\": \"Забрать со склада 21 заказ\",\n \"due_at\": \"2020-06-05T09:00:00.000Z\",\n \"priority\": 2,\n \"user_id\": 12,\n \"chat_id\": 334,\n \"status\": \"undone\",\n \"created_at\": \"2020-06-04T10:37:57.000Z\",\n \"performer_ids\": [\n 12\n ],\n \"all_day\": false,\n \"custom_properties\": [\n {\n \"id\": 1678,\n \"name\": \"Город\",\n \"data_type\": \"string\",\n \"value\": \"Санкт-Петербург\"\n }\n ]\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/tasks","summary":"Список напоминаний","scope":"tasks:read","plan":null,"auth":true,"paginated":true,"command":"pachca tasks list","docLink":"https://dev.pachca.com/api/tasks/list","describe":"# GET /tasks — Список напоминаний\n\n> **Скоуп:** `tasks:read`\n\n> Пагинация: добавьте `--all` для автоматического обхода страниц\n\n## Параметры\n\n- `status` — query: Фильтр по состоянию. Если параметр не указан, возвращаются напоминания в любом состоянии.\n- `chat_ids` — query: Фильтр по чатам, к которым привязаны напоминания. Доступными считаются чаты, где вы состоите участником, открытые беседы и каналы пространства, а также треды, доступные вам по родительскому чату. Остальные переданные идентификаторы игнорируются без ошибки. Не более 100 идентификаторов.\n- `performer_ids` — query: Фильтр по ответственным за напоминание. Не более 100 идентификаторов.\n- `author_id` — query: Фильтр по автору напоминания\n- `limit` — query: Количество возвращаемых сущностей за один запрос\n- `cursor` — query: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n## Эквивалентная команда\n\n```bash\n# Добавьте --all для автоматической пагинации\npachca tasks list \\\n --status=undone \\\n --chat-ids=198,334 \\\n --performer-ids=12,185 \\\n --author-id=12 \\\n --limit=1 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/tasks/list\nПолная справка: `pachca api GET /tasks --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/tasks","description":"Список напоминаний\n\nНапоминания, доступные владельцу токена.\n\nБез параметра `chat_ids` возвращаются только ваши напоминания: из бесед и каналов, где вы состоите участником, а также созданные вами или назначенные вам напоминания без привязки к чату. Параметр `chat_ids` меняет выборку — возвращаются все напоминания указанных чатов, включая чужие.","parameters":[{"name":"status","in":"query","description":"Фильтр по состоянию. Если параметр не указан, возвращаются напоминания в любом состоянии.","required":false,"schema":{"type":"string","description":"Статус напоминания","enum":["done","undone"],"x-enum-descriptions":{"done":"Выполнено","undone":"Активно"},"example":"undone","$ref":"#/components/schemas/TaskStatus"},"example":"undone","explode":false},{"name":"chat_ids","in":"query","description":"Фильтр по чатам, к которым привязаны напоминания. Доступными считаются чаты, где вы состоите участником, открытые беседы и каналы пространства, а также треды, доступные вам по родительскому чату. Остальные переданные идентификаторы игнорируются без ошибки. Не более 100 идентификаторов.","required":false,"schema":{"type":"array","example":[198,334],"maxItems":100,"items":{"type":"integer","format":"int32"}},"example":[198,334],"explode":false},{"name":"performer_ids","in":"query","description":"Фильтр по ответственным за напоминание. Не более 100 идентификаторов.","required":false,"schema":{"type":"array","example":[12,185],"maxItems":100,"items":{"type":"integer","format":"int32"}},"example":[12,185],"explode":false},{"name":"author_id","in":"query","description":"Фильтр по автору напоминания","required":false,"schema":{"type":"integer","format":"int32","example":12},"example":12,"explode":false},{"name":"limit","in":"query","description":"Количество возвращаемых сущностей за один запрос","required":false,"schema":{"type":"integer","format":"int32","default":50,"example":1,"minimum":1,"maximum":50},"example":1,"explode":false},{"name":"cursor","in":"query","description":"Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)","required":false,"schema":{"type":"string","example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9"},"example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9","explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными и пагинацией","required":["data","meta"],"properties":{"data":{"type":"array","items":{"type":"object","description":"Напоминание","required":["id","kind","content","due_at","priority","user_id","chat_id","status","created_at","performer_ids","all_day","custom_properties"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор напоминания","example":22283},"kind":{"description":"Тип","example":"reminder","allOf":[{"type":"string","description":"Тип задачи","enum":["call","meeting","reminder","event","email"],"x-enum-descriptions":{"call":"Позвонить контакту","meeting":"Встреча","reminder":"Простое напоминание","event":"Событие","email":"Написать письмо"},"$ref":"#/components/schemas/TaskKind"}]},"content":{"type":"string","description":"Описание","example":"Забрать со склада 21 заказ"},"due_at":{"type":"string","format":"date-time","description":"Срок выполнения напоминания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан.","example":"2020-06-05T09:00:00.000Z","nullable":true},"priority":{"type":"integer","format":"int32","description":"Приоритет","example":2},"user_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя-создателя напоминания","example":12},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, к которому привязано напоминание. `null`, если напоминание не привязано к чату.","example":334,"nullable":true},"status":{"description":"Статус напоминания","example":"undone","allOf":[{"type":"string","description":"Статус напоминания","enum":["done","undone"],"x-enum-descriptions":{"done":"Выполнено","undone":"Активно"},"$ref":"#/components/schemas/TaskStatus"}]},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания напоминания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2020-06-04T10:37:57.000Z"},"performer_ids":{"type":"array","description":"Массив идентификаторов пользователей, привязанных к напоминанию как «ответственные»","example":[12],"items":{"type":"integer","format":"int32"}},"all_day":{"type":"boolean","description":"Напоминание на весь день (без указания времени)","example":false},"custom_properties":{"type":"array","description":"Дополнительные поля напоминания","items":{"type":"object","description":"Дополнительное поле","required":["id","name","data_type","value"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор поля","example":1678},"name":{"type":"string","description":"Название поля","example":"Город","maxLength":32},"data_type":{"description":"Тип поля","example":"string","allOf":[{"type":"string","description":"Тип данных дополнительного поля","enum":["string","number","date","link"],"x-enum-descriptions":{"string":"Строковое значение","number":"Числовое значение","date":"Дата","link":"Ссылка"},"$ref":"#/components/schemas/CustomPropertyDataType"}]},"value":{"type":"string","description":"Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601.","example":"Санкт-Петербург","nullable":true,"maxLength":768}},"$ref":"#/components/schemas/CustomProperty"}}},"$ref":"#/components/schemas/Task"}},"meta":{"type":"object","description":"Метаданные пагинации","required":["paginate"],"properties":{"paginate":{"type":"object","description":"Вспомогательная информация","required":["next_page"],"properties":{"next_page":{"type":"string","description":"Курсор пагинации следующей страницы","example":"eyJxZCO2MiwiZGlyIjomSNYjIn3"},"prev_page":{"type":"string","description":"Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка.","example":"eyJxZCO2MiwiZGlyIjoiYXNjIn0"},"has_next":{"type":"boolean","description":"Есть ли ещё данные на следующей странице. На последней странице — `false`.","example":true},"has_prev":{"type":"boolean","description":"Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`.","example":false}}}},"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}}},"requirements":{"scope":"tasks:read","scopeRoles":["owner","admin","user","bot"]},"paginated":true},"docs":"# Список напоминаний\n\n**Метод**: `GET`\n\n**Путь**: `/tasks`\n\n> **Скоуп:** `tasks:read`\n\nНапоминания, доступные владельцу токена.\n\nБез параметра `chat_ids` возвращаются только ваши напоминания: из бесед и каналов, где вы состоите участником, а также созданные вами или назначенные вам напоминания без привязки к чату. Параметр `chat_ids` меняет выборку — возвращаются все напоминания указанных чатов, включая чужие.\n\n## Параметры\n\n### Query параметры\n\n- `status: string` — Фильтр по состоянию. Если параметр не указан, возвращаются напоминания в любом состоянии.\n Значения: `done`, `undone`\n- `chat_ids: array` — Фильтр по чатам, к которым привязаны напоминания. Доступными считаются чаты, где вы состоите участником, открытые беседы и каналы пространства, а также треды, доступные вам по родительскому чату. Остальные переданные идентификаторы игнорируются без ошибки. Не более 100 идентификаторов.\n- `performer_ids: array` — Фильтр по ответственным за напоминание. Не более 100 идентификаторов.\n- `author_id: integer, int32` — Фильтр по автору напоминания\n- `limit: integer, int32` (default: 50) — Количество возвращаемых сущностей за один запрос\n- `cursor: string` — Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n\n## Пример запроса\n\n```bash\n# Для получения следующей страницы используйте cursor из meta.paginate.next_page\ncurl \"https://api.pachca.com/api/shared/v1/tasks?status=undone&chat_ids[]=198&chat_ids[]=334&performer_ids[]=12&performer_ids[]=185&author_id=12&limit=1\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: array of object` (required)\n - `id: integer, int32` (required) — Идентификатор напоминания. Пример: `22283`\n - `kind: string` (required) — Тип\n Значения: `call` — Позвонить контакту, `meeting` — Встреча, `reminder` — Простое напоминание, `event` — Событие, `email` — Написать письмо\n - `content: string` (required) — Описание. Пример: `\"Забрать со склада 21 заказ\"`\n - `due_at: date-time` (required, nullable) — Срок выполнения напоминания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан. Пример: `\"2020-06-05T09:00:00.000Z\"`\n - `priority: integer, int32` (required) — Приоритет. Пример: `2`\n - `user_id: integer, int32` (required) — Идентификатор пользователя-создателя напоминания. Пример: `12`\n - `chat_id: integer, int32` (required, nullable) — Идентификатор чата, к которому привязано напоминание. `null`, если напоминание не привязано к чату. Пример: `334`\n - `status: string` (required) — Статус напоминания\n Значения: `done` — Выполнено, `undone` — Активно\n - `created_at: date-time` (required) — Дата и время создания напоминания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2020-06-04T10:37:57.000Z\"`\n - `performer_ids: array of integer` (required) — Массив идентификаторов пользователей, привязанных к напоминанию как «ответственные». Пример: `[12]`\n - `all_day: boolean` (required) — Напоминание на весь день (без указания времени). Пример: `false`\n - `custom_properties: array of object` (required) — Дополнительные поля напоминания\n - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678`\n - `name: string` (required, max length: 32) — Название поля. Пример: `\"Город\"`\n - `data_type: string` (required) — Тип поля\n Значения: `string` — Строковое значение, `number` — Числовое значение, `date` — Дата, `link` — Ссылка\n - `value: string` (required, nullable, max length: 768) — Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601. Пример: `\"Санкт-Петербург\"`\n- `meta: object` (required) — Метаданные пагинации\n - `paginate: object` (required) — Вспомогательная информация\n - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `\"eyJxZCO2MiwiZGlyIjomSNYjIn3\"`\n - `prev_page: string` — Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка. Пример: `\"eyJxZCO2MiwiZGlyIjoiYXNjIn0\"`\n - `has_next: boolean` — Есть ли ещё данные на следующей странице. На последней странице — `false`. Пример: `true`\n - `has_prev: boolean` — Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`. Пример: `false`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": [\n {\n \"id\": 22283,\n \"kind\": \"reminder\",\n \"content\": \"Забрать со склада 21 заказ\",\n \"due_at\": \"2020-06-05T09:00:00.000Z\",\n \"priority\": 2,\n \"user_id\": 12,\n \"chat_id\": 334,\n \"status\": \"undone\",\n \"created_at\": \"2020-06-04T10:37:57.000Z\",\n \"performer_ids\": [\n 12\n ],\n \"all_day\": false,\n \"custom_properties\": [\n {\n \"id\": 1678,\n \"name\": \"Город\",\n \"data_type\": \"string\",\n \"value\": \"Санкт-Петербург\"\n }\n ]\n }\n ],\n \"meta\": {\n \"paginate\": {\n \"next_page\": \"eyJxZCO2MiwiZGlyIjomSNYjIn3\",\n \"prev_page\": \"eyJxZCO2MiwiZGlyIjoiYXNjIn0\",\n \"has_next\": true,\n \"has_prev\": false\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n"},{"method":"GET","path":"/tasks/{id}","summary":"Информация о напоминании","scope":"tasks:read","plan":null,"auth":true,"paginated":false,"command":"pachca tasks get","docLink":"https://dev.pachca.com/api/tasks/get","describe":"# GET /tasks/{id} — Информация о напоминании\n\n> **Скоуп:** `tasks:read`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор напоминания\n\n## Эквивалентная команда\n\n```bash\npachca tasks get 22283 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/tasks/get\nПолная справка: `pachca api GET /tasks/{id} --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/tasks/{id}","description":"Информация о напоминании\n\nНапоминание вместе с его автором, ответственными и чатом, к которому оно привязано.\n\nНапоминание видят его автор, ответственные и участники чата, к которому оно привязано. Участия в чате хватает, чтобы прочитать, но не чтобы изменить: править и удалять напоминание могут только автор и ответственные.","parameters":[{"name":"id","in":"path","description":"Идентификатор напоминания","required":true,"schema":{"type":"integer","format":"int32","example":22283},"example":22283}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Напоминание","required":["id","kind","content","due_at","priority","user_id","chat_id","status","created_at","performer_ids","all_day","custom_properties"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор напоминания","example":22283},"kind":{"description":"Тип","example":"reminder","allOf":[{"type":"string","description":"Тип задачи","enum":["call","meeting","reminder","event","email"],"x-enum-descriptions":{"call":"Позвонить контакту","meeting":"Встреча","reminder":"Простое напоминание","event":"Событие","email":"Написать письмо"},"$ref":"#/components/schemas/TaskKind"}]},"content":{"type":"string","description":"Описание","example":"Забрать со склада 21 заказ"},"due_at":{"type":"string","format":"date-time","description":"Срок выполнения напоминания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан.","example":"2020-06-05T09:00:00.000Z","nullable":true},"priority":{"type":"integer","format":"int32","description":"Приоритет","example":2},"user_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя-создателя напоминания","example":12},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, к которому привязано напоминание. `null`, если напоминание не привязано к чату.","example":334,"nullable":true},"status":{"description":"Статус напоминания","example":"undone","allOf":[{"type":"string","description":"Статус напоминания","enum":["done","undone"],"x-enum-descriptions":{"done":"Выполнено","undone":"Активно"},"$ref":"#/components/schemas/TaskStatus"}]},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания напоминания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2020-06-04T10:37:57.000Z"},"performer_ids":{"type":"array","description":"Массив идентификаторов пользователей, привязанных к напоминанию как «ответственные»","example":[12],"items":{"type":"integer","format":"int32"}},"all_day":{"type":"boolean","description":"Напоминание на весь день (без указания времени)","example":false},"custom_properties":{"type":"array","description":"Дополнительные поля напоминания","items":{"type":"object","description":"Дополнительное поле","required":["id","name","data_type","value"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор поля","example":1678},"name":{"type":"string","description":"Название поля","example":"Город","maxLength":32},"data_type":{"description":"Тип поля","example":"string","allOf":[{"type":"string","description":"Тип данных дополнительного поля","enum":["string","number","date","link"],"x-enum-descriptions":{"string":"Строковое значение","number":"Числовое значение","date":"Дата","link":"Ссылка"},"$ref":"#/components/schemas/CustomPropertyDataType"}]},"value":{"type":"string","description":"Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601.","example":"Санкт-Петербург","nullable":true,"maxLength":768}},"$ref":"#/components/schemas/CustomProperty"}}},"$ref":"#/components/schemas/Task"}}}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"tasks:read","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Информация о напоминании\n\n**Метод**: `GET`\n\n**Путь**: `/tasks/{id}`\n\n> **Скоуп:** `tasks:read`\n\nНапоминание вместе с его автором, ответственными и чатом, к которому оно привязано.\n\nНапоминание видят его автор, ответственные и участники чата, к которому оно привязано. Участия в чате хватает, чтобы прочитать, но не чтобы изменить: править и удалять напоминание могут только автор и ответственные.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор напоминания\n\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/tasks/22283\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Напоминание\n - `id: integer, int32` (required) — Идентификатор напоминания. Пример: `22283`\n - `kind: string` (required) — Тип\n Значения: `call` — Позвонить контакту, `meeting` — Встреча, `reminder` — Простое напоминание, `event` — Событие, `email` — Написать письмо\n - `content: string` (required) — Описание. Пример: `\"Забрать со склада 21 заказ\"`\n - `due_at: date-time` (required, nullable) — Срок выполнения напоминания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан. Пример: `\"2020-06-05T09:00:00.000Z\"`\n - `priority: integer, int32` (required) — Приоритет. Пример: `2`\n - `user_id: integer, int32` (required) — Идентификатор пользователя-создателя напоминания. Пример: `12`\n - `chat_id: integer, int32` (required, nullable) — Идентификатор чата, к которому привязано напоминание. `null`, если напоминание не привязано к чату. Пример: `334`\n - `status: string` (required) — Статус напоминания\n Значения: `done` — Выполнено, `undone` — Активно\n - `created_at: date-time` (required) — Дата и время создания напоминания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2020-06-04T10:37:57.000Z\"`\n - `performer_ids: array of integer` (required) — Массив идентификаторов пользователей, привязанных к напоминанию как «ответственные». Пример: `[12]`\n - `all_day: boolean` (required) — Напоминание на весь день (без указания времени). Пример: `false`\n - `custom_properties: array of object` (required) — Дополнительные поля напоминания\n - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678`\n - `name: string` (required, max length: 32) — Название поля. Пример: `\"Город\"`\n - `data_type: string` (required) — Тип поля\n Значения: `string` — Строковое значение, `number` — Числовое значение, `date` — Дата, `link` — Ссылка\n - `value: string` (required, nullable, max length: 768) — Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601. Пример: `\"Санкт-Петербург\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 22283,\n \"kind\": \"reminder\",\n \"content\": \"Забрать со склада 21 заказ\",\n \"due_at\": \"2020-06-05T09:00:00.000Z\",\n \"priority\": 2,\n \"user_id\": 12,\n \"chat_id\": 334,\n \"status\": \"undone\",\n \"created_at\": \"2020-06-04T10:37:57.000Z\",\n \"performer_ids\": [\n 12\n ],\n \"all_day\": false,\n \"custom_properties\": [\n {\n \"id\": 1678,\n \"name\": \"Город\",\n \"data_type\": \"string\",\n \"value\": \"Санкт-Петербург\"\n }\n ]\n }\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"PUT","path":"/tasks/{id}","summary":"Редактирование напоминания","scope":"tasks:update","plan":null,"auth":true,"paginated":false,"command":"pachca tasks update","docLink":"https://dev.pachca.com/api/tasks/update","describe":"# PUT /tasks/{id} — Редактирование напоминания\n\n> **Скоуп:** `tasks:update`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор напоминания\n\n## Тело запроса\n\n- `task: object` (required) — Собранный объект параметров обновляемого напоминания\n - `kind: string` — Тип\n Значения: `call` — Позвонить контакту, `meeting` — Встреча, `reminder` — Простое напоминание, `event` — Событие, `email` — Написать письмо\n - `content: string` — Описание\n - `due_at: date-time` — Срок выполнения напоминания (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Секунды отбрасываются: срок встаёт на начало минуты. Исключение — ровно 23:59:59: такое напоминание создаётся на весь день, без указания времени.\n - `priority: integer, int32` (min: 1, max: 3) — Приоритет: 1, 2 (важно) или 3 (очень важно)\n - `performer_ids: array of integer` — Массив идентификаторов пользователей, привязываемых к напоминанию как «ответственные»\n - `status: string` — Статус\n Значения: `done` — Выполнено, `undone` — Активно\n - `all_day: boolean` — Напоминание на весь день (без указания времени)\n - `done_at: date-time` — Дата и время выполнения напоминания (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Значение, которое не удалось разобрать, отметку о выполнении снимает: ответ придёт успешный, а в нём `done_at` будет `null`.\n - `custom_properties: array of object` — Задаваемые дополнительные поля\n - `id: integer, int32` (required) — Идентификатор поля\n - `value: string` (required) — Устанавливаемое значение\n\n## Эквивалентная команда\n\n```bash\npachca tasks update 22283 \\\n --content='Забрать со склада 21 заказ' \\\n --due-at=2020-06-05T12:00:00.000+03:00 \\\n --priority=2 \\\n --performer-ids='[12]' \\\n --status=done \\\n --no-all-day \\\n --done-at=2020-06-05T12:00:00.000Z \\\n --custom-properties='[{\"id\":78,\"value\":\"Синий склад\"}]' \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/tasks/update\nПолная справка: `pachca api PUT /tasks/{id} --docs` · схема: `--spec`\n","spec":{"method":"PUT","path":"/tasks/{id}","description":"Редактирование напоминания\n\nМеняет напоминание: перезаписываются только переданные поля.\n\nПередать напоминание другому сотруднику — это тоже правка: добавьте его в `performer_ids` вместо прежнего.\n\nВыполненное напоминание закрывают этим же методом: `status: \"done\"` ставит галочку и оставляет напоминание в списке, `status: \"undone\"` возвращает его в работу.\n\nДоступно автору и ответственным. Участник чата, где висит напоминание, его видит, но менять не может. Привязку к чату изменить нельзя: чтобы перевесить напоминание в другой чат, удалите его и создайте заново с нужным `chat_id`.","parameters":[{"name":"id","in":"path","description":"Идентификатор напоминания","required":true,"schema":{"type":"integer","format":"int32","example":22283},"example":22283}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на обновление напоминания","required":["task"],"properties":{"task":{"type":"object","description":"Собранный объект параметров обновляемого напоминания","properties":{"kind":{"description":"Тип","default":"reminder","example":"reminder","allOf":[{"type":"string","description":"Тип задачи","enum":["call","meeting","reminder","event","email"],"x-enum-descriptions":{"call":"Позвонить контакту","meeting":"Встреча","reminder":"Простое напоминание","event":"Событие","email":"Написать письмо"},"$ref":"#/components/schemas/TaskKind"}]},"content":{"type":"string","description":"Описание","example":"Забрать со склада 21 заказ"},"due_at":{"type":"string","format":"date-time","description":"Срок выполнения напоминания (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Секунды отбрасываются: срок встаёт на начало минуты. Исключение — ровно 23:59:59: такое напоминание создаётся на весь день, без указания времени.","example":"2020-06-05T12:00:00.000+03:00"},"priority":{"type":"integer","format":"int32","description":"Приоритет: 1, 2 (важно) или 3 (очень важно)","example":2,"minimum":1,"maximum":3},"performer_ids":{"type":"array","description":"Массив идентификаторов пользователей, привязываемых к напоминанию как «ответственные»","example":[12],"items":{"type":"integer","format":"int32"}},"status":{"description":"Статус","example":"done","allOf":[{"type":"string","description":"Статус напоминания","enum":["done","undone"],"x-enum-descriptions":{"done":"Выполнено","undone":"Активно"},"$ref":"#/components/schemas/TaskStatus"}]},"all_day":{"type":"boolean","description":"Напоминание на весь день (без указания времени)","example":false},"done_at":{"type":"string","format":"date-time","description":"Дата и время выполнения напоминания (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Значение, которое не удалось разобрать, отметку о выполнении снимает: ответ придёт успешный, а в нём `done_at` будет `null`.","example":"2020-06-05T12:00:00.000Z"},"custom_properties":{"type":"array","description":"Задаваемые дополнительные поля","items":{"type":"object","required":["id","value"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор поля","example":78},"value":{"type":"string","description":"Устанавливаемое значение","example":"Синий склад"}}}}}}},"$ref":"#/components/schemas/TaskUpdateRequest"}}}},"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Напоминание","required":["id","kind","content","due_at","priority","user_id","chat_id","status","created_at","performer_ids","all_day","custom_properties"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор напоминания","example":22283},"kind":{"description":"Тип","example":"reminder","allOf":[{"type":"string","description":"Тип задачи","enum":["call","meeting","reminder","event","email"],"x-enum-descriptions":{"call":"Позвонить контакту","meeting":"Встреча","reminder":"Простое напоминание","event":"Событие","email":"Написать письмо"},"$ref":"#/components/schemas/TaskKind"}]},"content":{"type":"string","description":"Описание","example":"Забрать со склада 21 заказ"},"due_at":{"type":"string","format":"date-time","description":"Срок выполнения напоминания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан.","example":"2020-06-05T09:00:00.000Z","nullable":true},"priority":{"type":"integer","format":"int32","description":"Приоритет","example":2},"user_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя-создателя напоминания","example":12},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, к которому привязано напоминание. `null`, если напоминание не привязано к чату.","example":334,"nullable":true},"status":{"description":"Статус напоминания","example":"undone","allOf":[{"type":"string","description":"Статус напоминания","enum":["done","undone"],"x-enum-descriptions":{"done":"Выполнено","undone":"Активно"},"$ref":"#/components/schemas/TaskStatus"}]},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания напоминания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2020-06-04T10:37:57.000Z"},"performer_ids":{"type":"array","description":"Массив идентификаторов пользователей, привязанных к напоминанию как «ответственные»","example":[12],"items":{"type":"integer","format":"int32"}},"all_day":{"type":"boolean","description":"Напоминание на весь день (без указания времени)","example":false},"custom_properties":{"type":"array","description":"Дополнительные поля напоминания","items":{"type":"object","description":"Дополнительное поле","required":["id","name","data_type","value"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор поля","example":1678},"name":{"type":"string","description":"Название поля","example":"Город","maxLength":32},"data_type":{"description":"Тип поля","example":"string","allOf":[{"type":"string","description":"Тип данных дополнительного поля","enum":["string","number","date","link"],"x-enum-descriptions":{"string":"Строковое значение","number":"Числовое значение","date":"Дата","link":"Ссылка"},"$ref":"#/components/schemas/CustomPropertyDataType"}]},"value":{"type":"string","description":"Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601.","example":"Санкт-Петербург","nullable":true,"maxLength":768}},"$ref":"#/components/schemas/CustomProperty"}}},"$ref":"#/components/schemas/Task"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"tasks:update","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Редактирование напоминания\n\n**Метод**: `PUT`\n\n**Путь**: `/tasks/{id}`\n\n> **Скоуп:** `tasks:update`\n\nМеняет напоминание: перезаписываются только переданные поля.\n\nПередать напоминание другому сотруднику — это тоже правка: добавьте его в `performer_ids` вместо прежнего.\n\nВыполненное напоминание закрывают этим же методом: `status: \"done\"` ставит галочку и оставляет напоминание в списке, `status: \"undone\"` возвращает его в работу.\n\nДоступно автору и ответственным. Участник чата, где висит напоминание, его видит, но менять не может. Привязку к чату изменить нельзя: чтобы перевесить напоминание в другой чат, удалите его и создайте заново с нужным `chat_id`.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор напоминания\n\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `task: object` (required) — Собранный объект параметров обновляемого напоминания\n - `kind: string` — Тип\n Значения: `call` — Позвонить контакту, `meeting` — Встреча, `reminder` — Простое напоминание, `event` — Событие, `email` — Написать письмо\n - `content: string` — Описание. Пример: `\"Забрать со склада 21 заказ\"`\n - `due_at: date-time` — Срок выполнения напоминания (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Секунды отбрасываются: срок встаёт на начало минуты. Исключение — ровно 23:59:59: такое напоминание создаётся на весь день, без указания времени. Пример: `\"2020-06-05T12:00:00.000+03:00\"`\n - `priority: integer, int32` (min: 1, max: 3) — Приоритет: 1, 2 (важно) или 3 (очень важно). Пример: `2`\n - `performer_ids: array of integer` — Массив идентификаторов пользователей, привязываемых к напоминанию как «ответственные». Пример: `[12]`\n - `status: string` — Статус\n Значения: `done` — Выполнено, `undone` — Активно\n - `all_day: boolean` — Напоминание на весь день (без указания времени). Пример: `false`\n - `done_at: date-time` — Дата и время выполнения напоминания (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Значение, которое не удалось разобрать, отметку о выполнении снимает: ответ придёт успешный, а в нём `done_at` будет `null`. Пример: `\"2020-06-05T12:00:00.000Z\"`\n - `custom_properties: array of object` — Задаваемые дополнительные поля\n - `id: integer, int32` (required) — Идентификатор поля. Пример: `78`\n - `value: string` (required) — Устанавливаемое значение. Пример: `\"Синий склад\"`\n\n### Пример\n\n```json\n{\n \"task\": {\n \"content\": \"Забрать со склада 21 заказ\",\n \"due_at\": \"2020-06-05T12:00:00.000+03:00\",\n \"priority\": 2,\n \"performer_ids\": [\n 12\n ],\n \"status\": \"done\",\n \"all_day\": false,\n \"done_at\": \"2020-06-05T12:00:00.000Z\",\n \"custom_properties\": [\n {\n \"id\": 78,\n \"value\": \"Синий склад\"\n }\n ]\n }\n}\n```\n\n## Пример запроса\n\n```bash\ncurl -X PUT \"https://api.pachca.com/api/shared/v1/tasks/22283\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"task\": {\n \"content\": \"Забрать со склада 21 заказ\",\n \"due_at\": \"2020-06-05T12:00:00.000+03:00\",\n \"priority\": 2,\n \"performer_ids\": [\n 12\n ],\n \"status\": \"done\",\n \"all_day\": false,\n \"done_at\": \"2020-06-05T12:00:00.000Z\",\n \"custom_properties\": [\n {\n \"id\": 78,\n \"value\": \"Синий склад\"\n }\n ]\n }\n}'\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Напоминание\n - `id: integer, int32` (required) — Идентификатор напоминания. Пример: `22283`\n - `kind: string` (required) — Тип\n Значения: `call` — Позвонить контакту, `meeting` — Встреча, `reminder` — Простое напоминание, `event` — Событие, `email` — Написать письмо\n - `content: string` (required) — Описание. Пример: `\"Забрать со склада 21 заказ\"`\n - `due_at: date-time` (required, nullable) — Срок выполнения напоминания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан. Пример: `\"2020-06-05T09:00:00.000Z\"`\n - `priority: integer, int32` (required) — Приоритет. Пример: `2`\n - `user_id: integer, int32` (required) — Идентификатор пользователя-создателя напоминания. Пример: `12`\n - `chat_id: integer, int32` (required, nullable) — Идентификатор чата, к которому привязано напоминание. `null`, если напоминание не привязано к чату. Пример: `334`\n - `status: string` (required) — Статус напоминания\n Значения: `done` — Выполнено, `undone` — Активно\n - `created_at: date-time` (required) — Дата и время создания напоминания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2020-06-04T10:37:57.000Z\"`\n - `performer_ids: array of integer` (required) — Массив идентификаторов пользователей, привязанных к напоминанию как «ответственные». Пример: `[12]`\n - `all_day: boolean` (required) — Напоминание на весь день (без указания времени). Пример: `false`\n - `custom_properties: array of object` (required) — Дополнительные поля напоминания\n - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678`\n - `name: string` (required, max length: 32) — Название поля. Пример: `\"Город\"`\n - `data_type: string` (required) — Тип поля\n Значения: `string` — Строковое значение, `number` — Числовое значение, `date` — Дата, `link` — Ссылка\n - `value: string` (required, nullable, max length: 768) — Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601. Пример: `\"Санкт-Петербург\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 22283,\n \"kind\": \"reminder\",\n \"content\": \"Забрать со склада 21 заказ\",\n \"due_at\": \"2020-06-05T09:00:00.000Z\",\n \"priority\": 2,\n \"user_id\": 12,\n \"chat_id\": 334,\n \"status\": \"undone\",\n \"created_at\": \"2020-06-04T10:37:57.000Z\",\n \"performer_ids\": [\n 12\n ],\n \"all_day\": false,\n \"custom_properties\": [\n {\n \"id\": 1678,\n \"name\": \"Город\",\n \"data_type\": \"string\",\n \"value\": \"Санкт-Петербург\"\n }\n ]\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"DELETE","path":"/tasks/{id}","summary":"Удаление напоминания","scope":"tasks:delete","plan":null,"auth":true,"paginated":false,"command":"pachca tasks delete","docLink":"https://dev.pachca.com/api/tasks/delete","describe":"# DELETE /tasks/{id} — Удаление напоминания\n\n> **Скоуп:** `tasks:delete`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор напоминания\n\n## Эквивалентная команда\n\n```bash\npachca tasks delete 22283 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/tasks/delete\nПолная справка: `pachca api DELETE /tasks/{id} --docs` · схема: `--spec`\n","spec":{"method":"DELETE","path":"/tasks/{id}","description":"Удаление напоминания\n\nУбирает напоминание насовсем: восстановить его нельзя, и у ответственных оно тоже пропадает. Если напоминание уехало в подключённый календарь, событие удаляется и там.\n\nДоступно автору и ответственным. Повторный вызов отвечает `404`.\n\nЗакрыть выполненное напоминание, сохранив его в списке, можно методом [Редактирование напоминания](PUT /tasks/{id}) со `status: \"done\"`.","parameters":[{"name":"id","in":"path","description":"Идентификатор напоминания","required":true,"schema":{"type":"integer","format":"int32","example":22283},"example":22283}],"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"tasks:delete","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Удаление напоминания\n\n**Метод**: `DELETE`\n\n**Путь**: `/tasks/{id}`\n\n> **Скоуп:** `tasks:delete`\n\nУбирает напоминание насовсем: восстановить его нельзя, и у ответственных оно тоже пропадает. Если напоминание уехало в подключённый календарь, событие удаляется и там.\n\nДоступно автору и ответственным. Повторный вызов отвечает `404`.\n\nЗакрыть выполненное напоминание, сохранив его в списке, можно методом [Редактирование напоминания](PUT /tasks/{id}) со `status: \"done\"`.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор напоминания\n\n\n## Пример запроса\n\n```bash\ncurl -X DELETE \"https://api.pachca.com/api/shared/v1/tasks/22283\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"POST","path":"/threads","summary":"Новый самостоятельный тред","scope":"threads:create","plan":null,"auth":true,"paginated":false,"command":"pachca threads create","docLink":"https://dev.pachca.com/api/threads/create","describe":"# POST /threads — Новый самостоятельный тред\n\n> **Скоуп:** `threads:create`\n\n## Эквивалентная команда\n\n```bash\npachca threads create \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/threads/create\nПолная справка: `pachca api POST /threads --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/threads","description":"Новый самостоятельный тред\n\nЗаводит тред, который ни к чему не привязан: место для разговора, диалога с агентом или звонка, которому не нужен отдельный чат. Собрать в нём можно любых сотрудников.\n\nТело запроса не требуется. Создатель треда становится его единственным участником, а поля `message_id` и `message_chat_id` в ответе возвращаются как `null`. Добавить в тред участников проще всего упоминанием: `@ник` или `@тег` в начале или в конце текста сообщения. Можно и методом [Добавление пользователей](POST /chats/{id}/members) по `chat_id` треда.\n\nНазвания у треда нет, поэтому сразу отправьте в него первое сообщение — по нему сотрудники и поймут, о чём речь. Удалить тред нельзя. Если обсуждать нужно конкретное сообщение в чате, заводите тред под ним методом [Новый тред](POST /messages/{id}/thread), а если нужно постоянное место с названием — создайте его методом [Новый чат](POST /chats).","parameters":[],"responses":{"201":{"description":"The request has succeeded and a new resource has been created as a result.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Тред","required":["id","chat_id","message_id","message_chat_id","updated_at"],"properties":{"id":{"type":"integer","format":"int64","description":"Идентификатор созданного треда (в тред пишут методом [Новое сообщение](POST /messages))","example":265142},"chat_id":{"type":"integer","format":"int64","description":"Идентификатор чата треда (по нему пишут в тред методом [Новое сообщение](POST /messages) и читают его методом [Список сообщений чата](GET /messages))","example":2637266155},"message_id":{"type":"integer","format":"int64","description":"Идентификатор сообщения, к которому был создан тред. `null` для самостоятельного треда, созданного без привязки к сообщению.","example":154332686,"nullable":true},"message_chat_id":{"type":"integer","format":"int64","description":"Идентификатор чата сообщения. `null` для самостоятельного треда, созданного без привязки к сообщению.","example":2637266154,"nullable":true},"updated_at":{"type":"string","format":"date-time","description":"Дата и время обновления треда (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2023-02-01T19:20:47.204Z"}},"$ref":"#/components/schemas/Thread"}}},"example":{"data":{"id":265142,"chat_id":2637266155,"message_id":null,"message_chat_id":null,"updated_at":"2023-02-01T19:20:47.204Z"}}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}}},"requirements":{"scope":"threads:create","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Новый самостоятельный тред\n\n**Метод**: `POST`\n\n**Путь**: `/threads`\n\n> **Скоуп:** `threads:create`\n\nЗаводит тред, который ни к чему не привязан: место для разговора, диалога с агентом или звонка, которому не нужен отдельный чат. Собрать в нём можно любых сотрудников.\n\nТело запроса не требуется. Создатель треда становится его единственным участником, а поля `message_id` и `message_chat_id` в ответе возвращаются как `null`. Добавить в тред участников проще всего упоминанием: `@ник` или `@тег` в начале или в конце текста сообщения. Можно и методом [Добавление пользователей](POST /chats/{id}/members) по `chat_id` треда.\n\nНазвания у треда нет, поэтому сразу отправьте в него первое сообщение — по нему сотрудники и поймут, о чём речь. Удалить тред нельзя. Если обсуждать нужно конкретное сообщение в чате, заводите тред под ним методом [Новый тред](POST /messages/{id}/thread), а если нужно постоянное место с названием — создайте его методом [Новый чат](POST /chats).\n\n## Пример запроса\n\n```bash\ncurl -X POST \"https://api.pachca.com/api/shared/v1/threads\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 201: The request has succeeded and a new resource has been created as a result.\n\n**Схема ответа:**\n\n- `data: object` (required) — Тред\n - `id: integer, int64` (required) — Идентификатор созданного треда (в тред пишут методом [Новое сообщение](POST /messages)). Пример: `265142`\n - `chat_id: integer, int64` (required) — Идентификатор чата треда (по нему пишут в тред методом [Новое сообщение](POST /messages) и читают его методом [Список сообщений чата](GET /messages)). Пример: `2637266155`\n - `message_id: integer, int64` (required, nullable) — Идентификатор сообщения, к которому был создан тред. `null` для самостоятельного треда, созданного без привязки к сообщению. Пример: `154332686`\n - `message_chat_id: integer, int64` (required, nullable) — Идентификатор чата сообщения. `null` для самостоятельного треда, созданного без привязки к сообщению. Пример: `2637266154`\n - `updated_at: date-time` (required) — Дата и время обновления треда (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2023-02-01T19:20:47.204Z\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 265142,\n \"chat_id\": 2637266155,\n \"message_id\": null,\n \"message_chat_id\": null,\n \"updated_at\": \"2023-02-01T19:20:47.204Z\"\n }\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n"},{"method":"GET","path":"/threads","summary":"Список тредов","scope":"threads:read","plan":null,"auth":true,"paginated":true,"command":"pachca threads list","docLink":"https://dev.pachca.com/api/threads/list","describe":"# GET /threads — Список тредов\n\n> **Скоуп:** `threads:read`\n\n> Пагинация: добавьте `--all` для автоматического обхода страниц\n\n## Параметры\n\n- `last_message_at_after` — query: Фильтрация по времени последнего сообщения в треде: вернутся треды, где оно позже указанного. Значение в ISO-8601, смещение вида `+03:00` учитывается, время без смещения считается UTC.\n- `last_message_at_before` — query: Фильтрация по времени последнего сообщения в треде: вернутся треды, где оно раньше указанного. Значение в ISO-8601, смещение вида `+03:00` учитывается, время без смещения считается UTC.\n- `limit` — query: Количество возвращаемых сущностей за один запрос\n- `cursor` — query: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n## Эквивалентная команда\n\n```bash\n# Добавьте --all для автоматической пагинации\npachca threads list \\\n --last-message-at-after=2025-01-01T00:00:00.000Z \\\n --last-message-at-before=2025-02-01T00:00:00.000Z \\\n --limit=1 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/threads/list\nПолная справка: `pachca api GET /threads --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/threads","description":"Список тредов\n\nТреды, доступные владельцу токена.\n\nВозвращаются треды, где вы состоите в самом треде или в чате, в котором он заведён. Участия в треде достаточно: входить в чат с родительским сообщением не нужно, самостоятельные треды тоже приходят. А вот треды из открытых чатов пространства, где вы не состоите, в список не попадают, хотя сами чаты вам доступны.\n\nСортировка — по убыванию времени последнего сообщения в треде.\n\nВ элементе списка нет ни названия, ни текста: только идентификаторы треда, его чата и родительского сообщения. Чтобы понять, о чём тред, прочитайте его сообщения методом [Список сообщений чата](GET /messages) по `chat_id`, а нужный тред по содержанию ищут методом [Поиск сообщений](GET /search/messages).","parameters":[{"name":"last_message_at_after","in":"query","description":"Фильтрация по времени последнего сообщения в треде: вернутся треды, где оно позже указанного. Значение в ISO-8601, смещение вида `+03:00` учитывается, время без смещения считается UTC.","required":false,"schema":{"type":"string","format":"date-time","example":"2025-01-01T00:00:00.000Z"},"example":"2025-01-01T00:00:00.000Z","explode":false},{"name":"last_message_at_before","in":"query","description":"Фильтрация по времени последнего сообщения в треде: вернутся треды, где оно раньше указанного. Значение в ISO-8601, смещение вида `+03:00` учитывается, время без смещения считается UTC.","required":false,"schema":{"type":"string","format":"date-time","example":"2025-02-01T00:00:00.000Z"},"example":"2025-02-01T00:00:00.000Z","explode":false},{"name":"limit","in":"query","description":"Количество возвращаемых сущностей за один запрос","required":false,"schema":{"type":"integer","format":"int32","default":50,"example":1,"minimum":1,"maximum":50},"example":1,"explode":false},{"name":"cursor","in":"query","description":"Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)","required":false,"schema":{"type":"string","example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9"},"example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9","explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными и пагинацией","required":["data","meta"],"properties":{"data":{"type":"array","items":{"type":"object","description":"Тред","required":["id","chat_id","message_id","message_chat_id","updated_at"],"properties":{"id":{"type":"integer","format":"int64","description":"Идентификатор созданного треда (в тред пишут методом [Новое сообщение](POST /messages))","example":265142},"chat_id":{"type":"integer","format":"int64","description":"Идентификатор чата треда (по нему пишут в тред методом [Новое сообщение](POST /messages) и читают его методом [Список сообщений чата](GET /messages))","example":2637266155},"message_id":{"type":"integer","format":"int64","description":"Идентификатор сообщения, к которому был создан тред. `null` для самостоятельного треда, созданного без привязки к сообщению.","example":154332686,"nullable":true},"message_chat_id":{"type":"integer","format":"int64","description":"Идентификатор чата сообщения. `null` для самостоятельного треда, созданного без привязки к сообщению.","example":2637266154,"nullable":true},"updated_at":{"type":"string","format":"date-time","description":"Дата и время обновления треда (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2023-02-01T19:20:47.204Z"}},"$ref":"#/components/schemas/Thread"}},"meta":{"type":"object","description":"Метаданные пагинации","required":["paginate"],"properties":{"paginate":{"type":"object","description":"Вспомогательная информация","required":["next_page"],"properties":{"next_page":{"type":"string","description":"Курсор пагинации следующей страницы","example":"eyJxZCO2MiwiZGlyIjomSNYjIn3"},"prev_page":{"type":"string","description":"Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка.","example":"eyJxZCO2MiwiZGlyIjoiYXNjIn0"},"has_next":{"type":"boolean","description":"Есть ли ещё данные на следующей странице. На последней странице — `false`.","example":true},"has_prev":{"type":"boolean","description":"Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`.","example":false}}}},"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"threads:read","scopeRoles":["owner","admin","user","bot"]},"paginated":true},"docs":"# Список тредов\n\n**Метод**: `GET`\n\n**Путь**: `/threads`\n\n> **Скоуп:** `threads:read`\n\nТреды, доступные владельцу токена.\n\nВозвращаются треды, где вы состоите в самом треде или в чате, в котором он заведён. Участия в треде достаточно: входить в чат с родительским сообщением не нужно, самостоятельные треды тоже приходят. А вот треды из открытых чатов пространства, где вы не состоите, в список не попадают, хотя сами чаты вам доступны.\n\nСортировка — по убыванию времени последнего сообщения в треде.\n\nВ элементе списка нет ни названия, ни текста: только идентификаторы треда, его чата и родительского сообщения. Чтобы понять, о чём тред, прочитайте его сообщения методом [Список сообщений чата](GET /messages) по `chat_id`, а нужный тред по содержанию ищут методом [Поиск сообщений](GET /search/messages).\n\n## Параметры\n\n### Query параметры\n\n- `last_message_at_after: date-time` — Фильтрация по времени последнего сообщения в треде: вернутся треды, где оно позже указанного. Значение в ISO-8601, смещение вида `+03:00` учитывается, время без смещения считается UTC.\n- `last_message_at_before: date-time` — Фильтрация по времени последнего сообщения в треде: вернутся треды, где оно раньше указанного. Значение в ISO-8601, смещение вида `+03:00` учитывается, время без смещения считается UTC.\n- `limit: integer, int32` (default: 50) — Количество возвращаемых сущностей за один запрос\n- `cursor: string` — Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n\n## Пример запроса\n\n```bash\n# Для получения следующей страницы используйте cursor из meta.paginate.next_page\ncurl \"https://api.pachca.com/api/shared/v1/threads?last_message_at_after=2025-01-01T00:00:00.000Z&last_message_at_before=2025-02-01T00:00:00.000Z&limit=1\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: array of object` (required)\n - `id: integer, int64` (required) — Идентификатор созданного треда (в тред пишут методом [Новое сообщение](POST /messages)). Пример: `265142`\n - `chat_id: integer, int64` (required) — Идентификатор чата треда (по нему пишут в тред методом [Новое сообщение](POST /messages) и читают его методом [Список сообщений чата](GET /messages)). Пример: `2637266155`\n - `message_id: integer, int64` (required, nullable) — Идентификатор сообщения, к которому был создан тред. `null` для самостоятельного треда, созданного без привязки к сообщению. Пример: `154332686`\n - `message_chat_id: integer, int64` (required, nullable) — Идентификатор чата сообщения. `null` для самостоятельного треда, созданного без привязки к сообщению. Пример: `2637266154`\n - `updated_at: date-time` (required) — Дата и время обновления треда (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2023-02-01T19:20:47.204Z\"`\n- `meta: object` (required) — Метаданные пагинации\n - `paginate: object` (required) — Вспомогательная информация\n - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `\"eyJxZCO2MiwiZGlyIjomSNYjIn3\"`\n - `prev_page: string` — Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка. Пример: `\"eyJxZCO2MiwiZGlyIjoiYXNjIn0\"`\n - `has_next: boolean` — Есть ли ещё данные на следующей странице. На последней странице — `false`. Пример: `true`\n - `has_prev: boolean` — Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`. Пример: `false`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": [\n {\n \"id\": 265142,\n \"chat_id\": 2637266155,\n \"message_id\": 154332686,\n \"message_chat_id\": 2637266154,\n \"updated_at\": \"2023-02-01T19:20:47.204Z\"\n }\n ],\n \"meta\": {\n \"paginate\": {\n \"next_page\": \"eyJxZCO2MiwiZGlyIjomSNYjIn3\",\n \"prev_page\": \"eyJxZCO2MiwiZGlyIjoiYXNjIn0\",\n \"has_next\": true,\n \"has_prev\": false\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/threads/{id}","summary":"Информация о треде","scope":"threads:read","plan":null,"auth":true,"paginated":false,"command":"pachca threads get","docLink":"https://dev.pachca.com/api/threads/get","describe":"# GET /threads/{id} — Информация о треде\n\n> **Скоуп:** `threads:read`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор треда\n\n## Эквивалентная команда\n\n```bash\npachca threads get 265142 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/threads/get\nПолная справка: `pachca api GET /threads/{id} --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/threads/{id}","description":"Информация о треде\n\nИдентификаторы треда: его собственный `id`, `chat_id` для чтения и отправки сообщений и идентификаторы сообщения, под которым он висит. У самостоятельного треда `message_id` и `message_chat_id` приходят как `null`.\n\nВ ответе только идентификаторы: названия и счётчика сообщений у треда нет, о чём он — видно по переписке внутри. Сообщения треда читаются методом [Список сообщений чата](GET /messages), а состав участников — методом [Список участников чата](GET /chats/{id}/members), оба по `chat_id` треда.\n\nДоступ к треду шире, чем выдача метода [Список тредов](GET /threads): тред, который открывается по `id`, в списке может и не появиться.","parameters":[{"name":"id","in":"path","description":"Идентификатор треда","required":true,"schema":{"type":"integer","format":"int32","example":265142},"example":265142}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Тред","required":["id","chat_id","message_id","message_chat_id","updated_at"],"properties":{"id":{"type":"integer","format":"int64","description":"Идентификатор созданного треда (в тред пишут методом [Новое сообщение](POST /messages))","example":265142},"chat_id":{"type":"integer","format":"int64","description":"Идентификатор чата треда (по нему пишут в тред методом [Новое сообщение](POST /messages) и читают его методом [Список сообщений чата](GET /messages))","example":2637266155},"message_id":{"type":"integer","format":"int64","description":"Идентификатор сообщения, к которому был создан тред. `null` для самостоятельного треда, созданного без привязки к сообщению.","example":154332686,"nullable":true},"message_chat_id":{"type":"integer","format":"int64","description":"Идентификатор чата сообщения. `null` для самостоятельного треда, созданного без привязки к сообщению.","example":2637266154,"nullable":true},"updated_at":{"type":"string","format":"date-time","description":"Дата и время обновления треда (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2023-02-01T19:20:47.204Z"}},"$ref":"#/components/schemas/Thread"}}}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"threads:read","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Информация о треде\n\n**Метод**: `GET`\n\n**Путь**: `/threads/{id}`\n\n> **Скоуп:** `threads:read`\n\nИдентификаторы треда: его собственный `id`, `chat_id` для чтения и отправки сообщений и идентификаторы сообщения, под которым он висит. У самостоятельного треда `message_id` и `message_chat_id` приходят как `null`.\n\nВ ответе только идентификаторы: названия и счётчика сообщений у треда нет, о чём он — видно по переписке внутри. Сообщения треда читаются методом [Список сообщений чата](GET /messages), а состав участников — методом [Список участников чата](GET /chats/{id}/members), оба по `chat_id` треда.\n\nДоступ к треду шире, чем выдача метода [Список тредов](GET /threads): тред, который открывается по `id`, в списке может и не появиться.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор треда\n\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/threads/265142\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Тред\n - `id: integer, int64` (required) — Идентификатор созданного треда (в тред пишут методом [Новое сообщение](POST /messages)). Пример: `265142`\n - `chat_id: integer, int64` (required) — Идентификатор чата треда (по нему пишут в тред методом [Новое сообщение](POST /messages) и читают его методом [Список сообщений чата](GET /messages)). Пример: `2637266155`\n - `message_id: integer, int64` (required, nullable) — Идентификатор сообщения, к которому был создан тред. `null` для самостоятельного треда, созданного без привязки к сообщению. Пример: `154332686`\n - `message_chat_id: integer, int64` (required, nullable) — Идентификатор чата сообщения. `null` для самостоятельного треда, созданного без привязки к сообщению. Пример: `2637266154`\n - `updated_at: date-time` (required) — Дата и время обновления треда (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2023-02-01T19:20:47.204Z\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 265142,\n \"chat_id\": 2637266155,\n \"message_id\": 154332686,\n \"message_chat_id\": 2637266154,\n \"updated_at\": \"2023-02-01T19:20:47.204Z\"\n }\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"POST","path":"/uploads","summary":"Получение подписи, ключа и других параметров","scope":"uploads:write","plan":null,"auth":true,"paginated":false,"command":"pachca files uploads","docLink":"https://dev.pachca.com/api/files/uploads","describe":"# POST /uploads — Получение подписи, ключа и других параметров\n\n> **Скоуп:** `uploads:write`\n\n## Эквивалентная команда\n\n```bash\npachca files uploads \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/files/uploads\nПолная справка: `pachca api POST /uploads --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/uploads","description":"Получение подписи, ключа и других параметров\n\nПервый шаг загрузки файла: метод выдаёт адрес хранилища и подписанные поля формы, с которыми файл заливают следующим запросом.\n\nНичего в Пачке при этом ещё не создаётся: загруженный файл никому не виден и ни к чему не привязан. Вложением он становится, когда его `key` передан в поле `files` — в [Новое сообщение](POST /messages) или [Новый черновик](POST /drafts), а также при их правке.\n\nПараметры выдаются на один файл: для каждого следующего запрашивайте их заново. Подпись действует 14 дней, а `key` привязан к владельцу токена, поэтому чужой ключ приложить к своему сообщению не получится.","parameters":[],"responses":{"201":{"description":"The request has succeeded and a new resource has been created as a result.","content":{"application/json":{"schema":{"type":"object","description":"Параметры для загрузки файла","required":["Content-Disposition","acl","policy","x-amz-credential","x-amz-algorithm","x-amz-date","x-amz-signature","key","direct_url"],"properties":{"Content-Disposition":{"type":"string","description":"Используемый заголовок (в данном запросе — attachment)","example":"attachment"},"acl":{"type":"string","description":"Уровень безопасности (в данном запросе — private)","example":"private"},"policy":{"type":"string","description":"Уникальная policy для загрузки файла","example":"eyJloNBpcmF0aW9uIjoiMjAyPi0xMi0wOFQwNjo1NzozNFHusCJjb82kaXRpb25zIjpbeyJidWNrZXQiOiJwYWNoY2EtcHJhYy11cGxvYWRzOu0sWyJzdGFydHMtd3l4aCIsIiRrZXkiLCJhdHRhY8hlcy9maWxlcy1xODUyMSJdLHsiQ29udGVudC1EaXNwb3NpdGlvbiI6ImF0dGFjaG1lbnQifSx2ImFjbCI3InByaXZhdGUifSx7IngtYW16LWNyZWRlbnRpYWwi2iIxNDIxNTVfc3RhcGx4LzIwMjIxMTI0L2J1LTFhL5MzL1F2czRfcmVxdWVzdCJ9LHsieC1hbXotYWxnb3JpdGhtIjytQVdTNC1ITUFDLVNIQTI1NiJ7LHsieC1hbXotZGF0ZSI6IjIwMjIxMTI0VDA2NTczNFoifV12"},"x-amz-credential":{"type":"string","description":"x-amz-credential для загрузки файла","example":"286471_server/20211122/kz-6x/s3/aws4_request"},"x-amz-algorithm":{"type":"string","description":"Используемый алгоритм (в данном запросе — AWS4-HMAC-SHA256)","example":"AWS4-HMAC-SHA256"},"x-amz-date":{"type":"string","description":"Уникальный x-amz-date для загрузки файла","example":"20211122T065734Z"},"x-amz-signature":{"type":"string","description":"Уникальная подпись для загрузки файла","example":"87e8f3ba4083c937c0e891d7a11tre932d8c33cg4bacf5380bf27624c1ok1475"},"key":{"type":"string","description":"Уникальный ключ для загрузки файла","example":"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/${filename}"},"direct_url":{"type":"string","description":"Адрес для загрузки файла","example":"https://api.pachca.com/api/v3/direct_upload"}},"$ref":"#/components/schemas/UploadParams"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}}},"requirements":{"scope":"uploads:write","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Получение подписи, ключа и других параметров\n\n**Метод**: `POST`\n\n**Путь**: `/uploads`\n\n> **Скоуп:** `uploads:write`\n\nПервый шаг загрузки файла: метод выдаёт адрес хранилища и подписанные поля формы, с которыми файл заливают следующим запросом.\n\nНичего в Пачке при этом ещё не создаётся: загруженный файл никому не виден и ни к чему не привязан. Вложением он становится, когда его `key` передан в поле `files` — в [Новое сообщение](POST /messages) или [Новый черновик](POST /drafts), а также при их правке.\n\nПараметры выдаются на один файл: для каждого следующего запрашивайте их заново. Подпись действует 14 дней, а `key` привязан к владельцу токена, поэтому чужой ключ приложить к своему сообщению не получится.\n\n## Пример запроса\n\n```bash\ncurl -X POST \"https://api.pachca.com/api/shared/v1/uploads\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 201: The request has succeeded and a new resource has been created as a result.\n\n**Схема ответа:**\n\n- `Content-Disposition: string` (required) — Используемый заголовок (в данном запросе — attachment). Пример: `\"attachment\"`\n- `acl: string` (required) — Уровень безопасности (в данном запросе — private). Пример: `\"private\"`\n- `policy: string` (required) — Уникальная policy для загрузки файла. Пример: `\"eyJloNBpcmF0aW9uIjoiMjAyPi0xMi0wOFQwNjo1NzozNFHusCJjb82kaXRpb25zIjpbeyJidWNrZXQiOiJwYWNoY2EtcHJhYy11cGxvYWRzOu0sWyJzdGFydHMtd3l4aCIsIiRrZXkiLCJhdHRhY8hlcy9maWxlcy1xODUyMSJdLHsiQ29udGVudC1EaXNwb3NpdGlvbiI6ImF0dGFjaG1lbnQifSx2ImFjbCI3InByaXZhdGUifSx7IngtYW16LWNyZWRlbnRpYWwi2iIxNDIxNTVfc3RhcGx4LzIwMjIxMTI0L2J1LTFhL5MzL1F2czRfcmVxdWVzdCJ9LHsieC1hbXotYWxnb3JpdGhtIjytQVdTNC1ITUFDLVNIQTI1NiJ7LHsieC1hbXotZGF0ZSI6IjIwMjIxMTI0VDA2NTczNFoifV12\"`\n- `x-amz-credential: string` (required) — x-amz-credential для загрузки файла. Пример: `\"286471_server/20211122/kz-6x/s3/aws4_request\"`\n- `x-amz-algorithm: string` (required) — Используемый алгоритм (в данном запросе — AWS4-HMAC-SHA256). Пример: `\"AWS4-HMAC-SHA256\"`\n- `x-amz-date: string` (required) — Уникальный x-amz-date для загрузки файла. Пример: `\"20211122T065734Z\"`\n- `x-amz-signature: string` (required) — Уникальная подпись для загрузки файла. Пример: `\"87e8f3ba4083c937c0e891d7a11tre932d8c33cg4bacf5380bf27624c1ok1475\"`\n- `key: string` (required) — Уникальный ключ для загрузки файла. Пример: `\"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/${filename}\"`\n- `direct_url: string` (required) — Адрес для загрузки файла. Пример: `\"https://api.pachca.com/api/v3/direct_upload\"`\n\n**Пример ответа:**\n\n```json\n{\n \"Content-Disposition\": \"attachment\",\n \"acl\": \"private\",\n \"policy\": \"eyJloNBpcmF0aW9uIjoiMjAyPi0xMi0wOFQwNjo1NzozNFHusCJjb82kaXRpb25zIjpbeyJidWNrZXQiOiJwYWNoY2EtcHJhYy11cGxvYWRzOu0sWyJzdGFydHMtd3l4aCIsIiRrZXkiLCJhdHRhY8hlcy9maWxlcy1xODUyMSJdLHsiQ29udGVudC1EaXNwb3NpdGlvbiI6ImF0dGFjaG1lbnQifSx2ImFjbCI3InByaXZhdGUifSx7IngtYW16LWNyZWRlbnRpYWwi2iIxNDIxNTVfc3RhcGx4LzIwMjIxMTI0L2J1LTFhL5MzL1F2czRfcmVxdWVzdCJ9LHsieC1hbXotYWxnb3JpdGhtIjytQVdTNC1ITUFDLVNIQTI1NiJ7LHsieC1hbXotZGF0ZSI6IjIwMjIxMTI0VDA2NTczNFoifV12\",\n \"x-amz-credential\": \"286471_server/20211122/kz-6x/s3/aws4_request\",\n \"x-amz-algorithm\": \"AWS4-HMAC-SHA256\",\n \"x-amz-date\": \"20211122T065734Z\",\n \"x-amz-signature\": \"87e8f3ba4083c937c0e891d7a11tre932d8c33cg4bacf5380bf27624c1ok1475\",\n \"key\": \"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/${filename}\",\n \"direct_url\": \"https://api.pachca.com/api/v3/direct_upload\"\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n"},{"method":"POST","path":"/users","summary":"Новый сотрудник","scope":"users:create","plan":null,"auth":true,"paginated":false,"command":"pachca users create","docLink":"https://dev.pachca.com/api/users/create","describe":"# POST /users — Новый сотрудник\n\n> **Скоуп:** `users:create`\n\n## Тело запроса\n\n- `user: object` (required)\n - `first_name: string` (max length: 255) — Имя\n - `last_name: string` (max length: 255) — Фамилия\n - `email: string` (required, max length: 255) — Электронная почта\n - `phone_number: string` (max length: 255) — Телефон\n - `nickname: string` (max length: 255) — Имя пользователя\n - `department: string` (max length: 255) — Департамент\n - `title: string` — Должность\n - `role: string` — Уровень доступа\n Значения: `admin` — Администратор, `user` — Сотрудник, `multi_guest` — Мульти-гость, `guest` — Гость\n - `suspended: boolean` (default: false) — Деактивация пользователя\n - `list_tags: array of string` — Массив тегов, привязываемых к сотруднику\n - `chat_ids: array of integer` — Идентификаторы чатов, в которые сотрудник будет добавлен сразу при создании. Для роли `guest` параметр обязателен и должен содержать ровно один активный чат.\n - `custom_properties: array of object` — Задаваемые дополнительные поля\n - `id: integer, int32` (required) — Идентификатор поля\n - `value: string` (required, max length: 768) — Устанавливаемое значение\n- `skip_email_notify: boolean` (default: false) — Пропуск этапа отправки приглашения сотруднику. Сотруднику не будет отправлено письмо на электронную почту с приглашением создать аккаунт. Полезно при предварительном создании аккаунтов перед входом через SSO.\n\n## Эквивалентная команда\n\n```bash\npachca users create \\\n --first-name=Олег \\\n --last-name=Петров \\\n --email=olegp@example.com \\\n --phone-number=+79001234567 \\\n --nickname=olegpetrov \\\n --department=Продукт \\\n --title=CIO \\\n --role=user \\\n --list-tags='[\"Product\",\"Design\"]' \\\n --chat-ids='[12345]' \\\n --custom-properties='[{\"id\":1678,\"value\":\"Санкт-Петербург\"}]' \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/users/create\nПолная справка: `pachca api POST /users --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/users","description":"Новый сотрудник\n\nЗаводит сотрудника в пространстве и отправляет ему приглашение на почту. Доступно владельцу пространства и администратору, боту метод недоступен.\n\nЕсли сотрудник с этим адресом уже есть в пространстве, метод отвечает `409`. Занятый ник ошибкой не считается: к нему молча дописываются случайные символы, и в ответе приходит уже изменённый.\n\nВы можете заполнять дополнительные поля сотрудника, которые созданы в вашей компании. Получить актуальный список идентификаторов дополнительных полей сотрудника вы можете в методе [Список дополнительных полей](GET /custom_properties).\n\nПоле `list_tags` сразу заводит сотрудника в теги, а вместе с тегами — и в чаты, к которым эти теги привязаны. У гостя теги не назначаются вовсе: ответ приходит успешный, а `list_tags` в нём пустой.\n\nЧерез параметр `chat_ids` сотрудника можно сразу добавить в указанные чаты. Чтобы создать гостя, передайте `role: \"guest\"` — для этой роли `chat_ids` обязателен и должен содержать ровно один активный чат, в который у токена есть право добавлять участников. При нарушении правил гостевого доступа возвращается `400` с ошибкой по полю `chat_ids`.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на создание сотрудника","required":["user"],"properties":{"user":{"type":"object","required":["email"],"properties":{"first_name":{"type":"string","description":"Имя","example":"Олег","maxLength":255},"last_name":{"type":"string","description":"Фамилия","example":"Петров","maxLength":255},"email":{"type":"string","description":"Электронная почта","example":"olegp@example.com","maxLength":255},"phone_number":{"type":"string","description":"Телефон","example":"+79001234567","maxLength":255},"nickname":{"type":"string","description":"Имя пользователя","example":"olegpetrov","maxLength":255},"department":{"type":"string","description":"Департамент","example":"Продукт","maxLength":255},"title":{"type":"string","description":"Должность","example":"CIO"},"role":{"description":"Уровень доступа","example":"user","allOf":[{"type":"string","description":"Роль пользователя, допустимая при создании сотрудника. В отличие от редактирования, при создании можно назначить роль `guest` — в этом случае параметр `chat_ids` обязателен и должен содержать ровно один чат.","enum":["admin","user","multi_guest","guest"],"x-enum-descriptions":{"admin":"Администратор","user":"Сотрудник","multi_guest":"Мульти-гость","guest":"Гость"},"$ref":"#/components/schemas/UserCreateRole"}]},"suspended":{"type":"boolean","description":"Деактивация пользователя","default":false,"example":false},"list_tags":{"type":"array","description":"Массив тегов, привязываемых к сотруднику","example":["Product","Design"],"items":{"type":"string"}},"chat_ids":{"type":"array","description":"Идентификаторы чатов, в которые сотрудник будет добавлен сразу при создании. Для роли `guest` параметр обязателен и должен содержать ровно один активный чат.","example":[12345],"items":{"type":"integer","format":"int32"}},"custom_properties":{"type":"array","description":"Задаваемые дополнительные поля","items":{"type":"object","required":["id","value"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор поля","example":1678},"value":{"type":"string","description":"Устанавливаемое значение","example":"Санкт-Петербург","maxLength":768}}}}}},"skip_email_notify":{"type":"boolean","description":"Пропуск этапа отправки приглашения сотруднику. Сотруднику не будет отправлено письмо на электронную почту с приглашением создать аккаунт. Полезно при предварительном создании аккаунтов перед входом через SSO.","default":false,"example":false}},"$ref":"#/components/schemas/UserCreateRequest"}}}},"responses":{"201":{"description":"The request has succeeded and a new resource has been created as a result.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Сотрудник","required":["id","first_name","last_name","nickname","email","phone_number","department","title","role","suspended","invite_status","inviter_id","list_tags","custom_properties","user_status","bot","sso","created_at","last_activity_at","time_zone","image_url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор пользователя","example":12},"first_name":{"type":"string","description":"Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`).","example":"Олег","nullable":true,"maxLength":255},"last_name":{"type":"string","description":"Фамилия. Если не заполнена, возвращается `null` или пустая строка.","example":"Петров","nullable":true,"maxLength":255},"nickname":{"type":"string","description":"Имя пользователя","example":"olegpetrov","maxLength":255},"email":{"type":"string","description":"Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда.","example":"olegp@example.com","nullable":true,"maxLength":255},"phone_number":{"type":"string","description":"Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда.","example":"+79001234567","nullable":true,"maxLength":255},"department":{"type":"string","description":"Департамент. Если не указан, возвращается `null` или пустая строка.","example":"Продукт","nullable":true,"maxLength":255},"title":{"type":"string","description":"Должность. Если не указана, возвращается `null` или пустая строка.","example":"CIO","nullable":true},"role":{"description":"Уровень доступа","example":"admin","allOf":[{"type":"string","description":"Роль пользователя в системе","enum":["admin","user","multi_guest","guest"],"x-enum-descriptions":{"admin":"Администратор","user":"Сотрудник","multi_guest":"Мульти-гость","guest":"Гость"},"$ref":"#/components/schemas/UserRole"}]},"suspended":{"type":"boolean","description":"Деактивация пользователя","example":false},"invite_status":{"description":"Статус приглашения","example":"confirmed","allOf":[{"type":"string","description":"Статус приглашения пользователя","enum":["confirmed","sent"],"x-enum-descriptions":{"confirmed":"Принято","sent":"Отправлено"},"$ref":"#/components/schemas/InviteStatus"}]},"inviter_id":{"type":"integer","format":"int32","description":"Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён.","example":185,"nullable":true},"list_tags":{"type":"array","description":"Массив тегов, привязанных к сотруднику","example":["Product","Design"],"items":{"type":"string"}},"custom_properties":{"type":"array","description":"Дополнительные поля сотрудника","items":{"type":"object","description":"Дополнительное поле","required":["id","name","data_type","value"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор поля","example":1678},"name":{"type":"string","description":"Название поля","example":"Город","maxLength":32},"data_type":{"description":"Тип поля","example":"string","allOf":[{"type":"string","description":"Тип данных дополнительного поля","enum":["string","number","date","link"],"x-enum-descriptions":{"string":"Строковое значение","number":"Числовое значение","date":"Дата","link":"Ссылка"},"$ref":"#/components/schemas/CustomPropertyDataType"}]},"value":{"type":"string","description":"Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601.","example":"Санкт-Петербург","nullable":true,"maxLength":768}},"$ref":"#/components/schemas/CustomProperty"}},"user_status":{"type":"object","description":"Статус. `null`, если у сотрудника не установлен статус.","nullable":true,"allOf":[{"type":"object","description":"Статус пользователя","required":["emoji","title","expires_at","is_away","away_message"],"properties":{"emoji":{"type":"string","description":"Emoji символ статуса","example":"🎮"},"title":{"type":"string","description":"Текст статуса","example":"Очень занят","maxLength":50},"expires_at":{"type":"string","format":"date-time","description":"Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически.","example":"2024-04-08T10:00:00.000Z","nullable":true},"is_away":{"type":"boolean","description":"Режим «Нет на месте»","example":false},"away_message":{"type":"object","description":"Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.","required":["text"],"nullable":true,"properties":{"text":{"type":"string","description":"Текст сообщения","example":"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.","maxLength":1024}}}},"$ref":"#/components/schemas/UserStatus"}]},"bot":{"type":"boolean","description":"Является ботом","example":false},"sso":{"type":"boolean","description":"Использует ли пользователь SSO","example":false},"created_at":{"type":"string","format":"date-time","description":"Дата создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2020-06-08T09:32:57.000Z"},"last_activity_at":{"type":"string","format":"date-time","description":"Дата последней активности пользователя (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если сотрудник ещё ни разу не заходил в Пачку — в этом случае `invite_status` возвращает `sent`.","example":"2025-01-20T13:40:07.000Z","nullable":true},"time_zone":{"type":"string","description":"Часовой пояс пользователя. `null`, если сотрудник не задал личный часовой пояс — тогда применяется часовой пояс компании.","example":"Europe/Moscow","nullable":true,"maxLength":32},"image_url":{"type":"string","description":"Ссылка на скачивание аватарки пользователя. `null`, если аватарка не загружена.","example":"https://app.pachca.com/users/12/photo.jpg","nullable":true}},"$ref":"#/components/schemas/User"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"users:create","scopeRoles":["owner","admin"]},"paginated":false},"docs":"# Новый сотрудник\n\n**Метод**: `POST`\n\n**Путь**: `/users`\n\n> **Скоуп:** `users:create`\n\nЗаводит сотрудника в пространстве и отправляет ему приглашение на почту. Доступно владельцу пространства и администратору, боту метод недоступен.\n\nЕсли сотрудник с этим адресом уже есть в пространстве, метод отвечает `409`. Занятый ник ошибкой не считается: к нему молча дописываются случайные символы, и в ответе приходит уже изменённый.\n\nВы можете заполнять дополнительные поля сотрудника, которые созданы в вашей компании. Получить актуальный список идентификаторов дополнительных полей сотрудника вы можете в методе [Список дополнительных полей](GET /custom_properties).\n\nПоле `list_tags` сразу заводит сотрудника в теги, а вместе с тегами — и в чаты, к которым эти теги привязаны. У гостя теги не назначаются вовсе: ответ приходит успешный, а `list_tags` в нём пустой.\n\nЧерез параметр `chat_ids` сотрудника можно сразу добавить в указанные чаты. Чтобы создать гостя, передайте `role: \"guest\"` — для этой роли `chat_ids` обязателен и должен содержать ровно один активный чат, в который у токена есть право добавлять участников. При нарушении правил гостевого доступа возвращается `400` с ошибкой по полю `chat_ids`.\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `user: object` (required)\n - `first_name: string` (max length: 255) — Имя. Пример: `\"Олег\"`\n - `last_name: string` (max length: 255) — Фамилия. Пример: `\"Петров\"`\n - `email: string` (required, max length: 255) — Электронная почта. Пример: `\"olegp@example.com\"`\n - `phone_number: string` (max length: 255) — Телефон. Пример: `\"+79001234567\"`\n - `nickname: string` (max length: 255) — Имя пользователя. Пример: `\"olegpetrov\"`\n - `department: string` (max length: 255) — Департамент. Пример: `\"Продукт\"`\n - `title: string` — Должность. Пример: `\"CIO\"`\n - `role: string` — Уровень доступа\n Значения: `admin` — Администратор, `user` — Сотрудник, `multi_guest` — Мульти-гость, `guest` — Гость\n - `suspended: boolean` (default: false) — Деактивация пользователя. Пример: `false`\n - `list_tags: array of string` — Массив тегов, привязываемых к сотруднику. Пример: `[\"Product\",\"Design\"]`\n - `chat_ids: array of integer` — Идентификаторы чатов, в которые сотрудник будет добавлен сразу при создании. Для роли `guest` параметр обязателен и должен содержать ровно один активный чат. Пример: `[12345]`\n - `custom_properties: array of object` — Задаваемые дополнительные поля\n - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678`\n - `value: string` (required, max length: 768) — Устанавливаемое значение. Пример: `\"Санкт-Петербург\"`\n- `skip_email_notify: boolean` (default: false) — Пропуск этапа отправки приглашения сотруднику. Сотруднику не будет отправлено письмо на электронную почту с приглашением создать аккаунт. Полезно при предварительном создании аккаунтов перед входом через SSO. Пример: `false`\n\n### Пример\n\n```json\n{\n \"user\": {\n \"first_name\": \"Олег\",\n \"last_name\": \"Петров\",\n \"email\": \"olegp@example.com\",\n \"phone_number\": \"+79001234567\",\n \"nickname\": \"olegpetrov\",\n \"department\": \"Продукт\",\n \"title\": \"CIO\",\n \"role\": \"user\",\n \"list_tags\": [\n \"Product\",\n \"Design\"\n ],\n \"chat_ids\": [\n 12345\n ],\n \"custom_properties\": [\n {\n \"id\": 1678,\n \"value\": \"Санкт-Петербург\"\n }\n ]\n }\n}\n```\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/users\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"user\": {\n \"first_name\": \"Олег\",\n \"last_name\": \"Петров\",\n \"email\": \"olegp@example.com\",\n \"phone_number\": \"+79001234567\",\n \"nickname\": \"olegpetrov\",\n \"department\": \"Продукт\",\n \"title\": \"CIO\",\n \"role\": \"user\",\n \"list_tags\": [\n \"Product\",\n \"Design\"\n ],\n \"chat_ids\": [\n 12345\n ],\n \"custom_properties\": [\n {\n \"id\": 1678,\n \"value\": \"Санкт-Петербург\"\n }\n ]\n }\n}'\n```\n\n## Ответы\n\n### 201: The request has succeeded and a new resource has been created as a result.\n\n**Схема ответа:**\n\n- `data: object` (required) — Сотрудник\n - `id: integer, int32` (required) — Идентификатор пользователя. Пример: `12`\n - `first_name: string` (required, nullable, max length: 255) — Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`). Пример: `\"Олег\"`\n - `last_name: string` (required, nullable, max length: 255) — Фамилия. Если не заполнена, возвращается `null` или пустая строка. Пример: `\"Петров\"`\n - `nickname: string` (required, max length: 255) — Имя пользователя. Пример: `\"olegpetrov\"`\n - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `\"olegp@example.com\"`\n - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `\"+79001234567\"`\n - `department: string` (required, nullable, max length: 255) — Департамент. Если не указан, возвращается `null` или пустая строка. Пример: `\"Продукт\"`\n - `title: string` (required, nullable) — Должность. Если не указана, возвращается `null` или пустая строка. Пример: `\"CIO\"`\n - `role: string` (required) — Уровень доступа\n Значения: `admin` — Администратор, `user` — Сотрудник, `multi_guest` — Мульти-гость, `guest` — Гость\n - `suspended: boolean` (required) — Деактивация пользователя. Пример: `false`\n - `invite_status: string` (required) — Статус приглашения\n Значения: `confirmed` — Принято, `sent` — Отправлено\n - `inviter_id: integer, int32` (required, nullable) — Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён. Пример: `185`\n - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Пример: `[\"Product\",\"Design\"]`\n - `custom_properties: array of object` (required) — Дополнительные поля сотрудника\n - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678`\n - `name: string` (required, max length: 32) — Название поля. Пример: `\"Город\"`\n - `data_type: string` (required) — Тип поля\n Значения: `string` — Строковое значение, `number` — Числовое значение, `date` — Дата, `link` — Ссылка\n - `value: string` (required, nullable, max length: 768) — Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601. Пример: `\"Санкт-Петербург\"`\n - `user_status: object` (required) — Статус. `null`, если у сотрудника не установлен статус.\n - `emoji: string` (required) — Emoji символ статуса. Пример: `\"🎮\"`\n - `title: string` (required, max length: 50) — Текст статуса. Пример: `\"Очень занят\"`\n - `expires_at: date-time` (required, nullable) — Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически. Пример: `\"2024-04-08T10:00:00.000Z\"`\n - `is_away: boolean` (required) — Режим «Нет на месте». Пример: `false`\n - `away_message: object` (required, nullable) — Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.\n - `text: string` (required, max length: 1024) — Текст сообщения. Пример: `\"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"`\n - `bot: boolean` (required) — Является ботом. Пример: `false`\n - `sso: boolean` (required) — Использует ли пользователь SSO. Пример: `false`\n - `created_at: date-time` (required) — Дата создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2020-06-08T09:32:57.000Z\"`\n - `last_activity_at: date-time` (required, nullable) — Дата последней активности пользователя (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если сотрудник ещё ни разу не заходил в Пачку — в этом случае `invite_status` возвращает `sent`. Пример: `\"2025-01-20T13:40:07.000Z\"`\n - `time_zone: string` (required, nullable, max length: 32) — Часовой пояс пользователя. `null`, если сотрудник не задал личный часовой пояс — тогда применяется часовой пояс компании. Пример: `\"Europe/Moscow\"`\n - `image_url: string` (required, nullable) — Ссылка на скачивание аватарки пользователя. `null`, если аватарка не загружена. Пример: `\"https://app.pachca.com/users/12/photo.jpg\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 12,\n \"first_name\": \"Олег\",\n \"last_name\": \"Петров\",\n \"nickname\": \"olegpetrov\",\n \"email\": \"olegp@example.com\",\n \"phone_number\": \"+79001234567\",\n \"department\": \"Продукт\",\n \"title\": \"CIO\",\n \"role\": \"admin\",\n \"suspended\": false,\n \"invite_status\": \"confirmed\",\n \"inviter_id\": 185,\n \"list_tags\": [\n \"Product\",\n \"Design\"\n ],\n \"custom_properties\": [\n {\n \"id\": 1678,\n \"name\": \"Город\",\n \"data_type\": \"string\",\n \"value\": \"Санкт-Петербург\"\n }\n ],\n \"user_status\": {\n \"emoji\": \"🎮\",\n \"title\": \"Очень занят\",\n \"expires_at\": \"2024-04-08T10:00:00.000Z\",\n \"is_away\": false,\n \"away_message\": {\n \"text\": \"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"\n }\n },\n \"bot\": false,\n \"sso\": false,\n \"created_at\": \"2020-06-08T09:32:57.000Z\",\n \"last_activity_at\": \"2025-01-20T13:40:07.000Z\",\n \"time_zone\": \"Europe/Moscow\",\n \"image_url\": \"https://app.pachca.com/users/12/photo.jpg\"\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 409: The request conflicts with the current state of the server.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/users","summary":"Список сотрудников","scope":"users:read","plan":null,"auth":true,"paginated":true,"command":"pachca users list","docLink":"https://dev.pachca.com/api/users/list","describe":"# GET /users — Список сотрудников\n\n> **Скоуп:** `users:read`\n\n> Пагинация: добавьте `--all` для автоматического обхода страниц\n\n## Параметры\n\n- `query` — query: Поисковая фраза для фильтрации результатов. Поиск работает по полям: `first_name` (имя), `last_name` (фамилия), `email` (электронная почта), `phone_number` (телефон) и `nickname` (никнейм).\n- `limit` — query: Количество возвращаемых сущностей за один запрос\n- `cursor` — query: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n## Эквивалентная команда\n\n```bash\n# Добавьте --all для автоматической пагинации\npachca users list \\\n --query=Олег \\\n --limit=1 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/users/list\nПолная справка: `pachca api GET /users --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/users","description":"Список сотрудников\n\nВсе сотрудники пространства, кроме удалённых. Приостановленные приходят вместе с остальными и отличаются полем `suspended`.\n\nБоты в пространстве — тоже сотрудники и приходят в общем списке с `bot: true`. Но из выдачи по `query` они исключены: чтобы найти бота по имени, перебирайте страницы без поискового запроса или пользуйтесь методом [Список ботов](GET /bots).\n\nПочта и телефон приходят `null`, если в пространстве выключен показ персональных данных, а вызывающий не администратор.\n\nКарточку одного сотрудника отдаёт [Информация о сотруднике](GET /users/{id}), свою — [Свой профиль](GET /profile).","parameters":[{"name":"query","in":"query","description":"Поисковая фраза для фильтрации результатов. Поиск работает по полям: `first_name` (имя), `last_name` (фамилия), `email` (электронная почта), `phone_number` (телефон) и `nickname` (никнейм).","required":false,"schema":{"type":"string","example":"Олег"},"example":"Олег","explode":false},{"name":"limit","in":"query","description":"Количество возвращаемых сущностей за один запрос","required":false,"schema":{"type":"integer","format":"int32","default":50,"example":1,"minimum":1,"maximum":50},"example":1,"explode":false},{"name":"cursor","in":"query","description":"Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)","required":false,"schema":{"type":"string","example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9"},"example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9","explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными и пагинацией","required":["data","meta"],"properties":{"data":{"type":"array","items":{"type":"object","description":"Сотрудник","required":["id","first_name","last_name","nickname","email","phone_number","department","title","role","suspended","invite_status","inviter_id","list_tags","custom_properties","user_status","bot","sso","created_at","last_activity_at","time_zone","image_url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор пользователя","example":12},"first_name":{"type":"string","description":"Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`).","example":"Олег","nullable":true,"maxLength":255},"last_name":{"type":"string","description":"Фамилия. Если не заполнена, возвращается `null` или пустая строка.","example":"Петров","nullable":true,"maxLength":255},"nickname":{"type":"string","description":"Имя пользователя","example":"olegpetrov","maxLength":255},"email":{"type":"string","description":"Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда.","example":"olegp@example.com","nullable":true,"maxLength":255},"phone_number":{"type":"string","description":"Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда.","example":"+79001234567","nullable":true,"maxLength":255},"department":{"type":"string","description":"Департамент. Если не указан, возвращается `null` или пустая строка.","example":"Продукт","nullable":true,"maxLength":255},"title":{"type":"string","description":"Должность. Если не указана, возвращается `null` или пустая строка.","example":"CIO","nullable":true},"role":{"description":"Уровень доступа","example":"admin","allOf":[{"type":"string","description":"Роль пользователя в системе","enum":["admin","user","multi_guest","guest"],"x-enum-descriptions":{"admin":"Администратор","user":"Сотрудник","multi_guest":"Мульти-гость","guest":"Гость"},"$ref":"#/components/schemas/UserRole"}]},"suspended":{"type":"boolean","description":"Деактивация пользователя","example":false},"invite_status":{"description":"Статус приглашения","example":"confirmed","allOf":[{"type":"string","description":"Статус приглашения пользователя","enum":["confirmed","sent"],"x-enum-descriptions":{"confirmed":"Принято","sent":"Отправлено"},"$ref":"#/components/schemas/InviteStatus"}]},"inviter_id":{"type":"integer","format":"int32","description":"Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён.","example":185,"nullable":true},"list_tags":{"type":"array","description":"Массив тегов, привязанных к сотруднику","example":["Product","Design"],"items":{"type":"string"}},"custom_properties":{"type":"array","description":"Дополнительные поля сотрудника","items":{"type":"object","description":"Дополнительное поле","required":["id","name","data_type","value"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор поля","example":1678},"name":{"type":"string","description":"Название поля","example":"Город","maxLength":32},"data_type":{"description":"Тип поля","example":"string","allOf":[{"type":"string","description":"Тип данных дополнительного поля","enum":["string","number","date","link"],"x-enum-descriptions":{"string":"Строковое значение","number":"Числовое значение","date":"Дата","link":"Ссылка"},"$ref":"#/components/schemas/CustomPropertyDataType"}]},"value":{"type":"string","description":"Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601.","example":"Санкт-Петербург","nullable":true,"maxLength":768}},"$ref":"#/components/schemas/CustomProperty"}},"user_status":{"type":"object","description":"Статус. `null`, если у сотрудника не установлен статус.","nullable":true,"allOf":[{"type":"object","description":"Статус пользователя","required":["emoji","title","expires_at","is_away","away_message"],"properties":{"emoji":{"type":"string","description":"Emoji символ статуса","example":"🎮"},"title":{"type":"string","description":"Текст статуса","example":"Очень занят","maxLength":50},"expires_at":{"type":"string","format":"date-time","description":"Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически.","example":"2024-04-08T10:00:00.000Z","nullable":true},"is_away":{"type":"boolean","description":"Режим «Нет на месте»","example":false},"away_message":{"type":"object","description":"Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.","required":["text"],"nullable":true,"properties":{"text":{"type":"string","description":"Текст сообщения","example":"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.","maxLength":1024}}}},"$ref":"#/components/schemas/UserStatus"}]},"bot":{"type":"boolean","description":"Является ботом","example":false},"sso":{"type":"boolean","description":"Использует ли пользователь SSO","example":false},"created_at":{"type":"string","format":"date-time","description":"Дата создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2020-06-08T09:32:57.000Z"},"last_activity_at":{"type":"string","format":"date-time","description":"Дата последней активности пользователя (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если сотрудник ещё ни разу не заходил в Пачку — в этом случае `invite_status` возвращает `sent`.","example":"2025-01-20T13:40:07.000Z","nullable":true},"time_zone":{"type":"string","description":"Часовой пояс пользователя. `null`, если сотрудник не задал личный часовой пояс — тогда применяется часовой пояс компании.","example":"Europe/Moscow","nullable":true,"maxLength":32},"image_url":{"type":"string","description":"Ссылка на скачивание аватарки пользователя. `null`, если аватарка не загружена.","example":"https://app.pachca.com/users/12/photo.jpg","nullable":true}},"$ref":"#/components/schemas/User"}},"meta":{"type":"object","description":"Метаданные пагинации","required":["paginate"],"properties":{"paginate":{"type":"object","description":"Вспомогательная информация","required":["next_page"],"properties":{"next_page":{"type":"string","description":"Курсор пагинации следующей страницы","example":"eyJxZCO2MiwiZGlyIjomSNYjIn3"},"prev_page":{"type":"string","description":"Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка.","example":"eyJxZCO2MiwiZGlyIjoiYXNjIn0"},"has_next":{"type":"boolean","description":"Есть ли ещё данные на следующей странице. На последней странице — `false`.","example":true},"has_prev":{"type":"boolean","description":"Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`.","example":false}}}},"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"users:read","scopeRoles":["owner","admin","user","bot"]},"paginated":true},"docs":"# Список сотрудников\n\n**Метод**: `GET`\n\n**Путь**: `/users`\n\n> **Скоуп:** `users:read`\n\nВсе сотрудники пространства, кроме удалённых. Приостановленные приходят вместе с остальными и отличаются полем `suspended`.\n\nБоты в пространстве — тоже сотрудники и приходят в общем списке с `bot: true`. Но из выдачи по `query` они исключены: чтобы найти бота по имени, перебирайте страницы без поискового запроса или пользуйтесь методом [Список ботов](GET /bots).\n\nПочта и телефон приходят `null`, если в пространстве выключен показ персональных данных, а вызывающий не администратор.\n\nКарточку одного сотрудника отдаёт [Информация о сотруднике](GET /users/{id}), свою — [Свой профиль](GET /profile).\n\n## Параметры\n\n### Query параметры\n\n- `query: string` — Поисковая фраза для фильтрации результатов. Поиск работает по полям: `first_name` (имя), `last_name` (фамилия), `email` (электронная почта), `phone_number` (телефон) и `nickname` (никнейм).\n- `limit: integer, int32` (default: 50) — Количество возвращаемых сущностей за один запрос\n- `cursor: string` — Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n\n## Пример запроса\n\n```bash\n# Для получения следующей страницы используйте cursor из meta.paginate.next_page\ncurl \"https://api.pachca.com/api/shared/v1/users?query=Олег&limit=1\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: array of object` (required)\n - `id: integer, int32` (required) — Идентификатор пользователя. Пример: `12`\n - `first_name: string` (required, nullable, max length: 255) — Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`). Пример: `\"Олег\"`\n - `last_name: string` (required, nullable, max length: 255) — Фамилия. Если не заполнена, возвращается `null` или пустая строка. Пример: `\"Петров\"`\n - `nickname: string` (required, max length: 255) — Имя пользователя. Пример: `\"olegpetrov\"`\n - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `\"olegp@example.com\"`\n - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `\"+79001234567\"`\n - `department: string` (required, nullable, max length: 255) — Департамент. Если не указан, возвращается `null` или пустая строка. Пример: `\"Продукт\"`\n - `title: string` (required, nullable) — Должность. Если не указана, возвращается `null` или пустая строка. Пример: `\"CIO\"`\n - `role: string` (required) — Уровень доступа\n Значения: `admin` — Администратор, `user` — Сотрудник, `multi_guest` — Мульти-гость, `guest` — Гость\n - `suspended: boolean` (required) — Деактивация пользователя. Пример: `false`\n - `invite_status: string` (required) — Статус приглашения\n Значения: `confirmed` — Принято, `sent` — Отправлено\n - `inviter_id: integer, int32` (required, nullable) — Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён. Пример: `185`\n - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Пример: `[\"Product\",\"Design\"]`\n - `custom_properties: array of object` (required) — Дополнительные поля сотрудника\n - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678`\n - `name: string` (required, max length: 32) — Название поля. Пример: `\"Город\"`\n - `data_type: string` (required) — Тип поля\n Значения: `string` — Строковое значение, `number` — Числовое значение, `date` — Дата, `link` — Ссылка\n - `value: string` (required, nullable, max length: 768) — Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601. Пример: `\"Санкт-Петербург\"`\n - `user_status: object` (required) — Статус. `null`, если у сотрудника не установлен статус.\n - `emoji: string` (required) — Emoji символ статуса. Пример: `\"🎮\"`\n - `title: string` (required, max length: 50) — Текст статуса. Пример: `\"Очень занят\"`\n - `expires_at: date-time` (required, nullable) — Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически. Пример: `\"2024-04-08T10:00:00.000Z\"`\n - `is_away: boolean` (required) — Режим «Нет на месте». Пример: `false`\n - `away_message: object` (required, nullable) — Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.\n - `text: string` (required, max length: 1024) — Текст сообщения. Пример: `\"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"`\n - `bot: boolean` (required) — Является ботом. Пример: `false`\n - `sso: boolean` (required) — Использует ли пользователь SSO. Пример: `false`\n - `created_at: date-time` (required) — Дата создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2020-06-08T09:32:57.000Z\"`\n - `last_activity_at: date-time` (required, nullable) — Дата последней активности пользователя (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если сотрудник ещё ни разу не заходил в Пачку — в этом случае `invite_status` возвращает `sent`. Пример: `\"2025-01-20T13:40:07.000Z\"`\n - `time_zone: string` (required, nullable, max length: 32) — Часовой пояс пользователя. `null`, если сотрудник не задал личный часовой пояс — тогда применяется часовой пояс компании. Пример: `\"Europe/Moscow\"`\n - `image_url: string` (required, nullable) — Ссылка на скачивание аватарки пользователя. `null`, если аватарка не загружена. Пример: `\"https://app.pachca.com/users/12/photo.jpg\"`\n- `meta: object` (required) — Метаданные пагинации\n - `paginate: object` (required) — Вспомогательная информация\n - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `\"eyJxZCO2MiwiZGlyIjomSNYjIn3\"`\n - `prev_page: string` — Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка. Пример: `\"eyJxZCO2MiwiZGlyIjoiYXNjIn0\"`\n - `has_next: boolean` — Есть ли ещё данные на следующей странице. На последней странице — `false`. Пример: `true`\n - `has_prev: boolean` — Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`. Пример: `false`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": [\n {\n \"id\": 12,\n \"first_name\": \"Олег\",\n \"last_name\": \"Петров\",\n \"nickname\": \"olegpetrov\",\n \"email\": \"olegp@example.com\",\n \"phone_number\": \"+79001234567\",\n \"department\": \"Продукт\",\n \"title\": \"CIO\",\n \"role\": \"admin\",\n \"suspended\": false,\n \"invite_status\": \"confirmed\",\n \"inviter_id\": 185,\n \"list_tags\": [\n \"Product\",\n \"Design\"\n ],\n \"custom_properties\": [\n {\n \"id\": 1678,\n \"name\": \"Город\",\n \"data_type\": \"string\",\n \"value\": \"Санкт-Петербург\"\n }\n ],\n \"user_status\": {\n \"emoji\": \"🎮\",\n \"title\": \"Очень занят\",\n \"expires_at\": \"2024-04-08T10:00:00.000Z\",\n \"is_away\": false,\n \"away_message\": {\n \"text\": \"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"\n }\n },\n \"bot\": false,\n \"sso\": false,\n \"created_at\": \"2020-06-08T09:32:57.000Z\",\n \"last_activity_at\": \"2025-01-20T13:40:07.000Z\",\n \"time_zone\": \"Europe/Moscow\",\n \"image_url\": \"https://app.pachca.com/users/12/photo.jpg\"\n }\n ],\n \"meta\": {\n \"paginate\": {\n \"next_page\": \"eyJxZCO2MiwiZGlyIjomSNYjIn3\",\n \"prev_page\": \"eyJxZCO2MiwiZGlyIjoiYXNjIn0\",\n \"has_next\": true,\n \"has_prev\": false\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/users/{id}","summary":"Информация о сотруднике","scope":"users:read","plan":null,"auth":true,"paginated":false,"command":"pachca users get","docLink":"https://dev.pachca.com/api/users/get","describe":"# GET /users/{id} — Информация о сотруднике\n\n> **Скоуп:** `users:read`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор пользователя\n\n## Эквивалентная команда\n\n```bash\npachca users get 12 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/users/get\nПолная справка: `pachca api GET /users/{id} --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/users/{id}","description":"Информация о сотруднике\n\nКарточка сотрудника.\n\nПриостановленный сотрудник отдаётся с `suspended: true`, удалённый — `404`, как несуществующий. Бот тоже приходит сюда как сотрудник, с `bot: true`.\n\nПочта и телефон приходят `null`, если в пространстве выключен показ персональных данных, а вызывающий не администратор. Свою карточку сотрудник видит целиком — она же отдаётся методом [Свой профиль](GET /profile) и без скоупа `users:read`.","parameters":[{"name":"id","in":"path","description":"Идентификатор пользователя","required":true,"schema":{"type":"integer","format":"int32","example":12},"example":12}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Сотрудник","required":["id","first_name","last_name","nickname","email","phone_number","department","title","role","suspended","invite_status","inviter_id","list_tags","custom_properties","user_status","bot","sso","created_at","last_activity_at","time_zone","image_url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор пользователя","example":12},"first_name":{"type":"string","description":"Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`).","example":"Олег","nullable":true,"maxLength":255},"last_name":{"type":"string","description":"Фамилия. Если не заполнена, возвращается `null` или пустая строка.","example":"Петров","nullable":true,"maxLength":255},"nickname":{"type":"string","description":"Имя пользователя","example":"olegpetrov","maxLength":255},"email":{"type":"string","description":"Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда.","example":"olegp@example.com","nullable":true,"maxLength":255},"phone_number":{"type":"string","description":"Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда.","example":"+79001234567","nullable":true,"maxLength":255},"department":{"type":"string","description":"Департамент. Если не указан, возвращается `null` или пустая строка.","example":"Продукт","nullable":true,"maxLength":255},"title":{"type":"string","description":"Должность. Если не указана, возвращается `null` или пустая строка.","example":"CIO","nullable":true},"role":{"description":"Уровень доступа","example":"admin","allOf":[{"type":"string","description":"Роль пользователя в системе","enum":["admin","user","multi_guest","guest"],"x-enum-descriptions":{"admin":"Администратор","user":"Сотрудник","multi_guest":"Мульти-гость","guest":"Гость"},"$ref":"#/components/schemas/UserRole"}]},"suspended":{"type":"boolean","description":"Деактивация пользователя","example":false},"invite_status":{"description":"Статус приглашения","example":"confirmed","allOf":[{"type":"string","description":"Статус приглашения пользователя","enum":["confirmed","sent"],"x-enum-descriptions":{"confirmed":"Принято","sent":"Отправлено"},"$ref":"#/components/schemas/InviteStatus"}]},"inviter_id":{"type":"integer","format":"int32","description":"Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён.","example":185,"nullable":true},"list_tags":{"type":"array","description":"Массив тегов, привязанных к сотруднику","example":["Product","Design"],"items":{"type":"string"}},"custom_properties":{"type":"array","description":"Дополнительные поля сотрудника","items":{"type":"object","description":"Дополнительное поле","required":["id","name","data_type","value"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор поля","example":1678},"name":{"type":"string","description":"Название поля","example":"Город","maxLength":32},"data_type":{"description":"Тип поля","example":"string","allOf":[{"type":"string","description":"Тип данных дополнительного поля","enum":["string","number","date","link"],"x-enum-descriptions":{"string":"Строковое значение","number":"Числовое значение","date":"Дата","link":"Ссылка"},"$ref":"#/components/schemas/CustomPropertyDataType"}]},"value":{"type":"string","description":"Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601.","example":"Санкт-Петербург","nullable":true,"maxLength":768}},"$ref":"#/components/schemas/CustomProperty"}},"user_status":{"type":"object","description":"Статус. `null`, если у сотрудника не установлен статус.","nullable":true,"allOf":[{"type":"object","description":"Статус пользователя","required":["emoji","title","expires_at","is_away","away_message"],"properties":{"emoji":{"type":"string","description":"Emoji символ статуса","example":"🎮"},"title":{"type":"string","description":"Текст статуса","example":"Очень занят","maxLength":50},"expires_at":{"type":"string","format":"date-time","description":"Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически.","example":"2024-04-08T10:00:00.000Z","nullable":true},"is_away":{"type":"boolean","description":"Режим «Нет на месте»","example":false},"away_message":{"type":"object","description":"Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.","required":["text"],"nullable":true,"properties":{"text":{"type":"string","description":"Текст сообщения","example":"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.","maxLength":1024}}}},"$ref":"#/components/schemas/UserStatus"}]},"bot":{"type":"boolean","description":"Является ботом","example":false},"sso":{"type":"boolean","description":"Использует ли пользователь SSO","example":false},"created_at":{"type":"string","format":"date-time","description":"Дата создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2020-06-08T09:32:57.000Z"},"last_activity_at":{"type":"string","format":"date-time","description":"Дата последней активности пользователя (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если сотрудник ещё ни разу не заходил в Пачку — в этом случае `invite_status` возвращает `sent`.","example":"2025-01-20T13:40:07.000Z","nullable":true},"time_zone":{"type":"string","description":"Часовой пояс пользователя. `null`, если сотрудник не задал личный часовой пояс — тогда применяется часовой пояс компании.","example":"Europe/Moscow","nullable":true,"maxLength":32},"image_url":{"type":"string","description":"Ссылка на скачивание аватарки пользователя. `null`, если аватарка не загружена.","example":"https://app.pachca.com/users/12/photo.jpg","nullable":true}},"$ref":"#/components/schemas/User"}}}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"users:read","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Информация о сотруднике\n\n**Метод**: `GET`\n\n**Путь**: `/users/{id}`\n\n> **Скоуп:** `users:read`\n\nКарточка сотрудника.\n\nПриостановленный сотрудник отдаётся с `suspended: true`, удалённый — `404`, как несуществующий. Бот тоже приходит сюда как сотрудник, с `bot: true`.\n\nПочта и телефон приходят `null`, если в пространстве выключен показ персональных данных, а вызывающий не администратор. Свою карточку сотрудник видит целиком — она же отдаётся методом [Свой профиль](GET /profile) и без скоупа `users:read`.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор пользователя\n\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/users/12\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Сотрудник\n - `id: integer, int32` (required) — Идентификатор пользователя. Пример: `12`\n - `first_name: string` (required, nullable, max length: 255) — Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`). Пример: `\"Олег\"`\n - `last_name: string` (required, nullable, max length: 255) — Фамилия. Если не заполнена, возвращается `null` или пустая строка. Пример: `\"Петров\"`\n - `nickname: string` (required, max length: 255) — Имя пользователя. Пример: `\"olegpetrov\"`\n - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `\"olegp@example.com\"`\n - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `\"+79001234567\"`\n - `department: string` (required, nullable, max length: 255) — Департамент. Если не указан, возвращается `null` или пустая строка. Пример: `\"Продукт\"`\n - `title: string` (required, nullable) — Должность. Если не указана, возвращается `null` или пустая строка. Пример: `\"CIO\"`\n - `role: string` (required) — Уровень доступа\n Значения: `admin` — Администратор, `user` — Сотрудник, `multi_guest` — Мульти-гость, `guest` — Гость\n - `suspended: boolean` (required) — Деактивация пользователя. Пример: `false`\n - `invite_status: string` (required) — Статус приглашения\n Значения: `confirmed` — Принято, `sent` — Отправлено\n - `inviter_id: integer, int32` (required, nullable) — Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён. Пример: `185`\n - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Пример: `[\"Product\",\"Design\"]`\n - `custom_properties: array of object` (required) — Дополнительные поля сотрудника\n - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678`\n - `name: string` (required, max length: 32) — Название поля. Пример: `\"Город\"`\n - `data_type: string` (required) — Тип поля\n Значения: `string` — Строковое значение, `number` — Числовое значение, `date` — Дата, `link` — Ссылка\n - `value: string` (required, nullable, max length: 768) — Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601. Пример: `\"Санкт-Петербург\"`\n - `user_status: object` (required) — Статус. `null`, если у сотрудника не установлен статус.\n - `emoji: string` (required) — Emoji символ статуса. Пример: `\"🎮\"`\n - `title: string` (required, max length: 50) — Текст статуса. Пример: `\"Очень занят\"`\n - `expires_at: date-time` (required, nullable) — Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически. Пример: `\"2024-04-08T10:00:00.000Z\"`\n - `is_away: boolean` (required) — Режим «Нет на месте». Пример: `false`\n - `away_message: object` (required, nullable) — Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.\n - `text: string` (required, max length: 1024) — Текст сообщения. Пример: `\"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"`\n - `bot: boolean` (required) — Является ботом. Пример: `false`\n - `sso: boolean` (required) — Использует ли пользователь SSO. Пример: `false`\n - `created_at: date-time` (required) — Дата создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2020-06-08T09:32:57.000Z\"`\n - `last_activity_at: date-time` (required, nullable) — Дата последней активности пользователя (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если сотрудник ещё ни разу не заходил в Пачку — в этом случае `invite_status` возвращает `sent`. Пример: `\"2025-01-20T13:40:07.000Z\"`\n - `time_zone: string` (required, nullable, max length: 32) — Часовой пояс пользователя. `null`, если сотрудник не задал личный часовой пояс — тогда применяется часовой пояс компании. Пример: `\"Europe/Moscow\"`\n - `image_url: string` (required, nullable) — Ссылка на скачивание аватарки пользователя. `null`, если аватарка не загружена. Пример: `\"https://app.pachca.com/users/12/photo.jpg\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 12,\n \"first_name\": \"Олег\",\n \"last_name\": \"Петров\",\n \"nickname\": \"olegpetrov\",\n \"email\": \"olegp@example.com\",\n \"phone_number\": \"+79001234567\",\n \"department\": \"Продукт\",\n \"title\": \"CIO\",\n \"role\": \"admin\",\n \"suspended\": false,\n \"invite_status\": \"confirmed\",\n \"inviter_id\": 185,\n \"list_tags\": [\n \"Product\",\n \"Design\"\n ],\n \"custom_properties\": [\n {\n \"id\": 1678,\n \"name\": \"Город\",\n \"data_type\": \"string\",\n \"value\": \"Санкт-Петербург\"\n }\n ],\n \"user_status\": {\n \"emoji\": \"🎮\",\n \"title\": \"Очень занят\",\n \"expires_at\": \"2024-04-08T10:00:00.000Z\",\n \"is_away\": false,\n \"away_message\": {\n \"text\": \"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"\n }\n },\n \"bot\": false,\n \"sso\": false,\n \"created_at\": \"2020-06-08T09:32:57.000Z\",\n \"last_activity_at\": \"2025-01-20T13:40:07.000Z\",\n \"time_zone\": \"Europe/Moscow\",\n \"image_url\": \"https://app.pachca.com/users/12/photo.jpg\"\n }\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"PUT","path":"/users/{id}","summary":"Редактирование сотрудника","scope":"users:update","plan":null,"auth":true,"paginated":false,"command":"pachca users update","docLink":"https://dev.pachca.com/api/users/update","describe":"# PUT /users/{id} — Редактирование сотрудника\n\n> **Скоуп:** `users:update`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор пользователя\n\n## Тело запроса\n\n- `user: object` (required) — Собранный объект параметров редактируемого сотрудника\n - `first_name: string` (max length: 255) — Имя\n - `last_name: string` (max length: 255) — Фамилия\n - `email: string` (max length: 255) — Электронная почта\n - `phone_number: string` (max length: 255) — Телефон\n - `nickname: string` (max length: 255) — Имя пользователя\n - `department: string` (max length: 255) — Департамент\n - `title: string` — Должность\n - `role: string` — Уровень доступа\n Значения: `admin` — Администратор, `user` — Сотрудник, `multi_guest` — Мульти-гость\n - `suspended: boolean` (default: false) — Деактивация пользователя\n - `list_tags: array of string` — Массив тегов, привязываемых к сотруднику\n - `custom_properties: array of object` — Задаваемые дополнительные поля\n - `id: integer, int32` (required) — Идентификатор поля\n - `value: string` (required, max length: 768) — Устанавливаемое значение\n\n## Эквивалентная команда\n\n```bash\npachca users update 12 \\\n --first-name=Олег \\\n --last-name=Петров \\\n --email=olegpetrov@example.com \\\n --phone-number=+79001234567 \\\n --nickname=olegpetrov \\\n --department='Отдел разработки' \\\n --title='Старший разработчик' \\\n --role=user \\\n --list-tags='[\"Product\",\"Design\"]' \\\n --custom-properties='[{\"id\":1678,\"value\":\"Санкт-Петербург\"}]' \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/users/update\nПолная справка: `pachca api PUT /users/{id} --docs` · схема: `--spec`\n","spec":{"method":"PUT","path":"/users/{id}","description":"Редактирование сотрудника\n\nМеняет карточку сотрудника: перезаписываются только переданные поля. Идентификаторы дополнительных полей отдаёт [Список дополнительных полей](GET /custom_properties).\n\nПоле `list_tags` заменяет набор тегов целиком, поэтому присылайте вместе с новым тегом и те, что сохраняются. Снятый тег выводит сотрудника из чатов, куда его привёл этот тег, а имя, которого в пространстве ещё нет, создаёт новый тег вместе с назначением.\n\n`suspended: true` приостанавливает сотрудника: он теряет доступ, но остаётся в чатах, тегах и задачах, а `suspended: false` возвращает его обратно. Насовсем убирает сотрудника [Удаление сотрудника](DELETE /users/{id}).\n\nВладельца пространства редактирует только он сам, а его роль меняется лишь на администратора. Перевести обычного сотрудника в гостя нельзя — в обоих случаях ответ `403`.\n\nНезнакомое значение роли метод молча пропускает: ответ приходит успешный, а роль остаётся прежней.","parameters":[{"name":"id","in":"path","description":"Идентификатор пользователя","required":true,"schema":{"type":"integer","format":"int32","example":12},"example":12}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на редактирование сотрудника","required":["user"],"properties":{"user":{"type":"object","description":"Собранный объект параметров редактируемого сотрудника","properties":{"first_name":{"type":"string","description":"Имя","example":"Олег","maxLength":255},"last_name":{"type":"string","description":"Фамилия","example":"Петров","maxLength":255},"email":{"type":"string","description":"Электронная почта","example":"olegpetrov@example.com","maxLength":255},"phone_number":{"type":"string","description":"Телефон","example":"+79001234567","maxLength":255},"nickname":{"type":"string","description":"Имя пользователя","example":"olegpetrov","maxLength":255},"department":{"type":"string","description":"Департамент","example":"Отдел разработки","maxLength":255},"title":{"type":"string","description":"Должность","example":"Старший разработчик"},"role":{"description":"Уровень доступа","example":"user","allOf":[{"type":"string","description":"Роль пользователя, допустимая при редактировании сотрудника. Роль `guest` недоступна для установки через API при редактировании — назначить роль `guest` можно только при создании сотрудника (см. `UserCreateRole`).","enum":["admin","user","multi_guest"],"x-enum-descriptions":{"admin":"Администратор","user":"Сотрудник","multi_guest":"Мульти-гость"},"$ref":"#/components/schemas/UserRoleInput"}]},"suspended":{"type":"boolean","description":"Деактивация пользователя","default":false,"example":false},"list_tags":{"type":"array","description":"Массив тегов, привязываемых к сотруднику","example":["Product","Design"],"items":{"type":"string"}},"custom_properties":{"type":"array","description":"Задаваемые дополнительные поля","items":{"type":"object","required":["id","value"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор поля","example":1678},"value":{"type":"string","description":"Устанавливаемое значение","example":"Санкт-Петербург","maxLength":768}}}}}}},"$ref":"#/components/schemas/UserUpdateRequest"}}}},"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Сотрудник","required":["id","first_name","last_name","nickname","email","phone_number","department","title","role","suspended","invite_status","inviter_id","list_tags","custom_properties","user_status","bot","sso","created_at","last_activity_at","time_zone","image_url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор пользователя","example":12},"first_name":{"type":"string","description":"Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`).","example":"Олег","nullable":true,"maxLength":255},"last_name":{"type":"string","description":"Фамилия. Если не заполнена, возвращается `null` или пустая строка.","example":"Петров","nullable":true,"maxLength":255},"nickname":{"type":"string","description":"Имя пользователя","example":"olegpetrov","maxLength":255},"email":{"type":"string","description":"Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда.","example":"olegp@example.com","nullable":true,"maxLength":255},"phone_number":{"type":"string","description":"Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда.","example":"+79001234567","nullable":true,"maxLength":255},"department":{"type":"string","description":"Департамент. Если не указан, возвращается `null` или пустая строка.","example":"Продукт","nullable":true,"maxLength":255},"title":{"type":"string","description":"Должность. Если не указана, возвращается `null` или пустая строка.","example":"CIO","nullable":true},"role":{"description":"Уровень доступа","example":"admin","allOf":[{"type":"string","description":"Роль пользователя в системе","enum":["admin","user","multi_guest","guest"],"x-enum-descriptions":{"admin":"Администратор","user":"Сотрудник","multi_guest":"Мульти-гость","guest":"Гость"},"$ref":"#/components/schemas/UserRole"}]},"suspended":{"type":"boolean","description":"Деактивация пользователя","example":false},"invite_status":{"description":"Статус приглашения","example":"confirmed","allOf":[{"type":"string","description":"Статус приглашения пользователя","enum":["confirmed","sent"],"x-enum-descriptions":{"confirmed":"Принято","sent":"Отправлено"},"$ref":"#/components/schemas/InviteStatus"}]},"inviter_id":{"type":"integer","format":"int32","description":"Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён.","example":185,"nullable":true},"list_tags":{"type":"array","description":"Массив тегов, привязанных к сотруднику","example":["Product","Design"],"items":{"type":"string"}},"custom_properties":{"type":"array","description":"Дополнительные поля сотрудника","items":{"type":"object","description":"Дополнительное поле","required":["id","name","data_type","value"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор поля","example":1678},"name":{"type":"string","description":"Название поля","example":"Город","maxLength":32},"data_type":{"description":"Тип поля","example":"string","allOf":[{"type":"string","description":"Тип данных дополнительного поля","enum":["string","number","date","link"],"x-enum-descriptions":{"string":"Строковое значение","number":"Числовое значение","date":"Дата","link":"Ссылка"},"$ref":"#/components/schemas/CustomPropertyDataType"}]},"value":{"type":"string","description":"Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601.","example":"Санкт-Петербург","nullable":true,"maxLength":768}},"$ref":"#/components/schemas/CustomProperty"}},"user_status":{"type":"object","description":"Статус. `null`, если у сотрудника не установлен статус.","nullable":true,"allOf":[{"type":"object","description":"Статус пользователя","required":["emoji","title","expires_at","is_away","away_message"],"properties":{"emoji":{"type":"string","description":"Emoji символ статуса","example":"🎮"},"title":{"type":"string","description":"Текст статуса","example":"Очень занят","maxLength":50},"expires_at":{"type":"string","format":"date-time","description":"Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически.","example":"2024-04-08T10:00:00.000Z","nullable":true},"is_away":{"type":"boolean","description":"Режим «Нет на месте»","example":false},"away_message":{"type":"object","description":"Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.","required":["text"],"nullable":true,"properties":{"text":{"type":"string","description":"Текст сообщения","example":"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.","maxLength":1024}}}},"$ref":"#/components/schemas/UserStatus"}]},"bot":{"type":"boolean","description":"Является ботом","example":false},"sso":{"type":"boolean","description":"Использует ли пользователь SSO","example":false},"created_at":{"type":"string","format":"date-time","description":"Дата создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2020-06-08T09:32:57.000Z"},"last_activity_at":{"type":"string","format":"date-time","description":"Дата последней активности пользователя (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если сотрудник ещё ни разу не заходил в Пачку — в этом случае `invite_status` возвращает `sent`.","example":"2025-01-20T13:40:07.000Z","nullable":true},"time_zone":{"type":"string","description":"Часовой пояс пользователя. `null`, если сотрудник не задал личный часовой пояс — тогда применяется часовой пояс компании.","example":"Europe/Moscow","nullable":true,"maxLength":32},"image_url":{"type":"string","description":"Ссылка на скачивание аватарки пользователя. `null`, если аватарка не загружена.","example":"https://app.pachca.com/users/12/photo.jpg","nullable":true}},"$ref":"#/components/schemas/User"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"users:update","scopeRoles":["owner","admin"]},"paginated":false},"docs":"# Редактирование сотрудника\n\n**Метод**: `PUT`\n\n**Путь**: `/users/{id}`\n\n> **Скоуп:** `users:update`\n\nМеняет карточку сотрудника: перезаписываются только переданные поля. Идентификаторы дополнительных полей отдаёт [Список дополнительных полей](GET /custom_properties).\n\nПоле `list_tags` заменяет набор тегов целиком, поэтому присылайте вместе с новым тегом и те, что сохраняются. Снятый тег выводит сотрудника из чатов, куда его привёл этот тег, а имя, которого в пространстве ещё нет, создаёт новый тег вместе с назначением.\n\n`suspended: true` приостанавливает сотрудника: он теряет доступ, но остаётся в чатах, тегах и задачах, а `suspended: false` возвращает его обратно. Насовсем убирает сотрудника [Удаление сотрудника](DELETE /users/{id}).\n\nВладельца пространства редактирует только он сам, а его роль меняется лишь на администратора. Перевести обычного сотрудника в гостя нельзя — в обоих случаях ответ `403`.\n\nНезнакомое значение роли метод молча пропускает: ответ приходит успешный, а роль остаётся прежней.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор пользователя\n\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `user: object` (required) — Собранный объект параметров редактируемого сотрудника\n - `first_name: string` (max length: 255) — Имя. Пример: `\"Олег\"`\n - `last_name: string` (max length: 255) — Фамилия. Пример: `\"Петров\"`\n - `email: string` (max length: 255) — Электронная почта. Пример: `\"olegpetrov@example.com\"`\n - `phone_number: string` (max length: 255) — Телефон. Пример: `\"+79001234567\"`\n - `nickname: string` (max length: 255) — Имя пользователя. Пример: `\"olegpetrov\"`\n - `department: string` (max length: 255) — Департамент. Пример: `\"Отдел разработки\"`\n - `title: string` — Должность. Пример: `\"Старший разработчик\"`\n - `role: string` — Уровень доступа\n Значения: `admin` — Администратор, `user` — Сотрудник, `multi_guest` — Мульти-гость\n - `suspended: boolean` (default: false) — Деактивация пользователя. Пример: `false`\n - `list_tags: array of string` — Массив тегов, привязываемых к сотруднику. Пример: `[\"Product\",\"Design\"]`\n - `custom_properties: array of object` — Задаваемые дополнительные поля\n - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678`\n - `value: string` (required, max length: 768) — Устанавливаемое значение. Пример: `\"Санкт-Петербург\"`\n\n### Пример\n\n```json\n{\n \"user\": {\n \"first_name\": \"Олег\",\n \"last_name\": \"Петров\",\n \"email\": \"olegpetrov@example.com\",\n \"phone_number\": \"+79001234567\",\n \"nickname\": \"olegpetrov\",\n \"department\": \"Отдел разработки\",\n \"title\": \"Старший разработчик\",\n \"role\": \"user\",\n \"list_tags\": [\n \"Product\",\n \"Design\"\n ],\n \"custom_properties\": [\n {\n \"id\": 1678,\n \"value\": \"Санкт-Петербург\"\n }\n ]\n }\n}\n```\n\n## Пример запроса\n\n```bash\ncurl -X PUT \"https://api.pachca.com/api/shared/v1/users/12\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"user\": {\n \"first_name\": \"Олег\",\n \"last_name\": \"Петров\",\n \"email\": \"olegpetrov@example.com\",\n \"phone_number\": \"+79001234567\",\n \"nickname\": \"olegpetrov\",\n \"department\": \"Отдел разработки\",\n \"title\": \"Старший разработчик\",\n \"role\": \"user\",\n \"list_tags\": [\n \"Product\",\n \"Design\"\n ],\n \"custom_properties\": [\n {\n \"id\": 1678,\n \"value\": \"Санкт-Петербург\"\n }\n ]\n }\n}'\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Сотрудник\n - `id: integer, int32` (required) — Идентификатор пользователя. Пример: `12`\n - `first_name: string` (required, nullable, max length: 255) — Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`). Пример: `\"Олег\"`\n - `last_name: string` (required, nullable, max length: 255) — Фамилия. Если не заполнена, возвращается `null` или пустая строка. Пример: `\"Петров\"`\n - `nickname: string` (required, max length: 255) — Имя пользователя. Пример: `\"olegpetrov\"`\n - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `\"olegp@example.com\"`\n - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда. Пример: `\"+79001234567\"`\n - `department: string` (required, nullable, max length: 255) — Департамент. Если не указан, возвращается `null` или пустая строка. Пример: `\"Продукт\"`\n - `title: string` (required, nullable) — Должность. Если не указана, возвращается `null` или пустая строка. Пример: `\"CIO\"`\n - `role: string` (required) — Уровень доступа\n Значения: `admin` — Администратор, `user` — Сотрудник, `multi_guest` — Мульти-гость, `guest` — Гость\n - `suspended: boolean` (required) — Деактивация пользователя. Пример: `false`\n - `invite_status: string` (required) — Статус приглашения\n Значения: `confirmed` — Принято, `sent` — Отправлено\n - `inviter_id: integer, int32` (required, nullable) — Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён. Пример: `185`\n - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Пример: `[\"Product\",\"Design\"]`\n - `custom_properties: array of object` (required) — Дополнительные поля сотрудника\n - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678`\n - `name: string` (required, max length: 32) — Название поля. Пример: `\"Город\"`\n - `data_type: string` (required) — Тип поля\n Значения: `string` — Строковое значение, `number` — Числовое значение, `date` — Дата, `link` — Ссылка\n - `value: string` (required, nullable, max length: 768) — Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601. Пример: `\"Санкт-Петербург\"`\n - `user_status: object` (required) — Статус. `null`, если у сотрудника не установлен статус.\n - `emoji: string` (required) — Emoji символ статуса. Пример: `\"🎮\"`\n - `title: string` (required, max length: 50) — Текст статуса. Пример: `\"Очень занят\"`\n - `expires_at: date-time` (required, nullable) — Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически. Пример: `\"2024-04-08T10:00:00.000Z\"`\n - `is_away: boolean` (required) — Режим «Нет на месте». Пример: `false`\n - `away_message: object` (required, nullable) — Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.\n - `text: string` (required, max length: 1024) — Текст сообщения. Пример: `\"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"`\n - `bot: boolean` (required) — Является ботом. Пример: `false`\n - `sso: boolean` (required) — Использует ли пользователь SSO. Пример: `false`\n - `created_at: date-time` (required) — Дата создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2020-06-08T09:32:57.000Z\"`\n - `last_activity_at: date-time` (required, nullable) — Дата последней активности пользователя (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если сотрудник ещё ни разу не заходил в Пачку — в этом случае `invite_status` возвращает `sent`. Пример: `\"2025-01-20T13:40:07.000Z\"`\n - `time_zone: string` (required, nullable, max length: 32) — Часовой пояс пользователя. `null`, если сотрудник не задал личный часовой пояс — тогда применяется часовой пояс компании. Пример: `\"Europe/Moscow\"`\n - `image_url: string` (required, nullable) — Ссылка на скачивание аватарки пользователя. `null`, если аватарка не загружена. Пример: `\"https://app.pachca.com/users/12/photo.jpg\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 12,\n \"first_name\": \"Олег\",\n \"last_name\": \"Петров\",\n \"nickname\": \"olegpetrov\",\n \"email\": \"olegp@example.com\",\n \"phone_number\": \"+79001234567\",\n \"department\": \"Продукт\",\n \"title\": \"CIO\",\n \"role\": \"admin\",\n \"suspended\": false,\n \"invite_status\": \"confirmed\",\n \"inviter_id\": 185,\n \"list_tags\": [\n \"Product\",\n \"Design\"\n ],\n \"custom_properties\": [\n {\n \"id\": 1678,\n \"name\": \"Город\",\n \"data_type\": \"string\",\n \"value\": \"Санкт-Петербург\"\n }\n ],\n \"user_status\": {\n \"emoji\": \"🎮\",\n \"title\": \"Очень занят\",\n \"expires_at\": \"2024-04-08T10:00:00.000Z\",\n \"is_away\": false,\n \"away_message\": {\n \"text\": \"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"\n }\n },\n \"bot\": false,\n \"sso\": false,\n \"created_at\": \"2020-06-08T09:32:57.000Z\",\n \"last_activity_at\": \"2025-01-20T13:40:07.000Z\",\n \"time_zone\": \"Europe/Moscow\",\n \"image_url\": \"https://app.pachca.com/users/12/photo.jpg\"\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 409: The request conflicts with the current state of the server.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"DELETE","path":"/users/{id}","summary":"Удаление сотрудника","scope":"users:delete","plan":null,"auth":true,"paginated":false,"command":"pachca users delete","docLink":"https://dev.pachca.com/api/users/delete","describe":"# DELETE /users/{id} — Удаление сотрудника\n\n> **Скоуп:** `users:delete`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор пользователя\n\n## Эквивалентная команда\n\n```bash\npachca users delete 12 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/users/delete\nПолная справка: `pachca api DELETE /users/{id} --docs` · схема: `--spec`\n","spec":{"method":"DELETE","path":"/users/{id}","description":"Удаление сотрудника\n\nУбирает сотрудника из пространства. Отменить это нельзя: вернуть его можно только новым приглашением, и это будет уже другой сотрудник.\n\nЧто происходит: он выходит из всех бесед и каналов, кроме личных переписок, с него снимаются все теги, задачи, где он был единственным исполнителем, удаляются, а из остальных он убирается. Написанные им сообщения и файлы остаются на месте.\n\nВладельца пространства удалить нельзя — метод ответит `403`. Повторный вызов отвечает `404`: удалённого сотрудника метод уже не находит.\n\nЕсли сотрудник уходит в отпуск или увольнение ещё не финальное, пользуйтесь методом [Редактирование сотрудника](PUT /users/{id}) с `suspended: true`. Приостановка обратима и сохраняет чаты, теги и задачи.","parameters":[{"name":"id","in":"path","description":"Идентификатор пользователя","required":true,"schema":{"type":"integer","format":"int32","example":12},"example":12}],"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"users:delete","scopeRoles":["owner","admin"]},"paginated":false},"docs":"# Удаление сотрудника\n\n**Метод**: `DELETE`\n\n**Путь**: `/users/{id}`\n\n> **Скоуп:** `users:delete`\n\nУбирает сотрудника из пространства. Отменить это нельзя: вернуть его можно только новым приглашением, и это будет уже другой сотрудник.\n\nЧто происходит: он выходит из всех бесед и каналов, кроме личных переписок, с него снимаются все теги, задачи, где он был единственным исполнителем, удаляются, а из остальных он убирается. Написанные им сообщения и файлы остаются на месте.\n\nВладельца пространства удалить нельзя — метод ответит `403`. Повторный вызов отвечает `404`: удалённого сотрудника метод уже не находит.\n\nЕсли сотрудник уходит в отпуск или увольнение ещё не финальное, пользуйтесь методом [Редактирование сотрудника](PUT /users/{id}) с `suspended: true`. Приостановка обратима и сохраняет чаты, теги и задачи.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор пользователя\n\n\n## Пример запроса\n\n```bash\ncurl -X DELETE \"https://api.pachca.com/api/shared/v1/users/12\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"PUT","path":"/users/{user_id}/avatar","summary":"Загрузка аватара сотрудника","scope":"user_avatar:write","plan":null,"auth":true,"paginated":false,"command":"pachca users update-avatar","docLink":"https://dev.pachca.com/api/users/update-avatar","describe":"# PUT /users/{user_id}/avatar — Загрузка аватара сотрудника\n\n> **Скоуп:** `user_avatar:write`\n\n## Параметры\n\n- `user_id` — путь (обязательный): Идентификатор пользователя\n\n## Тело запроса\n\n- `image: binary` (required) — Файл изображения для аватара\n\n## Эквивалентная команда\n\n```bash\npachca users update-avatar 12 \\\n --file=./image.jpg \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/users/update-avatar\nПолная справка: `pachca api PUT /users/{user_id}/avatar --docs` · схема: `--spec`\n","spec":{"method":"PUT","path":"/users/{user_id}/avatar","description":"Загрузка аватара сотрудника\n\nСтавит или заменяет аватар другому сотруднику. Доступно владельцу пространства и администратору, боту метод недоступен. Аватар владельца пространства меняет только он сам.\n\nФайл передаётся в формате `multipart/form-data`, в ответе приходит только ссылка на новое изображение. Принимаются `jpg`, `jpeg`, `png` и `gif`, анимированный `gif` — не больше 2 МБ, картинка уменьшается до 1024 на 1024 пикселя.\n\nСвой аватар ставят методом [Загрузка своего аватара](PUT /profile/avatar) — он доступен всем ролям и ботам.","parameters":[{"name":"user_id","in":"path","description":"Идентификатор пользователя","required":true,"schema":{"type":"integer","format":"int32","example":12},"example":12}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"type":"string","format":"binary","description":"Файл изображения для аватара"}}}}}},"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Данные аватара","required":["image_url"],"properties":{"image_url":{"type":"string","description":"URL аватара","example":"https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg"}},"$ref":"#/components/schemas/AvatarData"}}}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"},{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}]}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"user_avatar:write","scopeRoles":["owner","admin"]},"paginated":false},"docs":"# Загрузка аватара сотрудника\n\n**Метод**: `PUT`\n\n**Путь**: `/users/{user_id}/avatar`\n\n> **Скоуп:** `user_avatar:write`\n\nСтавит или заменяет аватар другому сотруднику. Доступно владельцу пространства и администратору, боту метод недоступен. Аватар владельца пространства меняет только он сам.\n\nФайл передаётся в формате `multipart/form-data`, в ответе приходит только ссылка на новое изображение. Принимаются `jpg`, `jpeg`, `png` и `gif`, анимированный `gif` — не больше 2 МБ, картинка уменьшается до 1024 на 1024 пикселя.\n\nСвой аватар ставят методом [Загрузка своего аватара](PUT /profile/avatar) — он доступен всем ролям и ботам.\n\n## Параметры\n\n### Path параметры\n\n- `user_id: integer, int32` (required) — Идентификатор пользователя\n\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `multipart/form-data`\n\n### Схема\n\n- `image: binary` (required) — Файл изображения для аватара\n\n\n## Пример запроса\n\n```bash\ncurl -X PUT \"https://api.pachca.com/api/shared/v1/users/12/avatar\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -F 'image=@filename.png'\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Данные аватара\n - `image_url: string` (required) — URL аватара. Пример: `\"https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"image_url\": \"https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg\"\n }\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n**anyOf** - один из вариантов:\n\n- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)\n - `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403)\n - `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n - `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"DELETE","path":"/users/{user_id}/avatar","summary":"Удаление аватара сотрудника","scope":"user_avatar:write","plan":null,"auth":true,"paginated":false,"command":"pachca users remove-avatar","docLink":"https://dev.pachca.com/api/users/remove-avatar","describe":"# DELETE /users/{user_id}/avatar — Удаление аватара сотрудника\n\n> **Скоуп:** `user_avatar:write`\n\n## Параметры\n\n- `user_id` — путь (обязательный): Идентификатор пользователя\n\n## Эквивалентная команда\n\n```bash\npachca users remove-avatar 12 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/users/remove-avatar\nПолная справка: `pachca api DELETE /users/{user_id}/avatar --docs` · схема: `--spec`\n","spec":{"method":"DELETE","path":"/users/{user_id}/avatar","description":"Удаление аватара сотрудника\n\nУбирает аватар другому сотруднику, дальше в интерфейсе показываются инициалы. Доступно владельцу пространства и администратору, боту метод недоступен, а аватар владельца пространства убирает только он сам.\n\nЕсли аватара не было, ответ всё равно `204`.","parameters":[{"name":"user_id","in":"path","description":"Идентификатор пользователя","required":true,"schema":{"type":"integer","format":"int32","example":12},"example":12}],"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"},{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}]}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"user_avatar:write","scopeRoles":["owner","admin"]},"paginated":false},"docs":"# Удаление аватара сотрудника\n\n**Метод**: `DELETE`\n\n**Путь**: `/users/{user_id}/avatar`\n\n> **Скоуп:** `user_avatar:write`\n\nУбирает аватар другому сотруднику, дальше в интерфейсе показываются инициалы. Доступно владельцу пространства и администратору, боту метод недоступен, а аватар владельца пространства убирает только он сам.\n\nЕсли аватара не было, ответ всё равно `204`.\n\n## Параметры\n\n### Path параметры\n\n- `user_id: integer, int32` (required) — Идентификатор пользователя\n\n\n## Пример запроса\n\n```bash\ncurl -X DELETE \"https://api.pachca.com/api/shared/v1/users/12/avatar\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n**anyOf** - один из вариантов:\n\n- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)\n - `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403)\n - `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n - `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/users/{user_id}/status","summary":"Статус сотрудника","scope":"user_status:read","plan":null,"auth":true,"paginated":false,"command":"pachca users get-status","docLink":"https://dev.pachca.com/api/users/get-status","describe":"# GET /users/{user_id}/status — Статус сотрудника\n\n> **Скоуп:** `user_status:read`\n\n## Параметры\n\n- `user_id` — путь (обязательный): Идентификатор пользователя\n\n## Эквивалентная команда\n\n```bash\npachca users get-status 12 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/users/get-status\nПолная справка: `pachca api GET /users/{user_id}/status --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/users/{user_id}/status","description":"Статус сотрудника\n\nСтатус другого сотрудника: эмодзи, подпись, срок и режим «Нет на месте».\n\nЕсли статус не установлен, метод возвращает `200` и `null` в теле ответа — без объекта-обёртки. Статус с истёкшим `expires_at` какое-то время ещё возвращается, пока не будет очищен, поэтому проверяйте `expires_at` на стороне клиента.","parameters":[{"name":"user_id","in":"path","description":"Идентификатор пользователя","required":true,"schema":{"type":"integer","format":"int32","example":12},"example":12}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"nullable":true,"properties":{"data":{"type":"object","description":"Статус пользователя","required":["emoji","title","expires_at","is_away","away_message"],"properties":{"emoji":{"type":"string","description":"Emoji символ статуса","example":"🎮"},"title":{"type":"string","description":"Текст статуса","example":"Очень занят","maxLength":50},"expires_at":{"type":"string","format":"date-time","description":"Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически.","example":"2024-04-08T10:00:00.000Z","nullable":true},"is_away":{"type":"boolean","description":"Режим «Нет на месте»","example":false},"away_message":{"type":"object","description":"Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.","required":["text"],"nullable":true,"properties":{"text":{"type":"string","description":"Текст сообщения","example":"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.","maxLength":1024}}}},"$ref":"#/components/schemas/UserStatus"}}}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"user_status:read","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Статус сотрудника\n\n**Метод**: `GET`\n\n**Путь**: `/users/{user_id}/status`\n\n> **Скоуп:** `user_status:read`\n\nСтатус другого сотрудника: эмодзи, подпись, срок и режим «Нет на месте».\n\nЕсли статус не установлен, метод возвращает `200` и `null` в теле ответа — без объекта-обёртки. Статус с истёкшим `expires_at` какое-то время ещё возвращается, пока не будет очищен, поэтому проверяйте `expires_at` на стороне клиента.\n\n## Параметры\n\n### Path параметры\n\n- `user_id: integer, int32` (required) — Идентификатор пользователя\n\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/users/12/status\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Статус пользователя\n - `emoji: string` (required) — Emoji символ статуса. Пример: `\"🎮\"`\n - `title: string` (required, max length: 50) — Текст статуса. Пример: `\"Очень занят\"`\n - `expires_at: date-time` (required, nullable) — Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически. Пример: `\"2024-04-08T10:00:00.000Z\"`\n - `is_away: boolean` (required) — Режим «Нет на месте». Пример: `false`\n - `away_message: object` (required, nullable) — Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.\n - `text: string` (required, max length: 1024) — Текст сообщения. Пример: `\"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"emoji\": \"🎮\",\n \"title\": \"Очень занят\",\n \"expires_at\": \"2024-04-08T10:00:00.000Z\",\n \"is_away\": false,\n \"away_message\": {\n \"text\": \"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"\n }\n }\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"PUT","path":"/users/{user_id}/status","summary":"Новый статус сотрудника","scope":"user_status:write","plan":null,"auth":true,"paginated":false,"command":"pachca users update-status","docLink":"https://dev.pachca.com/api/users/update-status","describe":"# PUT /users/{user_id}/status — Новый статус сотрудника\n\n> **Скоуп:** `user_status:write`\n\n## Параметры\n\n- `user_id` — путь (обязательный): Идентификатор пользователя\n\n## Тело запроса\n\n- `status: object` (required)\n - `emoji: string` (required) — Emoji символ статуса\n - `title: string` (required, max length: 50) — Текст статуса\n - `expires_at: date-time` — Срок жизни статуса (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Сюда идёт срок, названный словами: «до трёх» это значение поля, а не часть подписи.\n - `is_away: boolean` — Режим «Нет на месте»\n - `away_message: string` (max length: 1024) — Текст сообщения при режиме «Нет на месте». Отображается в профиле и при личных сообщениях/упоминаниях.\n\n## Эквивалентная команда\n\n```bash\npachca users update-status 12 \\\n --emoji=🎮 \\\n --title='Очень занят' \\\n --expires-at=2024-04-08T10:00:00.000Z \\\n --is-away \\\n --away-message='Вернусь после 15:00' \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/users/update-status\nПолная справка: `pachca api PUT /users/{user_id}/status --docs` · схема: `--spec`\n","spec":{"method":"PUT","path":"/users/{user_id}/status","description":"Новый статус сотрудника\n\nСтавит статус другому сотруднику — например, «в отпуске» на время отсутствия. Доступно владельцу пространства и администратору, боту метод недоступен даже с выданным скоупом.\n\nЭтим же методом сотруднику включают режим «Нет на месте» флагом `is_away` и задают текст `away_message`, который увидят при попытке к нему обратиться.\n\nСтатус видят все, кто видит сотрудника в пространстве. Перезаписываются только переданные поля, поэтому продлить чужой статус можно одним `expires_at`.\n\nСрок, названный словами, — это `expires_at`, а не часть подписи, и считается он в часовом поясе того сотрудника, которому ставят статус. Эмодзи обязателен и ровно один, подпись обязательна и не длиннее 50 символов.\n\nСвой статус ставят методом [Новый свой статус](PUT /profile/status) — он доступен всем ролям и ботам.","parameters":[{"name":"user_id","in":"path","description":"Идентификатор пользователя","required":true,"schema":{"type":"integer","format":"int32","example":12},"example":12}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на установку статуса","required":["status"],"properties":{"status":{"type":"object","required":["emoji","title"],"properties":{"emoji":{"type":"string","description":"Emoji символ статуса","example":"🎮"},"title":{"type":"string","description":"Текст статуса","example":"Очень занят","maxLength":50},"expires_at":{"type":"string","format":"date-time","description":"Срок жизни статуса (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Сюда идёт срок, названный словами: «до трёх» это значение поля, а не часть подписи.","example":"2024-04-08T10:00:00.000Z"},"is_away":{"type":"boolean","description":"Режим «Нет на месте»","example":true},"away_message":{"type":"string","description":"Текст сообщения при режиме «Нет на месте». Отображается в профиле и при личных сообщениях/упоминаниях.","example":"Вернусь после 15:00","maxLength":1024}}}},"$ref":"#/components/schemas/StatusUpdateRequest"}}}},"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Статус пользователя","required":["emoji","title","expires_at","is_away","away_message"],"properties":{"emoji":{"type":"string","description":"Emoji символ статуса","example":"🎮"},"title":{"type":"string","description":"Текст статуса","example":"Очень занят","maxLength":50},"expires_at":{"type":"string","format":"date-time","description":"Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически.","example":"2024-04-08T10:00:00.000Z","nullable":true},"is_away":{"type":"boolean","description":"Режим «Нет на месте»","example":false},"away_message":{"type":"object","description":"Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.","required":["text"],"nullable":true,"properties":{"text":{"type":"string","description":"Текст сообщения","example":"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.","maxLength":1024}}}},"$ref":"#/components/schemas/UserStatus"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"user_status:write","scopeRoles":["owner","admin"]},"paginated":false},"docs":"# Новый статус сотрудника\n\n**Метод**: `PUT`\n\n**Путь**: `/users/{user_id}/status`\n\n> **Скоуп:** `user_status:write`\n\nСтавит статус другому сотруднику — например, «в отпуске» на время отсутствия. Доступно владельцу пространства и администратору, боту метод недоступен даже с выданным скоупом.\n\nЭтим же методом сотруднику включают режим «Нет на месте» флагом `is_away` и задают текст `away_message`, который увидят при попытке к нему обратиться.\n\nСтатус видят все, кто видит сотрудника в пространстве. Перезаписываются только переданные поля, поэтому продлить чужой статус можно одним `expires_at`.\n\nСрок, названный словами, — это `expires_at`, а не часть подписи, и считается он в часовом поясе того сотрудника, которому ставят статус. Эмодзи обязателен и ровно один, подпись обязательна и не длиннее 50 символов.\n\nСвой статус ставят методом [Новый свой статус](PUT /profile/status) — он доступен всем ролям и ботам.\n\n## Параметры\n\n### Path параметры\n\n- `user_id: integer, int32` (required) — Идентификатор пользователя\n\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `status: object` (required)\n - `emoji: string` (required) — Emoji символ статуса. Пример: `\"🎮\"`\n - `title: string` (required, max length: 50) — Текст статуса. Пример: `\"Очень занят\"`\n - `expires_at: date-time` — Срок жизни статуса (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Сюда идёт срок, названный словами: «до трёх» это значение поля, а не часть подписи. Пример: `\"2024-04-08T10:00:00.000Z\"`\n - `is_away: boolean` — Режим «Нет на месте». Пример: `true`\n - `away_message: string` (max length: 1024) — Текст сообщения при режиме «Нет на месте». Отображается в профиле и при личных сообщениях/упоминаниях. Пример: `\"Вернусь после 15:00\"`\n\n### Пример\n\n```json\n{\n \"status\": {\n \"emoji\": \"🎮\",\n \"title\": \"Очень занят\",\n \"expires_at\": \"2024-04-08T10:00:00.000Z\",\n \"is_away\": true,\n \"away_message\": \"Вернусь после 15:00\"\n }\n}\n```\n\n## Пример запроса\n\n```bash\ncurl -X PUT \"https://api.pachca.com/api/shared/v1/users/12/status\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"status\": {\n \"emoji\": \"🎮\",\n \"title\": \"Очень занят\",\n \"expires_at\": \"2024-04-08T10:00:00.000Z\",\n \"is_away\": true,\n \"away_message\": \"Вернусь после 15:00\"\n }\n}'\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Статус пользователя\n - `emoji: string` (required) — Emoji символ статуса. Пример: `\"🎮\"`\n - `title: string` (required, max length: 50) — Текст статуса. Пример: `\"Очень занят\"`\n - `expires_at: date-time` (required, nullable) — Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически. Пример: `\"2024-04-08T10:00:00.000Z\"`\n - `is_away: boolean` (required) — Режим «Нет на месте». Пример: `false`\n - `away_message: object` (required, nullable) — Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.\n - `text: string` (required, max length: 1024) — Текст сообщения. Пример: `\"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"emoji\": \"🎮\",\n \"title\": \"Очень занят\",\n \"expires_at\": \"2024-04-08T10:00:00.000Z\",\n \"is_away\": false,\n \"away_message\": {\n \"text\": \"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"DELETE","path":"/users/{user_id}/status","summary":"Удаление статуса сотрудника","scope":"user_status:write","plan":null,"auth":true,"paginated":false,"command":"pachca users remove-status","docLink":"https://dev.pachca.com/api/users/remove-status","describe":"# DELETE /users/{user_id}/status — Удаление статуса сотрудника\n\n> **Скоуп:** `user_status:write`\n\n## Параметры\n\n- `user_id` — путь (обязательный): Идентификатор пользователя\n\n## Эквивалентная команда\n\n```bash\npachca users remove-status 12 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/users/remove-status\nПолная справка: `pachca api DELETE /users/{user_id}/status --docs` · схема: `--spec`\n","spec":{"method":"DELETE","path":"/users/{user_id}/status","description":"Удаление статуса сотрудника\n\nСнимает статус с другого сотрудника вместе с режимом «Нет на месте» и его текстом. Доступно владельцу пространства и администратору, боту метод недоступен.\n\nЕсли статуса не было, ответ всё равно `204`. Свой статус снимает [Удаление своего статуса](DELETE /profile/status).","parameters":[{"name":"user_id","in":"path","description":"Идентификатор пользователя","required":true,"schema":{"type":"integer","format":"int32","example":12},"example":12}],"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"user_status:write","scopeRoles":["owner","admin"]},"paginated":false},"docs":"# Удаление статуса сотрудника\n\n**Метод**: `DELETE`\n\n**Путь**: `/users/{user_id}/status`\n\n> **Скоуп:** `user_status:write`\n\nСнимает статус с другого сотрудника вместе с режимом «Нет на месте» и его текстом. Доступно владельцу пространства и администратору, боту метод недоступен.\n\nЕсли статуса не было, ответ всё равно `204`. Свой статус снимает [Удаление своего статуса](DELETE /profile/status).\n\n## Параметры\n\n### Path параметры\n\n- `user_id: integer, int32` (required) — Идентификатор пользователя\n\n\n## Пример запроса\n\n```bash\ncurl -X DELETE \"https://api.pachca.com/api/shared/v1/users/12/status\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"POST","path":"/views/open","summary":"Открытие представления","scope":"views:write","plan":null,"auth":true,"paginated":false,"command":"pachca views open","docLink":"https://dev.pachca.com/api/views/open","describe":"# POST /views/open — Открытие представления\n\n> **Скоуп:** `views:write`\n\n## Тело запроса\n\n- `type: string` (required) — Способ открытия представления\n Значения: `modal` — Модальное окно\n- `trigger_id: string` (required) — Уникальный идентификатор события (полученный, например, в исходящем вебхуке о нажатии кнопки)\n- `private_metadata: string` (max length: 3000) — Необязательная строка, которая будет отправлена в ваше приложение при отправке пользователем заполненной формы. Используйте это поле, например, для передачи в формате `JSON` какой то дополнительной информации вместе с заполненной пользователем формой.\n- `callback_id: string` (max length: 255) — Необязательный идентификатор для распознавания этого представления, который будет отправлен в ваше приложение при отправке пользователем заполненной формы. Используйте это поле, например, для понимания, какую форму должен был заполнить пользователь.\n- `view: object` (required) — Собранный объект представления\n - `title: string` (required, max length: 24) — Заголовок представления\n - `close_text: string` (default: Отменить, max length: 24) — Текст кнопки закрытия представления. Отображается только в десктоп-вебе. В мобильных приложениях (iOS/Android) кнопка закрытия — это крестик в шапке, и заданный текст там не показывается.\n - `submit_text: string` (default: Отправить, max length: 24) — Текст кнопки отправки формы\n - `blocks: array (union)` (required, max items: 100) — Массив блоков представления\n **Возможные типы элементов:**\n\n - **ViewBlockHeader**: Блок header — заголовок\n - `type: string` (required) — Тип блока\n Значения: `header` — Для заголовков всегда header\n - `text: string` (required, max length: 150) — Текст заголовка\n - **ViewBlockPlainText**: Блок plain_text — обычный текст\n - `type: string` (required) — Тип блока\n Значения: `plain_text` — Для обычного текста всегда plain_text\n - `text: string` (required, max length: 12000) — Текст\n - **ViewBlockMarkdown**: Блок markdown — форматированный текст\n - `type: string` (required) — Тип блока\n Значения: `markdown` — Для форматированного текста всегда markdown\n - `text: string` (required, max length: 12000) — Текст\n - **ViewBlockDivider**: Блок divider — разделитель\n - `type: string` (required) — Тип блока\n Значения: `divider` — Для разделителя всегда divider\n - **ViewBlockInput**: Блок input — текстовое поле ввода\n - `type: string` (required) — Тип блока\n Значения: `input` — Для текстового поля всегда input\n - `name: string` (required, max length: 255) — Название, которое будет передано в ваше приложение как ключ указанного пользователем значения\n - `label: string` (required, max length: 150) — Подпись к полю\n - `placeholder: string` (max length: 150) — Подсказка внутри поля ввода, пока оно пустое\n - `multiline: boolean` (default: false) — Многострочное поле\n - `initial_value: string` (max length: 3000) — Начальное значение в поле\n - `min_length: integer, int32` (min: 0, max: 3000) — Минимальная длина текста, который должен написать пользователь. Если пользователь напишет меньше, он получит ошибку.\n - `max_length: integer, int32` (min: 1, max: 3000) — Максимальная длина текста, который должен написать пользователь. Если пользователь напишет больше, он получит ошибку.\n - `required: boolean` (default: false) — Обязательность\n - `hint: string` (max length: 2000) — Подсказка, которая отображается под полем серым цветом\n - **ViewBlockSelect**: Блок select — выпадающий список\n - `type: string` (required) — Тип блока\n Значения: `select` — Для выпадающего списка всегда select\n - `name: string` (required, max length: 255) — Название, которое будет передано в ваше приложение как ключ указанного пользователем выбора\n - `label: string` (required, max length: 150) — Подпись к выпадающему списку\n - `options: array of object` (required, max items: 100) — Массив доступных пунктов в выпадающем списке\n - `text: string` (required, max length: 75) — Отображаемый текст\n - `value: string` (required, max length: 255) — Уникальное строковое значение, которое будет передано в ваше приложение при выборе этого пункта\n - `description: string` (max length: 75) — Пояснение, которое будет указано серым цветом в этом пункте под отображаемым текстом\n - `selected: boolean` — Изначально выбранный пункт. Только один пункт может быть выбран.\n - `required: boolean` (default: false) — Обязательность\n - `hint: string` (max length: 2000) — Подсказка, которая отображается под выпадающим списком серым цветом\n - **ViewBlockRadio**: Блок radio — радиокнопки\n - `type: string` (required) — Тип блока\n Значения: `radio` — Для радиокнопок всегда radio\n - `name: string` (required, max length: 255) — Название, которое будет передано в ваше приложение как ключ указанного пользователем выбора\n - `label: string` (required, max length: 150) — Подпись к группе радиокнопок\n - `options: array of object` (required, max items: 10) — Массив радиокнопок\n - `text: string` (required, max length: 75) — Отображаемый текст\n - `value: string` (required, max length: 255) — Уникальное строковое значение, которое будет передано в ваше приложение при выборе этого пункта\n - `description: string` (max length: 75) — Пояснение, которое будет указано серым цветом в этом пункте под отображаемым текстом\n - `checked: boolean` — Изначально выбранная радиокнопка. Только одна радиокнопка может быть выбрана.\n - `required: boolean` (default: false) — Обязательность\n - `hint: string` (max length: 2000) — Подсказка, которая отображается под группой радиокнопок серым цветом\n - **ViewBlockCheckbox**: Блок checkbox — чекбоксы\n - `type: string` (required) — Тип блока\n Значения: `checkbox` — Для чекбоксов всегда checkbox\n - `name: string` (required, max length: 255) — Название, которое будет передано в ваше приложение как ключ указанного пользователем выбора\n - `label: string` (required, max length: 150) — Подпись к группе чекбоксов\n - `options: array of object` (required, max items: 10) — Массив чекбоксов\n - `text: string` (required, max length: 75) — Отображаемый текст\n - `value: string` (required, max length: 255) — Уникальное строковое значение, которое будет передано в ваше приложение при выборе этого пункта\n - `description: string` (max length: 75) — Пояснение, которое будет указано серым цветом в этом пункте под отображаемым текстом\n - `checked: boolean` — Изначально выбранный пункт\n - `required: boolean` (default: false) — Обязательность\n - `hint: string` (max length: 2000) — Подсказка, которая отображается под группой чекбоксов серым цветом\n - **ViewBlockDate**: Блок date — выбор даты\n - `type: string` (required) — Тип блока\n Значения: `date` — Для выбора даты всегда date\n - `name: string` (required, max length: 255) — Название, которое будет передано в ваше приложение как ключ указанного пользователем значения\n - `label: string` (required, max length: 150) — Подпись к полю\n - `initial_date: date` — Начальное значение в поле в формате YYYY-MM-DD\n - `required: boolean` (default: false) — Обязательность\n - `hint: string` (max length: 2000) — Подсказка, которая отображается под полем серым цветом\n - **ViewBlockTime**: Блок time — выбор времени\n - `type: string` (required) — Тип блока\n Значения: `time` — Для выбора времени всегда time\n - `name: string` (required, max length: 255) — Название, которое будет передано в ваше приложение как ключ указанного пользователем значения\n - `label: string` (required, max length: 150) — Подпись к полю\n - `initial_time: string, time` — Начальное значение в поле в формате HH:mm. Значение в формате HH:mm:ss тоже принимается — секунды отбрасываются.\n - `required: boolean` (default: false) — Обязательность\n - `hint: string` (max length: 2000) — Подсказка, которая отображается под полем серым цветом\n - **ViewBlockFileInput**: Блок file_input — загрузка файлов\n - `type: string` (required) — Тип блока\n Значения: `file_input` — Для загрузки файлов всегда file_input\n - `name: string` (required, max length: 255) — Название, которое будет передано в ваше приложение как ключ указанного пользователем значения\n - `label: string` (required, max length: 150) — Подпись к полю\n - `filetypes: array of string` — Массив допустимых расширений файлов, указанные в виде строк (например, [\"png\",\"jpg\",\"gif\"]). Точка в начале не нужна, но допустима — она подставляется сама. Значение с косой чертой считается MIME-типом и остаётся как есть. Если это поле не указано, все расширения файлов будут приняты. Значение подставляется в фильтр окна выбора файла, поэтому расширение полученного файла проверяйте у себя.\n - `max_files: integer, int32` (default: 10, min: 1, max: 10) — Максимальное количество файлов, которое может загрузить пользователь в это поле\n - `required: boolean` (default: false) — Обязательность\n - `hint: string` (max length: 2000) — Подсказка, которая отображается под полем серым цветом\n\n## Эквивалентная команда\n\n```bash\npachca views open \\\n --title='Уведомление об отпуске' \\\n --close-text=Закрыть \\\n --submit-text='Отправить заявку' \\\n --blocks='[{\"type\":\"header\",\"text\":\"Основная информация\"},{\"type\":\"plain_text\",\"text\":\"Заполните форму. После отправки формы в общий чат будет отправлено текстовое уведомление, а ваш отпуск будет сохранен в базе.\"},{\"type\":\"markdown\",\"text\":\"Информацию о доступных вам днях отпуска вы можете прочитать по [ссылке](https://www.website.com/timeoff)\"},{\"type\":\"divider\"},{\"type\":\"input\",\"name\":\"info\",\"label\":\"Описание отпуска\",\"placeholder\":\"Куда собираетесь и что будете делать\",\"multiline\":true,\"initial_value\":\"Начальный текст\",\"min_length\":10,\"max_length\":500,\"required\":true,\"hint\":\"Возможно вам подскаджут, какие места лучше посетить\"},{\"type\":\"select\",\"name\":\"team\",\"label\":\"Выберите команду\",\"options\":[{\"text\":\"Ничего\",\"value\":\"nothing\",\"description\":\"Каждый день бот будет присылать список новых задач в вашей команде\",\"selected\":true}],\"hint\":\"Выберите одну из команд\"},{\"type\":\"radio\",\"name\":\"accessibility\",\"label\":\"Доступность\",\"options\":[{\"text\":\"Ничего\",\"value\":\"nothing\",\"description\":\"Каждый день бот будет присылать список новых задач в вашей команде\",\"checked\":true}],\"required\":true,\"hint\":\"Если вы не планируете выходить на связь, то выберите вариант Ничего\"},{\"type\":\"checkbox\",\"name\":\"newsletters\",\"label\":\"Рассылки\",\"options\":[{\"text\":\"Ничего\",\"value\":\"nothing\",\"description\":\"Каждый день бот будет присылать список новых задач в вашей команде\",\"checked\":true}],\"hint\":\"Выберите интересующие вас рассылки\"},{\"type\":\"date\",\"name\":\"date_start\",\"label\":\"Дата начала отпуска\",\"initial_date\":\"2025-07-01\",\"required\":true,\"hint\":\"Укажите дату начала отпуска\"},{\"type\":\"time\",\"name\":\"newsletter_time\",\"label\":\"Время рассылки\",\"initial_time\":\"11:00\",\"hint\":\"Укажите, в какое время присылать выбранные рассылки\"},{\"type\":\"file_input\",\"name\":\"request_doc\",\"label\":\"Заявление\",\"filetypes\":[\"pdf\",\"jpg\",\"png\"],\"max_files\":1,\"required\":true,\"hint\":\"Загрузите заполненное заявление с электронной подписью (в формате pdf, jpg или png)\"}]' \\\n --type=modal \\\n --trigger-id=791a056b-006c-49dd-834b-c633fde52fe8 \\\n --private-metadata='{\"timeoff_id\":4378}' \\\n --callback-id=timeoff_request_form \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/views/open\nПолная справка: `pachca api POST /views/open --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/views/open","description":"Открытие представления\n\nПоказывает пользователю модальное окно с формой в ответ на его действие. Метод вызывают токеном бота: события о нажатии кнопок приходят только ботам, от имени бота окно и открывается.\n\nОткрыть окно можно единственным способом — по `trigger_id` из события о нажатии кнопки. Один `trigger_id` открывает одно окно и живёт 3 секунды: у бота с вебхуком — с момента, когда Пачка передала нажатие, у бота с [Журналом событий](GET /webhooks/events) — с момента записи нажатия в журнал. Поэтому окно открывают первым делом, а всё остальное по событию делают уже после.\n\nЗаполненная форма приходит обратно событием `view_submit`: на исходящий вебхук, а если адрес не задан — в журнал. На вебхук отвечают прямо в ответе на него, и Пачка ждёт его 3 секунды. Событие из журнала закрывают методом [Ответ на отправку формы](POST /views/{view_id}/submit_response), на это есть 5 секунд. Не успели — пользователь увидит ошибку отправки.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Представление","required":["type","trigger_id","view"],"properties":{"type":{"type":"string","description":"Способ открытия представления","enum":["modal"],"x-enum-descriptions":{"modal":"Модальное окно"},"example":"modal"},"trigger_id":{"type":"string","description":"Уникальный идентификатор события (полученный, например, в исходящем вебхуке о нажатии кнопки)","example":"791a056b-006c-49dd-834b-c633fde52fe8"},"private_metadata":{"type":"string","description":"Необязательная строка, которая будет отправлена в ваше приложение при отправке пользователем заполненной формы. Используйте это поле, например, для передачи в формате `JSON` какой то дополнительной информации вместе с заполненной пользователем формой.","example":"{\"timeoff_id\":4378}","maxLength":3000},"callback_id":{"type":"string","description":"Необязательный идентификатор для распознавания этого представления, который будет отправлен в ваше приложение при отправке пользователем заполненной формы. Используйте это поле, например, для понимания, какую форму должен был заполнить пользователь.","example":"timeoff_request_form","maxLength":255},"view":{"type":"object","description":"Собранный объект представления","required":["title","blocks"],"properties":{"title":{"type":"string","description":"Заголовок представления","example":"Уведомление об отпуске","maxLength":24},"close_text":{"type":"string","description":"Текст кнопки закрытия представления. Отображается только в десктоп-вебе. В мобильных приложениях (iOS/Android) кнопка закрытия — это крестик в шапке, и заданный текст там не показывается.","default":"Отменить","example":"Закрыть","maxLength":24},"submit_text":{"type":"string","description":"Текст кнопки отправки формы","default":"Отправить","example":"Отправить заявку","maxLength":24},"blocks":{"type":"array","description":"Массив блоков представления","maxItems":100,"items":{"description":"Union-тип для всех возможных блоков представления","anyOf":[{"type":"object","description":"Блок header — заголовок","required":["type","text"],"properties":{"type":{"type":"string","description":"Тип блока","enum":["header"],"x-enum-descriptions":{"header":"Для заголовков всегда header"},"example":"header"},"text":{"type":"string","description":"Текст заголовка","example":"Основная информация","maxLength":150}},"$ref":"#/components/schemas/ViewBlockHeader"},{"type":"object","description":"Блок plain_text — обычный текст","required":["type","text"],"properties":{"type":{"type":"string","description":"Тип блока","enum":["plain_text"],"x-enum-descriptions":{"plain_text":"Для обычного текста всегда plain_text"},"example":"plain_text"},"text":{"type":"string","description":"Текст","example":"Заполните форму. После отправки формы в общий чат будет отправлено текстовое уведомление, а ваш отпуск будет сохранен в базе.","maxLength":12000}},"$ref":"#/components/schemas/ViewBlockPlainText"},{"type":"object","description":"Блок markdown — форматированный текст","required":["type","text"],"properties":{"type":{"type":"string","description":"Тип блока","enum":["markdown"],"x-enum-descriptions":{"markdown":"Для форматированного текста всегда markdown"},"example":"markdown"},"text":{"type":"string","description":"Текст","example":"Информацию о доступных вам днях отпуска вы можете прочитать по [ссылке](https://www.website.com/timeoff)","maxLength":12000}},"$ref":"#/components/schemas/ViewBlockMarkdown"},{"type":"object","description":"Блок divider — разделитель","required":["type"],"properties":{"type":{"type":"string","description":"Тип блока","enum":["divider"],"x-enum-descriptions":{"divider":"Для разделителя всегда divider"},"example":"divider"}},"$ref":"#/components/schemas/ViewBlockDivider"},{"type":"object","description":"Блок input — текстовое поле ввода","required":["type","name","label"],"properties":{"type":{"type":"string","description":"Тип блока","enum":["input"],"x-enum-descriptions":{"input":"Для текстового поля всегда input"},"example":"input"},"name":{"type":"string","description":"Название, которое будет передано в ваше приложение как ключ указанного пользователем значения","example":"info","maxLength":255},"label":{"type":"string","description":"Подпись к полю","example":"Описание отпуска","maxLength":150},"placeholder":{"type":"string","description":"Подсказка внутри поля ввода, пока оно пустое","example":"Куда собираетесь и что будете делать","maxLength":150},"multiline":{"type":"boolean","description":"Многострочное поле","default":false,"example":true},"initial_value":{"type":"string","description":"Начальное значение в поле","example":"Начальный текст","maxLength":3000},"min_length":{"type":"integer","format":"int32","description":"Минимальная длина текста, который должен написать пользователь. Если пользователь напишет меньше, он получит ошибку.","example":10,"minimum":0,"maximum":3000},"max_length":{"type":"integer","format":"int32","description":"Максимальная длина текста, который должен написать пользователь. Если пользователь напишет больше, он получит ошибку.","example":500,"minimum":1,"maximum":3000},"required":{"type":"boolean","description":"Обязательность","default":false,"example":true},"hint":{"type":"string","description":"Подсказка, которая отображается под полем серым цветом","example":"Возможно вам подскаджут, какие места лучше посетить","maxLength":2000}},"$ref":"#/components/schemas/ViewBlockInput"},{"type":"object","description":"Блок select — выпадающий список","required":["type","name","label","options"],"properties":{"type":{"type":"string","description":"Тип блока","enum":["select"],"x-enum-descriptions":{"select":"Для выпадающего списка всегда select"},"example":"select"},"name":{"type":"string","description":"Название, которое будет передано в ваше приложение как ключ указанного пользователем выбора","example":"team","maxLength":255},"label":{"type":"string","description":"Подпись к выпадающему списку","example":"Выберите команду","maxLength":150},"options":{"type":"array","description":"Массив доступных пунктов в выпадающем списке","minItems":1,"maxItems":100,"items":{"type":"object","description":"Пункт выпадающего списка (select). Изначальный выбор задаётся полем `selected`, а не `checked`, как у radio и checkbox.","required":["text","value"],"properties":{"text":{"type":"string","description":"Отображаемый текст","example":"Ничего","maxLength":75},"value":{"type":"string","description":"Уникальное строковое значение, которое будет передано в ваше приложение при выборе этого пункта","example":"nothing","maxLength":255},"description":{"type":"string","description":"Пояснение, которое будет указано серым цветом в этом пункте под отображаемым текстом","example":"Каждый день бот будет присылать список новых задач в вашей команде","maxLength":75},"selected":{"type":"boolean","description":"Изначально выбранный пункт. Только один пункт может быть выбран.","example":true}},"$ref":"#/components/schemas/ViewBlockSelectOption"}},"required":{"type":"boolean","description":"Обязательность","default":false,"example":false},"hint":{"type":"string","description":"Подсказка, которая отображается под выпадающим списком серым цветом","example":"Выберите одну из команд","maxLength":2000}},"$ref":"#/components/schemas/ViewBlockSelect"},{"type":"object","description":"Блок radio — радиокнопки","required":["type","name","label","options"],"properties":{"type":{"type":"string","description":"Тип блока","enum":["radio"],"x-enum-descriptions":{"radio":"Для радиокнопок всегда radio"},"example":"radio"},"name":{"type":"string","description":"Название, которое будет передано в ваше приложение как ключ указанного пользователем выбора","example":"accessibility","maxLength":255},"label":{"type":"string","description":"Подпись к группе радиокнопок","example":"Доступность","maxLength":150},"options":{"type":"array","description":"Массив радиокнопок","minItems":1,"maxItems":10,"items":{"type":"object","description":"Радиокнопка блока radio. Изначальный выбор задаётся полем `checked`, как у checkbox, а не `selected`, как у select.","required":["text","value"],"properties":{"text":{"type":"string","description":"Отображаемый текст","example":"Ничего","maxLength":75},"value":{"type":"string","description":"Уникальное строковое значение, которое будет передано в ваше приложение при выборе этого пункта","example":"nothing","maxLength":255},"description":{"type":"string","description":"Пояснение, которое будет указано серым цветом в этом пункте под отображаемым текстом","example":"Каждый день бот будет присылать список новых задач в вашей команде","maxLength":75},"checked":{"type":"boolean","description":"Изначально выбранная радиокнопка. Только одна радиокнопка может быть выбрана.","example":true}},"$ref":"#/components/schemas/ViewBlockSelectableOption"}},"required":{"type":"boolean","description":"Обязательность","default":false,"example":true},"hint":{"type":"string","description":"Подсказка, которая отображается под группой радиокнопок серым цветом","example":"Если вы не планируете выходить на связь, то выберите вариант Ничего","maxLength":2000}},"$ref":"#/components/schemas/ViewBlockRadio"},{"type":"object","description":"Блок checkbox — чекбоксы","required":["type","name","label","options"],"properties":{"type":{"type":"string","description":"Тип блока","enum":["checkbox"],"x-enum-descriptions":{"checkbox":"Для чекбоксов всегда checkbox"},"example":"checkbox"},"name":{"type":"string","description":"Название, которое будет передано в ваше приложение как ключ указанного пользователем выбора","example":"newsletters","maxLength":255},"label":{"type":"string","description":"Подпись к группе чекбоксов","example":"Рассылки","maxLength":150},"options":{"type":"array","description":"Массив чекбоксов","minItems":1,"maxItems":10,"items":{"type":"object","required":["text","value"],"properties":{"text":{"type":"string","description":"Отображаемый текст","example":"Ничего","maxLength":75},"value":{"type":"string","description":"Уникальное строковое значение, которое будет передано в ваше приложение при выборе этого пункта","example":"nothing","maxLength":255},"description":{"type":"string","description":"Пояснение, которое будет указано серым цветом в этом пункте под отображаемым текстом","example":"Каждый день бот будет присылать список новых задач в вашей команде","maxLength":75},"checked":{"type":"boolean","description":"Изначально выбранный пункт","example":true}},"$ref":"#/components/schemas/ViewBlockCheckboxOption"}},"required":{"type":"boolean","description":"Обязательность","default":false,"example":false},"hint":{"type":"string","description":"Подсказка, которая отображается под группой чекбоксов серым цветом","example":"Выберите интересующие вас рассылки","maxLength":2000}},"$ref":"#/components/schemas/ViewBlockCheckbox"},{"type":"object","description":"Блок date — выбор даты","required":["type","name","label"],"properties":{"type":{"type":"string","description":"Тип блока","enum":["date"],"x-enum-descriptions":{"date":"Для выбора даты всегда date"},"example":"date"},"name":{"type":"string","description":"Название, которое будет передано в ваше приложение как ключ указанного пользователем значения","example":"date_start","maxLength":255},"label":{"type":"string","description":"Подпись к полю","example":"Дата начала отпуска","maxLength":150},"initial_date":{"type":"string","format":"date","description":"Начальное значение в поле в формате YYYY-MM-DD","example":"2025-07-01"},"required":{"type":"boolean","description":"Обязательность","default":false,"example":true},"hint":{"type":"string","description":"Подсказка, которая отображается под полем серым цветом","example":"Укажите дату начала отпуска","maxLength":2000}},"$ref":"#/components/schemas/ViewBlockDate"},{"type":"object","description":"Блок time — выбор времени","required":["type","name","label"],"properties":{"type":{"type":"string","description":"Тип блока","enum":["time"],"x-enum-descriptions":{"time":"Для выбора времени всегда time"},"example":"time"},"name":{"type":"string","description":"Название, которое будет передано в ваше приложение как ключ указанного пользователем значения","example":"newsletter_time","maxLength":255},"label":{"type":"string","description":"Подпись к полю","example":"Время рассылки","maxLength":150},"initial_time":{"type":"string","format":"time","description":"Начальное значение в поле в формате HH:mm. Значение в формате HH:mm:ss тоже принимается — секунды отбрасываются.","example":"11:00"},"required":{"type":"boolean","description":"Обязательность","default":false,"example":false},"hint":{"type":"string","description":"Подсказка, которая отображается под полем серым цветом","example":"Укажите, в какое время присылать выбранные рассылки","maxLength":2000}},"$ref":"#/components/schemas/ViewBlockTime"},{"type":"object","description":"Блок file_input — загрузка файлов","required":["type","name","label"],"properties":{"type":{"type":"string","description":"Тип блока","enum":["file_input"],"x-enum-descriptions":{"file_input":"Для загрузки файлов всегда file_input"},"example":"file_input"},"name":{"type":"string","description":"Название, которое будет передано в ваше приложение как ключ указанного пользователем значения","example":"request_doc","maxLength":255},"label":{"type":"string","description":"Подпись к полю","example":"Заявление","maxLength":150},"filetypes":{"type":"array","description":"Массив допустимых расширений файлов, указанные в виде строк (например, [\"png\",\"jpg\",\"gif\"]). Точка в начале не нужна, но допустима — она подставляется сама. Значение с косой чертой считается MIME-типом и остаётся как есть. Если это поле не указано, все расширения файлов будут приняты. Значение подставляется в фильтр окна выбора файла, поэтому расширение полученного файла проверяйте у себя.","example":["pdf","jpg","png"],"items":{"type":"string"}},"max_files":{"type":"integer","format":"int32","description":"Максимальное количество файлов, которое может загрузить пользователь в это поле","default":10,"example":1,"minimum":1,"maximum":10},"required":{"type":"boolean","description":"Обязательность","default":false,"example":true},"hint":{"type":"string","description":"Подсказка, которая отображается под полем серым цветом","example":"Загрузите заполненное заявление с электронной подписью (в формате pdf, jpg или png)","maxLength":2000}},"$ref":"#/components/schemas/ViewBlockFileInput"}],"$ref":"#/components/schemas/ViewBlockUnion"}}}}},"$ref":"#/components/schemas/OpenViewRequest"}}}},"responses":{"201":{"description":"The request has succeeded and a new resource has been created as a result."},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"410":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"views:write","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Открытие представления\n\n**Метод**: `POST`\n\n**Путь**: `/views/open`\n\n> **Скоуп:** `views:write`\n\nПоказывает пользователю модальное окно с формой в ответ на его действие. Метод вызывают токеном бота: события о нажатии кнопок приходят только ботам, от имени бота окно и открывается.\n\nОткрыть окно можно единственным способом — по `trigger_id` из события о нажатии кнопки. Один `trigger_id` открывает одно окно и живёт 3 секунды: у бота с вебхуком — с момента, когда Пачка передала нажатие, у бота с [Журналом событий](GET /webhooks/events) — с момента записи нажатия в журнал. Поэтому окно открывают первым делом, а всё остальное по событию делают уже после.\n\nЗаполненная форма приходит обратно событием `view_submit`: на исходящий вебхук, а если адрес не задан — в журнал. На вебхук отвечают прямо в ответе на него, и Пачка ждёт его 3 секунды. Событие из журнала закрывают методом [Ответ на отправку формы](POST /views/{view_id}/submit_response), на это есть 5 секунд. Не успели — пользователь увидит ошибку отправки.\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `type: string` (required) — Способ открытия представления. Пример: `\"modal\"`\n Значения: `modal` — Модальное окно\n- `trigger_id: string` (required) — Уникальный идентификатор события (полученный, например, в исходящем вебхуке о нажатии кнопки). Пример: `\"791a056b-006c-49dd-834b-c633fde52fe8\"`\n- `private_metadata: string` (max length: 3000) — Необязательная строка, которая будет отправлена в ваше приложение при отправке пользователем заполненной формы. Используйте это поле, например, для передачи в формате `JSON` какой то дополнительной информации вместе с заполненной пользователем формой. Пример: `\"{\\\"timeoff_id\\\":4378}\"`\n- `callback_id: string` (max length: 255) — Необязательный идентификатор для распознавания этого представления, который будет отправлен в ваше приложение при отправке пользователем заполненной формы. Используйте это поле, например, для понимания, какую форму должен был заполнить пользователь. Пример: `\"timeoff_request_form\"`\n- `view: object` (required) — Собранный объект представления\n - `title: string` (required, max length: 24) — Заголовок представления. Пример: `\"Уведомление об отпуске\"`\n - `close_text: string` (default: Отменить, max length: 24) — Текст кнопки закрытия представления. Отображается только в десктоп-вебе. В мобильных приложениях (iOS/Android) кнопка закрытия — это крестик в шапке, и заданный текст там не показывается. Пример: `\"Закрыть\"`\n - `submit_text: string` (default: Отправить, max length: 24) — Текст кнопки отправки формы. Пример: `\"Отправить заявку\"`\n - `blocks: array (union)` (required, max items: 100) — Массив блоков представления\n **Возможные типы элементов:**\n\n - **ViewBlockHeader**: Блок header — заголовок\n - `type: string` (required) — Тип блока\n Значения: `header` — Для заголовков всегда header\n - `text: string` (required, max length: 150) — Текст заголовка\n - **ViewBlockPlainText**: Блок plain_text — обычный текст\n - `type: string` (required) — Тип блока\n Значения: `plain_text` — Для обычного текста всегда plain_text\n - `text: string` (required, max length: 12000) — Текст\n - **ViewBlockMarkdown**: Блок markdown — форматированный текст\n - `type: string` (required) — Тип блока\n Значения: `markdown` — Для форматированного текста всегда markdown\n - `text: string` (required, max length: 12000) — Текст\n - **ViewBlockDivider**: Блок divider — разделитель\n - `type: string` (required) — Тип блока\n Значения: `divider` — Для разделителя всегда divider\n - **ViewBlockInput**: Блок input — текстовое поле ввода\n - `type: string` (required) — Тип блока\n Значения: `input` — Для текстового поля всегда input\n - `name: string` (required, max length: 255) — Название, которое будет передано в ваше приложение как ключ указанного пользователем значения\n - `label: string` (required, max length: 150) — Подпись к полю\n - `placeholder: string` (max length: 150) — Подсказка внутри поля ввода, пока оно пустое\n - `multiline: boolean` (default: false) — Многострочное поле\n - `initial_value: string` (max length: 3000) — Начальное значение в поле\n - `min_length: integer, int32` (min: 0, max: 3000) — Минимальная длина текста, который должен написать пользователь. Если пользователь напишет меньше, он получит ошибку.\n - `max_length: integer, int32` (min: 1, max: 3000) — Максимальная длина текста, который должен написать пользователь. Если пользователь напишет больше, он получит ошибку.\n - `required: boolean` (default: false) — Обязательность\n - `hint: string` (max length: 2000) — Подсказка, которая отображается под полем серым цветом\n - **ViewBlockSelect**: Блок select — выпадающий список\n - `type: string` (required) — Тип блока\n Значения: `select` — Для выпадающего списка всегда select\n - `name: string` (required, max length: 255) — Название, которое будет передано в ваше приложение как ключ указанного пользователем выбора\n - `label: string` (required, max length: 150) — Подпись к выпадающему списку\n - `options: array of object` (required, max items: 100) — Массив доступных пунктов в выпадающем списке\n - `text: string` (required, max length: 75) — Отображаемый текст\n - `value: string` (required, max length: 255) — Уникальное строковое значение, которое будет передано в ваше приложение при выборе этого пункта\n - `description: string` (max length: 75) — Пояснение, которое будет указано серым цветом в этом пункте под отображаемым текстом\n - `selected: boolean` — Изначально выбранный пункт. Только один пункт может быть выбран.\n - `required: boolean` (default: false) — Обязательность\n - `hint: string` (max length: 2000) — Подсказка, которая отображается под выпадающим списком серым цветом\n - **ViewBlockRadio**: Блок radio — радиокнопки\n - `type: string` (required) — Тип блока\n Значения: `radio` — Для радиокнопок всегда radio\n - `name: string` (required, max length: 255) — Название, которое будет передано в ваше приложение как ключ указанного пользователем выбора\n - `label: string` (required, max length: 150) — Подпись к группе радиокнопок\n - `options: array of object` (required, max items: 10) — Массив радиокнопок\n - `text: string` (required, max length: 75) — Отображаемый текст\n - `value: string` (required, max length: 255) — Уникальное строковое значение, которое будет передано в ваше приложение при выборе этого пункта\n - `description: string` (max length: 75) — Пояснение, которое будет указано серым цветом в этом пункте под отображаемым текстом\n - `checked: boolean` — Изначально выбранная радиокнопка. Только одна радиокнопка может быть выбрана.\n - `required: boolean` (default: false) — Обязательность\n - `hint: string` (max length: 2000) — Подсказка, которая отображается под группой радиокнопок серым цветом\n - **ViewBlockCheckbox**: Блок checkbox — чекбоксы\n - `type: string` (required) — Тип блока\n Значения: `checkbox` — Для чекбоксов всегда checkbox\n - `name: string` (required, max length: 255) — Название, которое будет передано в ваше приложение как ключ указанного пользователем выбора\n - `label: string` (required, max length: 150) — Подпись к группе чекбоксов\n - `options: array of object` (required, max items: 10) — Массив чекбоксов\n - `text: string` (required, max length: 75) — Отображаемый текст\n - `value: string` (required, max length: 255) — Уникальное строковое значение, которое будет передано в ваше приложение при выборе этого пункта\n - `description: string` (max length: 75) — Пояснение, которое будет указано серым цветом в этом пункте под отображаемым текстом\n - `checked: boolean` — Изначально выбранный пункт\n - `required: boolean` (default: false) — Обязательность\n - `hint: string` (max length: 2000) — Подсказка, которая отображается под группой чекбоксов серым цветом\n - **ViewBlockDate**: Блок date — выбор даты\n - `type: string` (required) — Тип блока\n Значения: `date` — Для выбора даты всегда date\n - `name: string` (required, max length: 255) — Название, которое будет передано в ваше приложение как ключ указанного пользователем значения\n - `label: string` (required, max length: 150) — Подпись к полю\n - `initial_date: date` — Начальное значение в поле в формате YYYY-MM-DD\n - `required: boolean` (default: false) — Обязательность\n - `hint: string` (max length: 2000) — Подсказка, которая отображается под полем серым цветом\n - **ViewBlockTime**: Блок time — выбор времени\n - `type: string` (required) — Тип блока\n Значения: `time` — Для выбора времени всегда time\n - `name: string` (required, max length: 255) — Название, которое будет передано в ваше приложение как ключ указанного пользователем значения\n - `label: string` (required, max length: 150) — Подпись к полю\n - `initial_time: string, time` — Начальное значение в поле в формате HH:mm. Значение в формате HH:mm:ss тоже принимается — секунды отбрасываются.\n - `required: boolean` (default: false) — Обязательность\n - `hint: string` (max length: 2000) — Подсказка, которая отображается под полем серым цветом\n - **ViewBlockFileInput**: Блок file_input — загрузка файлов\n - `type: string` (required) — Тип блока\n Значения: `file_input` — Для загрузки файлов всегда file_input\n - `name: string` (required, max length: 255) — Название, которое будет передано в ваше приложение как ключ указанного пользователем значения\n - `label: string` (required, max length: 150) — Подпись к полю\n - `filetypes: array of string` — Массив допустимых расширений файлов, указанные в виде строк (например, [\"png\",\"jpg\",\"gif\"]). Точка в начале не нужна, но допустима — она подставляется сама. Значение с косой чертой считается MIME-типом и остаётся как есть. Если это поле не указано, все расширения файлов будут приняты. Значение подставляется в фильтр окна выбора файла, поэтому расширение полученного файла проверяйте у себя.\n - `max_files: integer, int32` (default: 10, min: 1, max: 10) — Максимальное количество файлов, которое может загрузить пользователь в это поле\n - `required: boolean` (default: false) — Обязательность\n - `hint: string` (max length: 2000) — Подсказка, которая отображается под полем серым цветом\n\n### Пример\n\n```json\n{\n \"type\": \"modal\",\n \"trigger_id\": \"791a056b-006c-49dd-834b-c633fde52fe8\",\n \"private_metadata\": \"{\\\"timeoff_id\\\":4378}\",\n \"callback_id\": \"timeoff_request_form\",\n \"view\": {\n \"title\": \"Уведомление об отпуске\",\n \"close_text\": \"Закрыть\",\n \"submit_text\": \"Отправить заявку\",\n \"blocks\": [\n {\n \"type\": \"header\",\n \"text\": \"Основная информация\"\n },\n {\n \"type\": \"plain_text\",\n \"text\": \"Заполните форму. После отправки формы в общий чат будет отправлено текстовое уведомление, а ваш отпуск будет сохранен в базе.\"\n },\n {\n \"type\": \"markdown\",\n \"text\": \"Информацию о доступных вам днях отпуска вы можете прочитать по [ссылке](https://www.website.com/timeoff)\"\n },\n {\n \"type\": \"divider\"\n },\n {\n \"type\": \"input\",\n \"name\": \"info\",\n \"label\": \"Описание отпуска\",\n \"placeholder\": \"Куда собираетесь и что будете делать\",\n \"multiline\": true,\n \"initial_value\": \"Начальный текст\",\n \"min_length\": 10,\n \"max_length\": 500,\n \"required\": true,\n \"hint\": \"Возможно вам подскаджут, какие места лучше посетить\"\n },\n {\n \"type\": \"select\",\n \"name\": \"team\",\n \"label\": \"Выберите команду\",\n \"options\": [\n {\n \"text\": \"Ничего\",\n \"value\": \"nothing\",\n \"description\": \"Каждый день бот будет присылать список новых задач в вашей команде\",\n \"selected\": true\n }\n ],\n \"hint\": \"Выберите одну из команд\"\n },\n {\n \"type\": \"radio\",\n \"name\": \"accessibility\",\n \"label\": \"Доступность\",\n \"options\": [\n {\n \"text\": \"Ничего\",\n \"value\": \"nothing\",\n \"description\": \"Каждый день бот будет присылать список новых задач в вашей команде\",\n \"checked\": true\n }\n ],\n \"required\": true,\n \"hint\": \"Если вы не планируете выходить на связь, то выберите вариант Ничего\"\n },\n {\n \"type\": \"checkbox\",\n \"name\": \"newsletters\",\n \"label\": \"Рассылки\",\n \"options\": [\n {\n \"text\": \"Ничего\",\n \"value\": \"nothing\",\n \"description\": \"Каждый день бот будет присылать список новых задач в вашей команде\",\n \"checked\": true\n }\n ],\n \"hint\": \"Выберите интересующие вас рассылки\"\n },\n {\n \"type\": \"date\",\n \"name\": \"date_start\",\n \"label\": \"Дата начала отпуска\",\n \"initial_date\": \"2025-07-01\",\n \"required\": true,\n \"hint\": \"Укажите дату начала отпуска\"\n },\n {\n \"type\": \"time\",\n \"name\": \"newsletter_time\",\n \"label\": \"Время рассылки\",\n \"initial_time\": \"11:00\",\n \"hint\": \"Укажите, в какое время присылать выбранные рассылки\"\n },\n {\n \"type\": \"file_input\",\n \"name\": \"request_doc\",\n \"label\": \"Заявление\",\n \"filetypes\": [\n \"pdf\",\n \"jpg\",\n \"png\"\n ],\n \"max_files\": 1,\n \"required\": true,\n \"hint\": \"Загрузите заполненное заявление с электронной подписью (в формате pdf, jpg или png)\"\n }\n ]\n }\n}\n```\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/views/open\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"type\": \"modal\",\n \"trigger_id\": \"791a056b-006c-49dd-834b-c633fde52fe8\",\n \"private_metadata\": \"{\\\"timeoff_id\\\":4378}\",\n \"callback_id\": \"timeoff_request_form\",\n \"view\": {\n \"title\": \"Уведомление об отпуске\",\n \"close_text\": \"Закрыть\",\n \"submit_text\": \"Отправить заявку\",\n \"blocks\": [\n {\n \"type\": \"header\",\n \"text\": \"Основная информация\"\n },\n {\n \"type\": \"plain_text\",\n \"text\": \"Заполните форму. После отправки формы в общий чат будет отправлено текстовое уведомление, а ваш отпуск будет сохранен в базе.\"\n },\n {\n \"type\": \"markdown\",\n \"text\": \"Информацию о доступных вам днях отпуска вы можете прочитать по [ссылке](https://www.website.com/timeoff)\"\n },\n {\n \"type\": \"divider\"\n },\n {\n \"type\": \"input\",\n \"name\": \"info\",\n \"label\": \"Описание отпуска\",\n \"placeholder\": \"Куда собираетесь и что будете делать\",\n \"multiline\": true,\n \"initial_value\": \"Начальный текст\",\n \"min_length\": 10,\n \"max_length\": 500,\n \"required\": true,\n \"hint\": \"Возможно вам подскаджут, какие места лучше посетить\"\n },\n {\n \"type\": \"select\",\n \"name\": \"team\",\n \"label\": \"Выберите команду\",\n \"options\": [\n {\n \"text\": \"Ничего\",\n \"value\": \"nothing\",\n \"description\": \"Каждый день бот будет присылать список новых задач в вашей команде\",\n \"selected\": true\n }\n ],\n \"hint\": \"Выберите одну из команд\"\n },\n {\n \"type\": \"radio\",\n \"name\": \"accessibility\",\n \"label\": \"Доступность\",\n \"options\": [\n {\n \"text\": \"Ничего\",\n \"value\": \"nothing\",\n \"description\": \"Каждый день бот будет присылать список новых задач в вашей команде\",\n \"checked\": true\n }\n ],\n \"required\": true,\n \"hint\": \"Если вы не планируете выходить на связь, то выберите вариант Ничего\"\n },\n {\n \"type\": \"checkbox\",\n \"name\": \"newsletters\",\n \"label\": \"Рассылки\",\n \"options\": [\n {\n \"text\": \"Ничего\",\n \"value\": \"nothing\",\n \"description\": \"Каждый день бот будет присылать список новых задач в вашей команде\",\n \"checked\": true\n }\n ],\n \"hint\": \"Выберите интересующие вас рассылки\"\n },\n {\n \"type\": \"date\",\n \"name\": \"date_start\",\n \"label\": \"Дата начала отпуска\",\n \"initial_date\": \"2025-07-01\",\n \"required\": true,\n \"hint\": \"Укажите дату начала отпуска\"\n },\n {\n \"type\": \"time\",\n \"name\": \"newsletter_time\",\n \"label\": \"Время рассылки\",\n \"initial_time\": \"11:00\",\n \"hint\": \"Укажите, в какое время присылать выбранные рассылки\"\n },\n {\n \"type\": \"file_input\",\n \"name\": \"request_doc\",\n \"label\": \"Заявление\",\n \"filetypes\": [\n \"pdf\",\n \"jpg\",\n \"png\"\n ],\n \"max_files\": 1,\n \"required\": true,\n \"hint\": \"Загрузите заполненное заявление с электронной подписью (в формате pdf, jpg или png)\"\n }\n ]\n }\n}'\n```\n\n## Ответы\n\n### 201: The request has succeeded and a new resource has been created as a result.\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 410: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"POST","path":"/views/{view_id}/submit_response","summary":"Ответ на отправку формы","scope":"views:write","plan":null,"auth":true,"paginated":false,"command":"pachca views submit-response","docLink":"https://dev.pachca.com/api/views/submit-response","describe":"# POST /views/{view_id}/submit_response — Ответ на отправку формы\n\n> **Скоуп:** `views:write`\n\n## Параметры\n\n- `view_id` — путь (обязательный): Идентификатор представления\n\n## Тело запроса\n\n- `submit_id: string` (required) — Идентификатор отправки формы из вебхука `view_submit`\n- `errors: Record` — Ошибки заполнения полей. Ключ — `name` блока, значение — текст ошибки под полем. Без этого поля представление закрывается как успешно отправленное.\n **Структура значений Record:**\n - Тип значения: `string`\n\n## Эквивалентная команда\n\n```bash\npachca views submit-response 01KAJZ2XDSS2S3DSW9EXJZ0TBV \\\n --submit-id=791a056b-006c-49dd-834b-c633fde52fe8 \\\n --errors='{\"date_end\":\"Дата окончания отпуска не может быть меньше даты начала\"}' \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/views/submit-response\nПолная справка: `pachca api POST /views/{view_id}/submit_response --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/views/{view_id}/submit_response","description":"Ответ на отправку формы\n\nЗакрывает форму сотруднику или показывает ему ошибки под полями. Метод нужен боту, у которого не задан адрес исходящего вебхука: отвечать на вебхук такому боту некуда, и событие `view_submit` он получает из метода [История событий](GET /webhooks/events). Если адрес вебхука задан, отвечайте прямо на вебхук — это проще и не требует опроса журнала.\n\nИдентификаторы `view_id` и `submit_id` приходят в теле события. Ответить нужно в течение 5 секунд с момента отправки формы, иначе сотрудник увидит ошибку отправки, а значения полей сохранятся для повторной попытки.\n\nТело без поля `errors` закрывает форму как успешно отправленную, с полем `errors` — показывает текст ошибки под каждым названным полем.\n\nОтвет принимается один раз. Повторный вызов с той же парой `view_id` и `submit_id`, как и опоздавший, получает `410` с кодом `submit_expired`.","parameters":[{"name":"view_id","in":"path","description":"Идентификатор представления","required":true,"schema":{"type":"string","example":"01KAJZ2XDSS2S3DSW9EXJZ0TBV"},"example":"01KAJZ2XDSS2S3DSW9EXJZ0TBV"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Ответ бота на отправку формы","required":["submit_id"],"properties":{"submit_id":{"type":"string","description":"Идентификатор отправки формы из вебхука `view_submit`","example":"791a056b-006c-49dd-834b-c633fde52fe8"},"errors":{"type":"object","description":"Ошибки заполнения полей. Ключ — `name` блока, значение — текст ошибки под полем. Без этого поля представление закрывается как успешно отправленное.","example":{"date_end":"Дата окончания отпуска не может быть меньше даты начала"},"additionalProperties":{"type":"string"}}},"$ref":"#/components/schemas/SubmitViewResponseRequest"}}}},"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Результат ответа на отправку формы","required":["success"],"properties":{"success":{"type":"boolean","description":"Признак успешной обработки","example":true}},"$ref":"#/components/schemas/SubmitViewResponseResult"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"410":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Service unavailable.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"views:write","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Ответ на отправку формы\n\n**Метод**: `POST`\n\n**Путь**: `/views/{view_id}/submit_response`\n\n> **Скоуп:** `views:write`\n\nЗакрывает форму сотруднику или показывает ему ошибки под полями. Метод нужен боту, у которого не задан адрес исходящего вебхука: отвечать на вебхук такому боту некуда, и событие `view_submit` он получает из метода [История событий](GET /webhooks/events). Если адрес вебхука задан, отвечайте прямо на вебхук — это проще и не требует опроса журнала.\n\nИдентификаторы `view_id` и `submit_id` приходят в теле события. Ответить нужно в течение 5 секунд с момента отправки формы, иначе сотрудник увидит ошибку отправки, а значения полей сохранятся для повторной попытки.\n\nТело без поля `errors` закрывает форму как успешно отправленную, с полем `errors` — показывает текст ошибки под каждым названным полем.\n\nОтвет принимается один раз. Повторный вызов с той же парой `view_id` и `submit_id`, как и опоздавший, получает `410` с кодом `submit_expired`.\n\n## Параметры\n\n### Path параметры\n\n- `view_id: string` (required) — Идентификатор представления\n\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `submit_id: string` (required) — Идентификатор отправки формы из вебхука `view_submit`. Пример: `\"791a056b-006c-49dd-834b-c633fde52fe8\"`\n- `errors: Record` — Ошибки заполнения полей. Ключ — `name` блока, значение — текст ошибки под полем. Без этого поля представление закрывается как успешно отправленное. Пример: `{\"date_end\":\"Дата окончания отпуска не может быть меньше даты начала\"}`\n **Структура значений Record:**\n - Тип значения: `string`\n\n### Пример\n\n```json\n{\n \"submit_id\": \"791a056b-006c-49dd-834b-c633fde52fe8\",\n \"errors\": {\n \"date_end\": \"Дата окончания отпуска не может быть меньше даты начала\"\n }\n}\n```\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/views/01KAJZ2XDSS2S3DSW9EXJZ0TBV/submit_response\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"submit_id\": \"791a056b-006c-49dd-834b-c633fde52fe8\",\n \"errors\": {\n \"date_end\": \"Дата окончания отпуска не может быть меньше даты начала\"\n }\n}'\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `success: boolean` (required) — Признак успешной обработки. Пример: `true`\n\n**Пример ответа:**\n\n```json\n{\n \"success\": true\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 410: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 503: Service unavailable.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/webhooks/events","summary":"История событий","scope":"webhooks:events:read","plan":null,"auth":true,"paginated":true,"command":"pachca bots list-events","docLink":"https://dev.pachca.com/api/bots/list-events","describe":"# GET /webhooks/events — История событий\n\n> **Скоуп:** `webhooks:events:read`\n\n> Пагинация: добавьте `--all` для автоматического обхода страниц\n\n## Параметры\n\n- `limit` — query: Количество возвращаемых сущностей за один запрос\n- `cursor` — query: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n## Эквивалентная команда\n\n```bash\n# Добавьте --all для автоматической пагинации\npachca bots list-events \\\n --limit=1 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/bots/list-events\nПолная справка: `pachca api GET /webhooks/events --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/webhooks/events","description":"История событий\n\nЖурнал событий бота: то же самое, что уходит в исходящий вебхук, но забирается запросом. Метод нужен, когда принимать вебхуки на свой адрес нельзя — обработчик недоступен из интернета, поднимается не всегда или пишется прямо сейчас.\n\nЖурнал ведётся, только когда в настройках бота включён пункт «Сохранять историю событий» во вкладке «Исходящий webhook». Адрес вебхука при этом можно не указывать вовсе, а если он указан, событие и уедет на него, и ляжет в журнал.\n\nМетод работает только с токеном бота: у личного токена своего журнала нет. События отдаются от новых к старым, идентификатор события — строка, а не число.\n\nСам журнал не очищается: прочитанные события удаляйте методом [Удаление события](DELETE /webhooks/events/{id}), иначе они придут снова при повторном запросе.","parameters":[{"name":"limit","in":"query","description":"Количество возвращаемых сущностей за один запрос","required":false,"schema":{"type":"integer","format":"int32","default":50,"example":1,"minimum":1,"maximum":50},"example":1,"explode":false},{"name":"cursor","in":"query","description":"Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)","required":false,"schema":{"type":"string","example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9"},"example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9","explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными и пагинацией","required":["data","meta"],"properties":{"data":{"type":"array","items":{"type":"object","description":"Событие исходящего вебхука","required":["id","event_type","payload","created_at"],"properties":{"id":{"type":"string","description":"Идентификатор события","example":"01KAJZ2XDSS2S3DSW9EXJZ0TBV"},"event_type":{"type":"string","description":"Тип события","example":"message_new"},"payload":{"description":"Объект вебхука","allOf":[{"description":"Объединение всех типов payload вебхуков","anyOf":[{"type":"object","description":"Структура исходящего вебхука о сообщении","required":["type","id","event","entity_type","entity_id","content","user_id","created_at","url","chat_id","webhook_timestamp"],"properties":{"type":{"type":"string","description":"Тип объекта","enum":["message"],"x-enum-descriptions":{"message":"Для сообщений всегда message"},"example":"message"},"id":{"type":"integer","format":"int32","description":"Идентификатор сообщения","example":1245817},"event":{"description":"Тип события","example":"new","allOf":[{"type":"string","description":"Тип события webhook","enum":["new","update","delete"],"x-enum-descriptions":{"new":"Создание","update":"Обновление","delete":"Удаление"},"$ref":"#/components/schemas/WebhookEventType"}]},"entity_type":{"description":"Тип сущности, к которой относится сообщение","example":"discussion","allOf":[{"type":"string","description":"Тип сущности для сообщений","enum":["discussion","thread","user"],"x-enum-descriptions":{"discussion":"Беседа или канал","thread":"Тред","user":"Пользователь"},"$ref":"#/components/schemas/MessageEntityType"}]},"entity_id":{"type":"integer","format":"int32","description":"Идентификатор сущности, к которой относится сообщение","example":5678},"content":{"type":"string","description":"Текст сообщения","example":"Текст сообщения"},"user_id":{"type":"integer","format":"int32","description":"Идентификатор отправителя сообщения","example":2345},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2025-05-15T14:30:00.000Z"},"changed_at":{"type":"string","format":"date-time","description":"Дата и время последнего изменения сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. У неотредактированного сообщения совпадает с датой создания. `null` у сообщений, отправленных до появления этого поля.","example":"2025-05-15T14:35:00.000Z","nullable":true},"url":{"type":"string","description":"Прямая ссылка на сообщение","example":"https://pachca.com/chats/1245817/messages/5678"},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором находится сообщение","example":9012},"parent_message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, к которому написан ответ. `null`, если сообщение не является ответом на другое сообщение.","example":3456,"nullable":true},"thread":{"type":"object","description":"Тред, в котором отправлено сообщение. `null`, если сообщение отправлено не в треде. В отличие от поля `thread` в объекте сообщения REST API, здесь описывается тред, внутри которого находится сообщение.","nullable":true,"allOf":[{"type":"object","description":"Объект треда в вебхуке сообщения","required":["message_id","message_chat_id"],"properties":{"message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, к которому был создан тред. `null` у треда без сообщения-родителя — такие создаёт [Новый самостоятельный тред](POST /threads).","example":12345,"nullable":true},"message_chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата сообщения, к которому был создан тред. `null` у треда без сообщения-родителя.","example":67890,"nullable":true}},"$ref":"#/components/schemas/WebhookMessageThread"}]},"webhook_timestamp":{"type":"integer","format":"int32","description":"Дата и время отправки вебхука (UTC+0) в формате UNIX","example":1747574400}},"$ref":"#/components/schemas/MessageWebhookPayload"},{"type":"object","description":"Структура исходящего вебхука о реакции","required":["type","event","chat_id","message_id","code","name","user_id","created_at","webhook_timestamp"],"properties":{"type":{"type":"string","description":"Тип объекта","enum":["reaction"],"x-enum-descriptions":{"reaction":"Для реакций всегда reaction"},"example":"reaction"},"event":{"description":"Тип события","example":"new","allOf":[{"type":"string","description":"Тип события webhook для реакций","enum":["new","delete"],"x-enum-descriptions":{"new":"Создание","delete":"Удаление"},"$ref":"#/components/schemas/ReactionEventType"}]},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором находится сообщение. Поле всегда присутствует в payload. В редких случаях (например, если сообщение было удалено к моменту отправки вебхука) может быть `null`.","example":9012,"nullable":true},"message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, к которому относится реакция","example":1245817},"code":{"type":"string","description":"Emoji символ реакции","example":"👍"},"name":{"type":"string","description":"Название реакции","example":"thumbsup"},"user_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, который добавил или удалил реакцию","example":2345},"created_at":{"type":"string","format":"date-time","description":"Дата и время добавления реакции (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Поле присутствует и для события удаления реакции.","example":"2025-05-15T14:30:00.000Z"},"webhook_timestamp":{"type":"integer","format":"int32","description":"Дата и время отправки вебхука (UTC+0) в формате UNIX","example":1747574400}},"$ref":"#/components/schemas/ReactionWebhookPayload"},{"type":"object","description":"Структура исходящего вебхука о нажатии кнопки","required":["type","event","message_id","trigger_id","data","user_id","chat_id","webhook_timestamp"],"properties":{"type":{"type":"string","description":"Тип объекта","enum":["button"],"x-enum-descriptions":{"button":"Для кнопки всегда button"},"example":"button"},"event":{"type":"string","description":"Тип события","enum":["click"],"x-enum-descriptions":{"click":"Нажатие кнопки"},"example":"click"},"message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, к которому относится кнопка","example":1245817},"trigger_id":{"type":"string","description":"Уникальный идентификатор события. Время жизни — 3 секунды. Может быть использован, например, для открытия представления пользователю.","example":"a1b2c3d4-5e6f-7g8h-9i10-j11k12l13m14"},"data":{"type":"string","description":"Данные нажатой кнопки","example":"button_data"},"user_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, который нажал кнопку","example":2345},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором была нажата кнопка","example":9012},"webhook_timestamp":{"type":"integer","format":"int32","description":"Дата и время отправки вебхука (UTC+0) в формате UNIX","example":1747574400}},"$ref":"#/components/schemas/ButtonWebhookPayload"},{"type":"object","description":"Структура исходящего вебхука о заполнении формы","required":["type","event","callback_id","private_metadata","chat_id","user_id","view_id","submit_id","data","webhook_timestamp"],"properties":{"type":{"type":"string","description":"Тип объекта","enum":["view"],"x-enum-descriptions":{"view":"Для формы всегда view"},"example":"view"},"event":{"type":"string","description":"Тип события","enum":["submit"],"x-enum-descriptions":{"submit":"Отправка формы"},"example":"submit"},"callback_id":{"type":"string","description":"Идентификатор обратного вызова, указанный при открытии представления. `null`, если при открытии формы он не был указан.","example":"timeoff_request_form","nullable":true},"private_metadata":{"type":"string","description":"Приватные метаданные, указанные при открытии представления. `null`, если при открытии формы они не были указаны.","example":"{\"timeoff_id\":4378}","nullable":true},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором была нажата кнопка, открывшая форму. Поле может быть `null` для форм, открытых до выкатки этого поля.","example":9012,"nullable":true},"user_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, который отправил форму","example":1235523},"view_id":{"type":"string","description":"Идентификатор представления. Нужен боту без адреса исходящего вебхука, чтобы ответить методом [Ответ на отправку формы](POST /views/{view_id}/submit_response).","example":"01KAJZ2XDSS2S3DSW9EXJZ0TBV"},"submit_id":{"type":"string","description":"Идентификатор отправки формы. Нужен боту без адреса исходящего вебхука, чтобы ответить методом [Ответ на отправку формы](POST /views/{view_id}/submit_response).","example":"791a056b-006c-49dd-834b-c633fde52fe8"},"data":{"type":"object","description":"Данные заполненных полей представления. Ключ — `name` блока, значение — введённые данные. У блока `file_input` значение приходит массивом объектов с полями `name`, `size` и `url`, ссылка действует 2 часа.","additionalProperties":{}},"webhook_timestamp":{"type":"integer","format":"int32","description":"Дата и время отправки вебхука (UTC+0) в формате UNIX","example":1755075544}},"$ref":"#/components/schemas/ViewSubmitWebhookPayload"},{"type":"object","description":"Структура исходящего вебхука об участниках чата","required":["type","event","chat_id","user_ids","created_at","webhook_timestamp"],"properties":{"type":{"type":"string","description":"Тип объекта","enum":["chat_member"],"x-enum-descriptions":{"chat_member":"Для участника чата всегда chat_member"},"example":"chat_member"},"event":{"description":"Тип события","example":"add","allOf":[{"type":"string","description":"Тип события webhook для участников","enum":["add","remove"],"x-enum-descriptions":{"add":"Добавление","remove":"Удаление"},"$ref":"#/components/schemas/MemberEventType"}]},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором изменился состав участников","example":9012},"thread_id":{"type":"integer","format":"int32","description":"Идентификатор треда. `null`, если участники добавлены в обычный чат или канал, а не в тред.","example":5678,"nullable":true},"user_ids":{"type":"array","description":"Массив идентификаторов пользователей, с которыми произошло событие","example":[2345,6789],"items":{"type":"integer","format":"int32"}},"created_at":{"type":"string","format":"date-time","description":"Дата и время события (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ssZ. В этом вебхуке время приходит без долей секунды, в отличие от остальных.","example":"2025-05-15T14:30:00Z"},"webhook_timestamp":{"type":"integer","format":"int32","description":"Дата и время отправки вебхука (UTC+0) в формате UNIX","example":1747574400}},"$ref":"#/components/schemas/ChatMemberWebhookPayload"},{"type":"object","description":"Структура исходящего вебхука об участниках пространства","required":["type","event","user_ids","created_at","webhook_timestamp"],"properties":{"type":{"type":"string","description":"Тип объекта","enum":["company_member"],"x-enum-descriptions":{"company_member":"Для участника пространства всегда company_member"},"example":"company_member"},"event":{"description":"Тип события","example":"invite","allOf":[{"type":"string","description":"Тип события webhook для пользователей","enum":["invite","confirm","update","suspend","activate","delete"],"x-enum-descriptions":{"invite":"Приглашение","confirm":"Подтверждение","update":"Обновление","suspend":"Приостановка","activate":"Активация","delete":"Удаление"},"$ref":"#/components/schemas/UserEventType"}]},"user_ids":{"type":"array","description":"Массив идентификаторов пользователей, с которыми произошло событие","example":[2345,6789],"items":{"type":"integer","format":"int32"}},"created_at":{"type":"string","format":"date-time","description":"Дата и время события (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ssZ. В этом вебхуке время приходит без долей секунды, в отличие от остальных.","example":"2025-05-15T14:30:00Z"},"webhook_timestamp":{"type":"integer","format":"int32","description":"Дата и время отправки вебхука (UTC+0) в формате UNIX","example":1747574400}},"$ref":"#/components/schemas/CompanyMemberWebhookPayload"},{"type":"object","description":"Структура исходящего вебхука о разворачивании ссылок","required":["type","event","chat_id","message_id","links","user_id","created_at","webhook_timestamp"],"properties":{"type":{"type":"string","description":"Тип объекта","enum":["message"],"x-enum-descriptions":{"message":"Для разворачивания ссылок всегда message"},"example":"message"},"event":{"type":"string","description":"Тип события","enum":["link_shared"],"x-enum-descriptions":{"link_shared":"Обнаружена ссылка на отслеживаемый домен"},"example":"link_shared"},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором обнаружена ссылка","example":23438},"message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, содержащего ссылку","example":268092},"links":{"type":"array","description":"Массив обнаруженных ссылок на отслеживаемые домены","items":{"type":"object","description":"Объект ссылки в вебхуке разворачивания ссылок","required":["url","domain","skip"],"properties":{"url":{"type":"string","description":"URL ссылки","example":"https://example.com/page1"},"domain":{"type":"string","description":"Домен ссылки","example":"example.com"},"skip":{"type":"boolean","description":"Признак того, что автор сообщения скрыл превью для этой ссылки. Если `true` — бот не должен создавать превью.","example":false}},"$ref":"#/components/schemas/WebhookLink"}},"user_id":{"type":"integer","format":"int32","description":"Идентификатор отправителя сообщения","example":2345},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2024-09-18T19:53:14.000Z"},"webhook_timestamp":{"type":"integer","format":"int32","description":"Дата и время отправки вебхука (UTC+0) в формате UNIX","example":1726685594}},"$ref":"#/components/schemas/LinkSharedWebhookPayload"},{"type":"object","description":"Структура исходящего вебхука о видеозвонке","required":["type","event","video_room_id","chat_id","owner_id","webhook_timestamp"],"properties":{"type":{"type":"string","description":"Тип объекта","enum":["video_call"],"x-enum-descriptions":{"video_call":"Для видеозвонков всегда video_call"},"example":"video_call"},"event":{"description":"Тип события","example":"started","allOf":[{"type":"string","description":"Тип события видеозвонка","enum":["started","finished","recording_ready"],"x-enum-descriptions":{"started":"Видеозвонок начался","finished":"Видеозвонок завершился","recording_ready":"Запись видеозвонка готова"},"$ref":"#/components/schemas/VideoCallEventType"}]},"video_room_id":{"type":"integer","format":"int32","description":"Идентификатор видеозвонка","example":9012},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором проходит видеозвонок","example":23438},"owner_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, начавшего видеозвонок","example":2345},"thread":{"type":"object","description":"Объект с параметрами треда, если видеозвонок проходит в треде. `null`, если звонок не в треде.","nullable":true,"allOf":[{"type":"object","description":"Параметры треда, в котором проходит видеозвонок","required":["id","chat_id","message_id","message_chat_id"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор треда","example":12345},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата треда","example":67890},"message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, к которому создан тред. `null` у треда без сообщения-родителя — такие создаёт [Новый самостоятельный тред](POST /threads).","example":268092,"nullable":true},"message_chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата сообщения, к которому создан тред. `null` у треда без сообщения-родителя.","example":23438,"nullable":true}},"$ref":"#/components/schemas/WebhookVideoCallThread"}]},"started_at":{"type":"string","format":"date-time","description":"Дата и время начала звонка (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Присутствует для событий started и finished.","example":"2025-05-15T14:30:00.000Z"},"finished_at":{"type":"string","format":"date-time","description":"Дата и время завершения звонка (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Присутствует для события finished.","example":"2025-05-15T14:45:00.000Z"},"duration":{"type":"integer","format":"int32","description":"Длительность в секундах. Для события finished — длительность звонка, для recording_ready — длительность записи.","example":900},"members":{"type":"array","description":"Список участников звонка. Присутствует для события finished.","items":{"type":"object","description":"Участник видеозвонка","required":["user_id","joined_at","left_at"],"properties":{"user_id":{"type":"integer","format":"int32","description":"Идентификатор участника","example":2345},"joined_at":{"type":"string","format":"date-time","description":"Дата и время первого подключения к звонку (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2025-05-15T14:30:00.000Z"},"left_at":{"type":"string","format":"date-time","description":"Дата и время выхода из звонка (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Если участник оставался в звонке до его завершения, совпадает с временем окончания звонка.","example":"2025-05-15T14:45:00.000Z"}},"$ref":"#/components/schemas/WebhookVideoCallMember"}},"recording_id":{"type":"integer","format":"int32","description":"Идентификатор записи. Присутствует для события recording_ready.","example":4567},"file_id":{"type":"integer","format":"int32","description":"Идентификатор файла записи. Присутствует для события recording_ready. `null`, если файл ещё не привязан.","example":89012,"nullable":true},"url":{"type":"string","description":"Прямая ссылка на файл записи. Присутствует для события recording_ready.","example":"https://api.pachca.com/files/89012"},"size":{"type":"integer","format":"int64","description":"Размер файла записи в байтах. Присутствует для события recording_ready.","example":10485760},"webhook_timestamp":{"type":"integer","format":"int32","description":"Дата и время отправки вебхука (UTC+0) в формате UNIX","example":1747574400}},"$ref":"#/components/schemas/VideoCallWebhookPayload"}],"$ref":"#/components/schemas/WebhookPayloadUnion"}]},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания события (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2025-05-15T14:30:00.000Z"}},"$ref":"#/components/schemas/WebhookEvent"}},"meta":{"type":"object","description":"Метаданные пагинации","required":["paginate"],"properties":{"paginate":{"type":"object","description":"Вспомогательная информация","required":["next_page"],"properties":{"next_page":{"type":"string","description":"Курсор пагинации следующей страницы","example":"eyJxZCO2MiwiZGlyIjomSNYjIn3"},"prev_page":{"type":"string","description":"Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка.","example":"eyJxZCO2MiwiZGlyIjoiYXNjIn0"},"has_next":{"type":"boolean","description":"Есть ли ещё данные на следующей странице. На последней странице — `false`.","example":true},"has_prev":{"type":"boolean","description":"Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`.","example":false}}}},"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"webhooks:events:read","scopeRoles":["owner","admin","user","bot"]},"paginated":true},"docs":"# История событий\n\n**Метод**: `GET`\n\n**Путь**: `/webhooks/events`\n\n> **Скоуп:** `webhooks:events:read`\n\nЖурнал событий бота: то же самое, что уходит в исходящий вебхук, но забирается запросом. Метод нужен, когда принимать вебхуки на свой адрес нельзя — обработчик недоступен из интернета, поднимается не всегда или пишется прямо сейчас.\n\nЖурнал ведётся, только когда в настройках бота включён пункт «Сохранять историю событий» во вкладке «Исходящий webhook». Адрес вебхука при этом можно не указывать вовсе, а если он указан, событие и уедет на него, и ляжет в журнал.\n\nМетод работает только с токеном бота: у личного токена своего журнала нет. События отдаются от новых к старым, идентификатор события — строка, а не число.\n\nСам журнал не очищается: прочитанные события удаляйте методом [Удаление события](DELETE /webhooks/events/{id}), иначе они придут снова при повторном запросе.\n\n## Параметры\n\n### Query параметры\n\n- `limit: integer, int32` (default: 50) — Количество возвращаемых сущностей за один запрос\n- `cursor: string` — Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n\n## Пример запроса\n\n```bash\n# Для получения следующей страницы используйте cursor из meta.paginate.next_page\ncurl \"https://api.pachca.com/api/shared/v1/webhooks/events?limit=1\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: array of object` (required)\n - `id: string` (required) — Идентификатор события. Пример: `\"01KAJZ2XDSS2S3DSW9EXJZ0TBV\"`\n - `event_type: string` (required) — Тип события. Пример: `\"message_new\"`\n - `payload: anyOf` (required) — Объект вебхука\n **Возможные варианты:**\n\n - **MessageWebhookPayload**: Структура исходящего вебхука о сообщении\n - `type: string` (required) — Тип объекта. Пример: `\"message\"`\n Значения: `message` — Для сообщений всегда message\n - `id: integer, int32` (required) — Идентификатор сообщения. Пример: `1245817`\n - `event: string` (required) — Тип события\n Значения: `new` — Создание, `update` — Обновление, `delete` — Удаление\n - `entity_type: string` (required) — Тип сущности, к которой относится сообщение\n Значения: `discussion` — Беседа или канал, `thread` — Тред, `user` — Пользователь\n - `entity_id: integer, int32` (required) — Идентификатор сущности, к которой относится сообщение. Пример: `5678`\n - `content: string` (required) — Текст сообщения. Пример: `\"Текст сообщения\"`\n - `user_id: integer, int32` (required) — Идентификатор отправителя сообщения. Пример: `2345`\n - `created_at: date-time` (required) — Дата и время создания сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2025-05-15T14:30:00.000Z\"`\n - `changed_at: date-time` (nullable) — Дата и время последнего изменения сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. У неотредактированного сообщения совпадает с датой создания. `null` у сообщений, отправленных до появления этого поля. Пример: `\"2025-05-15T14:35:00.000Z\"`\n - `url: string` (required) — Прямая ссылка на сообщение. Пример: `\"https://pachca.com/chats/1245817/messages/5678\"`\n - `chat_id: integer, int32` (required) — Идентификатор чата, в котором находится сообщение. Пример: `9012`\n - `parent_message_id: integer, int32` (nullable) — Идентификатор сообщения, к которому написан ответ. `null`, если сообщение не является ответом на другое сообщение. Пример: `3456`\n - `thread: object` — Тред, в котором отправлено сообщение. `null`, если сообщение отправлено не в треде. В отличие от поля `thread` в объекте сообщения REST API, здесь описывается тред, внутри которого находится сообщение.\n - `message_id: integer, int32` (required, nullable) — Идентификатор сообщения, к которому был создан тред. `null` у треда без сообщения-родителя — такие создаёт [Новый самостоятельный тред](POST /threads). Пример: `12345`\n - `message_chat_id: integer, int32` (required, nullable) — Идентификатор чата сообщения, к которому был создан тред. `null` у треда без сообщения-родителя. Пример: `67890`\n - `webhook_timestamp: integer, int32` (required) — Дата и время отправки вебхука (UTC+0) в формате UNIX. Пример: `1747574400`\n - **ReactionWebhookPayload**: Структура исходящего вебхука о реакции\n - `type: string` (required) — Тип объекта. Пример: `\"reaction\"`\n Значения: `reaction` — Для реакций всегда reaction\n - `event: string` (required) — Тип события\n Значения: `new` — Создание, `delete` — Удаление\n - `chat_id: integer, int32` (required, nullable) — Идентификатор чата, в котором находится сообщение. Поле всегда присутствует в payload. В редких случаях (например, если сообщение было удалено к моменту отправки вебхука) может быть `null`. Пример: `9012`\n - `message_id: integer, int32` (required) — Идентификатор сообщения, к которому относится реакция. Пример: `1245817`\n - `code: string` (required) — Emoji символ реакции. Пример: `\"👍\"`\n - `name: string` (required) — Название реакции. Пример: `\"thumbsup\"`\n - `user_id: integer, int32` (required) — Идентификатор пользователя, который добавил или удалил реакцию. Пример: `2345`\n - `created_at: date-time` (required) — Дата и время добавления реакции (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Поле присутствует и для события удаления реакции. Пример: `\"2025-05-15T14:30:00.000Z\"`\n - `webhook_timestamp: integer, int32` (required) — Дата и время отправки вебхука (UTC+0) в формате UNIX. Пример: `1747574400`\n - **ButtonWebhookPayload**: Структура исходящего вебхука о нажатии кнопки\n - `type: string` (required) — Тип объекта. Пример: `\"button\"`\n Значения: `button` — Для кнопки всегда button\n - `event: string` (required) — Тип события. Пример: `\"click\"`\n Значения: `click` — Нажатие кнопки\n - `message_id: integer, int32` (required) — Идентификатор сообщения, к которому относится кнопка. Пример: `1245817`\n - `trigger_id: string` (required) — Уникальный идентификатор события. Время жизни — 3 секунды. Может быть использован, например, для открытия представления пользователю. Пример: `\"a1b2c3d4-5e6f-7g8h-9i10-j11k12l13m14\"`\n - `data: string` (required) — Данные нажатой кнопки. Пример: `\"button_data\"`\n - `user_id: integer, int32` (required) — Идентификатор пользователя, который нажал кнопку. Пример: `2345`\n - `chat_id: integer, int32` (required) — Идентификатор чата, в котором была нажата кнопка. Пример: `9012`\n - `webhook_timestamp: integer, int32` (required) — Дата и время отправки вебхука (UTC+0) в формате UNIX. Пример: `1747574400`\n - **ViewSubmitWebhookPayload**: Структура исходящего вебхука о заполнении формы\n - `type: string` (required) — Тип объекта. Пример: `\"view\"`\n Значения: `view` — Для формы всегда view\n - `event: string` (required) — Тип события. Пример: `\"submit\"`\n Значения: `submit` — Отправка формы\n - `callback_id: string` (required, nullable) — Идентификатор обратного вызова, указанный при открытии представления. `null`, если при открытии формы он не был указан. Пример: `\"timeoff_request_form\"`\n - `private_metadata: string` (required, nullable) — Приватные метаданные, указанные при открытии представления. `null`, если при открытии формы они не были указаны. Пример: `\"{\\\"timeoff_id\\\":4378}\"`\n - `chat_id: integer, int32` (required, nullable) — Идентификатор чата, в котором была нажата кнопка, открывшая форму. Поле может быть `null` для форм, открытых до выкатки этого поля. Пример: `9012`\n - `user_id: integer, int32` (required) — Идентификатор пользователя, который отправил форму. Пример: `1235523`\n - `view_id: string` (required) — Идентификатор представления. Нужен боту без адреса исходящего вебхука, чтобы ответить методом [Ответ на отправку формы](POST /views/{view_id}/submit_response). Пример: `\"01KAJZ2XDSS2S3DSW9EXJZ0TBV\"`\n - `submit_id: string` (required) — Идентификатор отправки формы. Нужен боту без адреса исходящего вебхука, чтобы ответить методом [Ответ на отправку формы](POST /views/{view_id}/submit_response). Пример: `\"791a056b-006c-49dd-834b-c633fde52fe8\"`\n - `data: Record` (required) — Данные заполненных полей представления. Ключ — `name` блока, значение — введённые данные. У блока `file_input` значение приходит массивом объектов с полями `name`, `size` и `url`, ссылка действует 2 часа.\n **Структура значений Record:**\n - Тип значения: `any`\n - `webhook_timestamp: integer, int32` (required) — Дата и время отправки вебхука (UTC+0) в формате UNIX. Пример: `1755075544`\n - **ChatMemberWebhookPayload**: Структура исходящего вебхука об участниках чата\n - `type: string` (required) — Тип объекта. Пример: `\"chat_member\"`\n Значения: `chat_member` — Для участника чата всегда chat_member\n - `event: string` (required) — Тип события\n Значения: `add` — Добавление, `remove` — Удаление\n - `chat_id: integer, int32` (required) — Идентификатор чата, в котором изменился состав участников. Пример: `9012`\n - `thread_id: integer, int32` (nullable) — Идентификатор треда. `null`, если участники добавлены в обычный чат или канал, а не в тред. Пример: `5678`\n - `user_ids: array of integer` (required) — Массив идентификаторов пользователей, с которыми произошло событие. Пример: `[2345,6789]`\n - `created_at: date-time` (required) — Дата и время события (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ssZ. В этом вебхуке время приходит без долей секунды, в отличие от остальных. Пример: `\"2025-05-15T14:30:00Z\"`\n - `webhook_timestamp: integer, int32` (required) — Дата и время отправки вебхука (UTC+0) в формате UNIX. Пример: `1747574400`\n - **CompanyMemberWebhookPayload**: Структура исходящего вебхука об участниках пространства\n - `type: string` (required) — Тип объекта. Пример: `\"company_member\"`\n Значения: `company_member` — Для участника пространства всегда company_member\n - `event: string` (required) — Тип события\n Значения: `invite` — Приглашение, `confirm` — Подтверждение, `update` — Обновление, `suspend` — Приостановка, `activate` — Активация, `delete` — Удаление\n - `user_ids: array of integer` (required) — Массив идентификаторов пользователей, с которыми произошло событие. Пример: `[2345,6789]`\n - `created_at: date-time` (required) — Дата и время события (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ssZ. В этом вебхуке время приходит без долей секунды, в отличие от остальных. Пример: `\"2025-05-15T14:30:00Z\"`\n - `webhook_timestamp: integer, int32` (required) — Дата и время отправки вебхука (UTC+0) в формате UNIX. Пример: `1747574400`\n - **LinkSharedWebhookPayload**: Структура исходящего вебхука о разворачивании ссылок\n - `type: string` (required) — Тип объекта. Пример: `\"message\"`\n Значения: `message` — Для разворачивания ссылок всегда message\n - `event: string` (required) — Тип события. Пример: `\"link_shared\"`\n Значения: `link_shared` — Обнаружена ссылка на отслеживаемый домен\n - `chat_id: integer, int32` (required) — Идентификатор чата, в котором обнаружена ссылка. Пример: `23438`\n - `message_id: integer, int32` (required) — Идентификатор сообщения, содержащего ссылку. Пример: `268092`\n - `links: array of object` (required) — Массив обнаруженных ссылок на отслеживаемые домены\n - `url: string` (required) — URL ссылки. Пример: `\"https://example.com/page1\"`\n - `domain: string` (required) — Домен ссылки. Пример: `\"example.com\"`\n - `skip: boolean` (required) — Признак того, что автор сообщения скрыл превью для этой ссылки. Если `true` — бот не должен создавать превью. Пример: `false`\n - `user_id: integer, int32` (required) — Идентификатор отправителя сообщения. Пример: `2345`\n - `created_at: date-time` (required) — Дата и время создания сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2024-09-18T19:53:14.000Z\"`\n - `webhook_timestamp: integer, int32` (required) — Дата и время отправки вебхука (UTC+0) в формате UNIX. Пример: `1726685594`\n - **VideoCallWebhookPayload**: Структура исходящего вебхука о видеозвонке\n - `type: string` (required) — Тип объекта. Пример: `\"video_call\"`\n Значения: `video_call` — Для видеозвонков всегда video_call\n - `event: string` (required) — Тип события\n Значения: `started` — Видеозвонок начался, `finished` — Видеозвонок завершился, `recording_ready` — Запись видеозвонка готова\n - `video_room_id: integer, int32` (required) — Идентификатор видеозвонка. Пример: `9012`\n - `chat_id: integer, int32` (required) — Идентификатор чата, в котором проходит видеозвонок. Пример: `23438`\n - `owner_id: integer, int32` (required) — Идентификатор пользователя, начавшего видеозвонок. Пример: `2345`\n - `thread: object` — Объект с параметрами треда, если видеозвонок проходит в треде. `null`, если звонок не в треде.\n - `id: integer, int32` (required) — Идентификатор треда. Пример: `12345`\n - `chat_id: integer, int32` (required) — Идентификатор чата треда. Пример: `67890`\n - `message_id: integer, int32` (required, nullable) — Идентификатор сообщения, к которому создан тред. `null` у треда без сообщения-родителя — такие создаёт [Новый самостоятельный тред](POST /threads). Пример: `268092`\n - `message_chat_id: integer, int32` (required, nullable) — Идентификатор чата сообщения, к которому создан тред. `null` у треда без сообщения-родителя. Пример: `23438`\n - `started_at: date-time` — Дата и время начала звонка (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Присутствует для событий started и finished. Пример: `\"2025-05-15T14:30:00.000Z\"`\n - `finished_at: date-time` — Дата и время завершения звонка (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Присутствует для события finished. Пример: `\"2025-05-15T14:45:00.000Z\"`\n - `duration: integer, int32` — Длительность в секундах. Для события finished — длительность звонка, для recording_ready — длительность записи. Пример: `900`\n - `members: array of object` — Список участников звонка. Присутствует для события finished.\n - `user_id: integer, int32` (required) — Идентификатор участника. Пример: `2345`\n - `joined_at: date-time` (required) — Дата и время первого подключения к звонку (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2025-05-15T14:30:00.000Z\"`\n - `left_at: date-time` (required) — Дата и время выхода из звонка (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Если участник оставался в звонке до его завершения, совпадает с временем окончания звонка. Пример: `\"2025-05-15T14:45:00.000Z\"`\n - `recording_id: integer, int32` — Идентификатор записи. Присутствует для события recording_ready. Пример: `4567`\n - `file_id: integer, int32` (nullable) — Идентификатор файла записи. Присутствует для события recording_ready. `null`, если файл ещё не привязан. Пример: `89012`\n - `url: string` — Прямая ссылка на файл записи. Присутствует для события recording_ready. Пример: `\"https://api.pachca.com/files/89012\"`\n - `size: integer, int64` — Размер файла записи в байтах. Присутствует для события recording_ready. Пример: `10485760`\n - `webhook_timestamp: integer, int32` (required) — Дата и время отправки вебхука (UTC+0) в формате UNIX. Пример: `1747574400`\n - `created_at: date-time` (required) — Дата и время создания события (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2025-05-15T14:30:00.000Z\"`\n- `meta: object` (required) — Метаданные пагинации\n - `paginate: object` (required) — Вспомогательная информация\n - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `\"eyJxZCO2MiwiZGlyIjomSNYjIn3\"`\n - `prev_page: string` — Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка. Пример: `\"eyJxZCO2MiwiZGlyIjoiYXNjIn0\"`\n - `has_next: boolean` — Есть ли ещё данные на следующей странице. На последней странице — `false`. Пример: `true`\n - `has_prev: boolean` — Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`. Пример: `false`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": [\n {\n \"id\": \"01KAJZ2XDSS2S3DSW9EXJZ0TBV\",\n \"event_type\": \"message_new\",\n \"payload\": {\n \"type\": \"message\",\n \"id\": 1245817,\n \"event\": \"new\",\n \"entity_type\": \"discussion\",\n \"entity_id\": 5678,\n \"content\": \"Текст сообщения\",\n \"user_id\": 2345,\n \"created_at\": \"2025-05-15T14:30:00.000Z\",\n \"changed_at\": \"2025-05-15T14:35:00.000Z\",\n \"url\": \"https://pachca.com/chats/1245817/messages/5678\",\n \"chat_id\": 9012,\n \"parent_message_id\": 3456,\n \"thread\": {\n \"message_id\": 12345,\n \"message_chat_id\": 67890\n },\n \"webhook_timestamp\": 1747574400\n },\n \"created_at\": \"2025-05-15T14:30:00.000Z\"\n }\n ],\n \"meta\": {\n \"paginate\": {\n \"next_page\": \"eyJxZCO2MiwiZGlyIjomSNYjIn3\",\n \"prev_page\": \"eyJxZCO2MiwiZGlyIjoiYXNjIn0\",\n \"has_next\": true,\n \"has_prev\": false\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"DELETE","path":"/webhooks/events/{id}","summary":"Удаление события","scope":"webhooks:events:delete","plan":null,"auth":true,"paginated":false,"command":"pachca bots remove-event","docLink":"https://dev.pachca.com/api/bots/remove-event","describe":"# DELETE /webhooks/events/{id} — Удаление события\n\n> **Скоуп:** `webhooks:events:delete`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор события\n\n## Эквивалентная команда\n\n```bash\npachca bots remove-event 01KAJZ2XDSS2S3DSW9EXJZ0TBV \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/bots/remove-event\nПолная справка: `pachca api DELETE /webhooks/events/{id} --docs` · схема: `--spec`\n","spec":{"method":"DELETE","path":"/webhooks/events/{id}","description":"Удаление события\n\nУбирает событие из журнала бота. Разбирая журнал, удаляйте событие сразу после обработки: журнал не очищается сам, и всё, что осталось, придёт снова при повторном запросе.\n\nМетод работает только с токеном того бота, которому принадлежит событие.","parameters":[{"name":"id","in":"path","description":"Идентификатор события","required":true,"schema":{"type":"string","example":"01KAJZ2XDSS2S3DSW9EXJZ0TBV"},"example":"01KAJZ2XDSS2S3DSW9EXJZ0TBV"}],"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"webhooks:events:delete","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Удаление события\n\n**Метод**: `DELETE`\n\n**Путь**: `/webhooks/events/{id}`\n\n> **Скоуп:** `webhooks:events:delete`\n\nУбирает событие из журнала бота. Разбирая журнал, удаляйте событие сразу после обработки: журнал не очищается сам, и всё, что осталось, придёт снова при повторном запросе.\n\nМетод работает только с токеном того бота, которому принадлежит событие.\n\n## Параметры\n\n### Path параметры\n\n- `id: string` (required) — Идентификатор события\n\n\n## Пример запроса\n\n```bash\ncurl -X DELETE \"https://api.pachca.com/api/shared/v1/webhooks/events/01KAJZ2XDSS2S3DSW9EXJZ0TBV\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"}] \ No newline at end of file +[{"method":"GET","path":"/audit_events","summary":"Журнал аудита событий","scope":"audit_events:read","plan":"corporation","auth":true,"paginated":true,"command":"pachca security list","docLink":"https://dev.pachca.com/api/security/list","describe":"# GET /audit_events — Журнал аудита событий\n\n> **Скоуп:** `audit_events:read`\n\n> **Тариф:** Корпорация\n\n> Пагинация: добавьте `--all` для автоматического обхода страниц\n\n## Параметры\n\n- `start_time` — query: Начальная метка времени, включительно (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Значение, которое не удалось разобрать, фильтр снимает — ответ придёт полным, без ошибки.\n- `end_time` — query: Конечная метка времени, включительно (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Значение, которое не удалось разобрать, фильтр снимает — ответ придёт полным, без ошибки.\n- `event_key` — query: Фильтр по конкретному типу события\n- `actor_id` — query: Идентификатор пользователя, выполнившего действие\n- `actor_type` — query: Тип актора\n- `entity_id` — query: Идентификатор затронутой сущности\n- `entity_type` — query: Тип сущности\n- `limit` — query: Количество записей для возврата\n- `cursor` — query: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n## Эквивалентная команда\n\n```bash\n# Добавьте --all для автоматической пагинации\npachca security list \\\n --start-time=2025-05-01T09:11:00.000Z \\\n --end-time=2025-05-02T09:11:00.000Z \\\n --event-key=user_login \\\n --actor-id=98765 \\\n --actor-type=User \\\n --entity-id=98765 \\\n --entity-type=User \\\n --limit=1 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/security/list\nПолная справка: `pachca api GET /audit_events --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/audit_events","description":"Журнал аудита событий\n\nЧто происходило в пространстве: входы и выходы, изменения ролей и настроек, действия с чатами, сотрудниками и ботами. Записи только читаются — изменить или удалить их нельзя ни через API, ни из интерфейса.\n\nМетод доступен владельцу пространства на тарифе «Корпорация», остальным сотрудникам он отвечает `403`. Само обращение к журналу тоже записывается в журнал — событием `audit_events_accessed`.\n\nСобытия приходят от новых к старым и отбираются фильтрами: период по `start_time` и `end_time`, вид события по `event_key`, инициатор по `actor_id` и `actor_type`. Без фильтров метод отдаёт все события пространства постранично.","parameters":[{"name":"start_time","in":"query","description":"Начальная метка времени, включительно (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Значение, которое не удалось разобрать, фильтр снимает — ответ придёт полным, без ошибки.","required":false,"schema":{"type":"string","format":"date-time","example":"2025-05-01T09:11:00.000Z"},"example":"2025-05-01T09:11:00.000Z","explode":false},{"name":"end_time","in":"query","description":"Конечная метка времени, включительно (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Значение, которое не удалось разобрать, фильтр снимает — ответ придёт полным, без ошибки.","required":false,"schema":{"type":"string","format":"date-time","example":"2025-05-02T09:11:00.000Z"},"example":"2025-05-02T09:11:00.000Z","explode":false},{"name":"event_key","in":"query","description":"Фильтр по конкретному типу события","required":false,"schema":{"type":"string","description":"Тип аудит-события","enum":["user_login","user_logout","user_2fa_fail","user_2fa_success","user_2fa_disabled","user_created","user_deleted","user_role_changed","user_updated","tag_created","tag_deleted","user_added_to_tag","user_removed_from_tag","chat_created","chat_renamed","chat_permission_changed","user_chat_join","user_chat_leave","tag_added_to_chat","tag_removed_from_chat","message_updated","message_deleted","message_created","reaction_created","reaction_deleted","thread_created","access_token_created","access_token_updated","access_token_destroy","kms_encrypt","kms_decrypt","audit_events_accessed","company_chats_accessed","company_bots_accessed","dlp_violation_detected","search_users_api","search_chats_api","search_messages_api","bot_scopes_updated","bot_webhook_settings_updated","bot_token_recreated","bot_deleted","bot_oauth_client_updated","bot_oauth_client_disabled","bot_oauth_client_secret_rotated","bot_token_created","bot_token_updated","bot_token_reissued","oauth_authorization_granted","oauth_authorization_revoked","oauth_device_authorization_approved","oauth_device_authorization_denied","video_call_started","video_call_finished","video_call_recording_ready","exchange_disabled"],"x-enum-descriptions":{"user_login":"Пользователь успешно вошел в систему","user_logout":"Пользователь вышел из системы","user_2fa_fail":"Неудачная попытка двухфакторной аутентификации","user_2fa_success":"Успешная двухфакторная аутентификация","user_2fa_disabled":"Двухфакторная аутентификация отключена у сотрудника","user_created":"Создана новая учетная запись пользователя","user_deleted":"Учетная запись пользователя удалена","user_role_changed":"Роль пользователя была изменена","user_updated":"Данные пользователя обновлены","tag_created":"Создан новый тег","tag_deleted":"Тег удален","user_added_to_tag":"Пользователь добавлен в тег","user_removed_from_tag":"Пользователь удален из тега","chat_created":"Создан новый чат","chat_renamed":"Чат переименован","chat_permission_changed":"Изменены права доступа к чату","user_chat_join":"Пользователь присоединился к чату","user_chat_leave":"Пользователь покинул чат","tag_added_to_chat":"Тег добавлен в чат","tag_removed_from_chat":"Тег удален из чата","message_updated":"Сообщение отредактировано","message_deleted":"Сообщение удалено","message_created":"Сообщение создано","reaction_created":"Реакция добавлена","reaction_deleted":"Реакция удалена","thread_created":"Тред создан","access_token_created":"Создан новый токен доступа","access_token_updated":"Токен доступа обновлен","access_token_destroy":"Токен доступа удален","kms_encrypt":"Данные зашифрованы","kms_decrypt":"Данные расшифрованы","audit_events_accessed":"Доступ к журналам аудита получен","company_chats_accessed":"Получен список всех чатов пространства","company_bots_accessed":"Получен список всех ботов пространства","dlp_violation_detected":"Срабатывание правила DLP-системы","search_users_api":"Поиск сотрудников через API","search_chats_api":"Поиск чатов через API","search_messages_api":"Поиск сообщений через API","bot_scopes_updated":"Изменены скоупы токена бота","bot_webhook_settings_updated":"Изменены настройки исходящего вебхука бота","bot_token_recreated":"Токен бота перевыпущен (ротация)","bot_deleted":"Бот удалён","bot_oauth_client_updated":"Изменены параметры OAuth-клиента бота","bot_oauth_client_disabled":"У бота выключена авторизация от имени сотрудника","bot_oauth_client_secret_rotated":"Обновлён секрет OAuth-клиента бота","bot_token_created":"Выпущен токен бота","bot_token_updated":"Изменены имя или скоупы токена бота","bot_token_reissued":"Отдельный токен бота перевыпущен","oauth_authorization_granted":"Пользователь выдал OAuth-клиенту доступ к своим данным","oauth_authorization_revoked":"Доступ OAuth-клиента к данным пользователя отозван","oauth_device_authorization_approved":"Сотрудник подтвердил вход приложения с устройства","oauth_device_authorization_denied":"Сотрудник отклонил вход приложения с устройства","video_call_started":"Видеозвонок начат","video_call_finished":"Видеозвонок завершён","video_call_recording_ready":"Запись видеозвонка готова","exchange_disabled":"Отключена интеграция с Exchange"},"example":"user_login","$ref":"#/components/schemas/AuditEventKey"},"example":"user_login","explode":false},{"name":"actor_id","in":"query","description":"Идентификатор пользователя, выполнившего действие","required":false,"schema":{"type":"string","example":"98765"},"example":"98765","explode":false},{"name":"actor_type","in":"query","description":"Тип актора","required":false,"schema":{"type":"string","example":"User"},"example":"User","explode":false},{"name":"entity_id","in":"query","description":"Идентификатор затронутой сущности","required":false,"schema":{"type":"string","example":"98765"},"example":"98765","explode":false},{"name":"entity_type","in":"query","description":"Тип сущности","required":false,"schema":{"type":"string","example":"User"},"example":"User","explode":false},{"name":"limit","in":"query","description":"Количество записей для возврата","required":false,"schema":{"type":"integer","format":"int32","default":50,"example":1,"maximum":50},"example":1,"explode":false},{"name":"cursor","in":"query","description":"Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)","required":false,"schema":{"type":"string","example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9"},"example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9","explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными и пагинацией","required":["data","meta"],"properties":{"data":{"type":"array","items":{"type":"object","description":"Событие аудита","required":["id","created_at","event_key","entity_id","entity_type","actor_id","actor_type","details","ip_address","user_agent"],"properties":{"id":{"type":"string","description":"Уникальный идентификатор события","example":"a1b2c3d4-5e6f-7g8h-9i10-j11k12l13m14"},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания события (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2025-05-15T14:30:00.000Z"},"event_key":{"description":"Ключ типа события","example":"user_login","allOf":[{"type":"string","description":"Тип аудит-события","enum":["user_login","user_logout","user_2fa_fail","user_2fa_success","user_2fa_disabled","user_created","user_deleted","user_role_changed","user_updated","tag_created","tag_deleted","user_added_to_tag","user_removed_from_tag","chat_created","chat_renamed","chat_permission_changed","user_chat_join","user_chat_leave","tag_added_to_chat","tag_removed_from_chat","message_updated","message_deleted","message_created","reaction_created","reaction_deleted","thread_created","access_token_created","access_token_updated","access_token_destroy","kms_encrypt","kms_decrypt","audit_events_accessed","company_chats_accessed","company_bots_accessed","dlp_violation_detected","search_users_api","search_chats_api","search_messages_api","bot_scopes_updated","bot_webhook_settings_updated","bot_token_recreated","bot_deleted","bot_oauth_client_updated","bot_oauth_client_disabled","bot_oauth_client_secret_rotated","bot_token_created","bot_token_updated","bot_token_reissued","oauth_authorization_granted","oauth_authorization_revoked","oauth_device_authorization_approved","oauth_device_authorization_denied","video_call_started","video_call_finished","video_call_recording_ready","exchange_disabled"],"x-enum-descriptions":{"user_login":"Пользователь успешно вошел в систему","user_logout":"Пользователь вышел из системы","user_2fa_fail":"Неудачная попытка двухфакторной аутентификации","user_2fa_success":"Успешная двухфакторная аутентификация","user_2fa_disabled":"Двухфакторная аутентификация отключена у сотрудника","user_created":"Создана новая учетная запись пользователя","user_deleted":"Учетная запись пользователя удалена","user_role_changed":"Роль пользователя была изменена","user_updated":"Данные пользователя обновлены","tag_created":"Создан новый тег","tag_deleted":"Тег удален","user_added_to_tag":"Пользователь добавлен в тег","user_removed_from_tag":"Пользователь удален из тега","chat_created":"Создан новый чат","chat_renamed":"Чат переименован","chat_permission_changed":"Изменены права доступа к чату","user_chat_join":"Пользователь присоединился к чату","user_chat_leave":"Пользователь покинул чат","tag_added_to_chat":"Тег добавлен в чат","tag_removed_from_chat":"Тег удален из чата","message_updated":"Сообщение отредактировано","message_deleted":"Сообщение удалено","message_created":"Сообщение создано","reaction_created":"Реакция добавлена","reaction_deleted":"Реакция удалена","thread_created":"Тред создан","access_token_created":"Создан новый токен доступа","access_token_updated":"Токен доступа обновлен","access_token_destroy":"Токен доступа удален","kms_encrypt":"Данные зашифрованы","kms_decrypt":"Данные расшифрованы","audit_events_accessed":"Доступ к журналам аудита получен","company_chats_accessed":"Получен список всех чатов пространства","company_bots_accessed":"Получен список всех ботов пространства","dlp_violation_detected":"Срабатывание правила DLP-системы","search_users_api":"Поиск сотрудников через API","search_chats_api":"Поиск чатов через API","search_messages_api":"Поиск сообщений через API","bot_scopes_updated":"Изменены скоупы токена бота","bot_webhook_settings_updated":"Изменены настройки исходящего вебхука бота","bot_token_recreated":"Токен бота перевыпущен (ротация)","bot_deleted":"Бот удалён","bot_oauth_client_updated":"Изменены параметры OAuth-клиента бота","bot_oauth_client_disabled":"У бота выключена авторизация от имени сотрудника","bot_oauth_client_secret_rotated":"Обновлён секрет OAuth-клиента бота","bot_token_created":"Выпущен токен бота","bot_token_updated":"Изменены имя или скоупы токена бота","bot_token_reissued":"Отдельный токен бота перевыпущен","oauth_authorization_granted":"Пользователь выдал OAuth-клиенту доступ к своим данным","oauth_authorization_revoked":"Доступ OAuth-клиента к данным пользователя отозван","oauth_device_authorization_approved":"Сотрудник подтвердил вход приложения с устройства","oauth_device_authorization_denied":"Сотрудник отклонил вход приложения с устройства","video_call_started":"Видеозвонок начат","video_call_finished":"Видеозвонок завершён","video_call_recording_ready":"Запись видеозвонка готова","exchange_disabled":"Отключена интеграция с Exchange"},"$ref":"#/components/schemas/AuditEventKey"}]},"entity_id":{"type":"string","description":"Идентификатор затронутой сущности","example":"98765"},"entity_type":{"type":"string","description":"Тип затронутой сущности","example":"User"},"actor_id":{"type":"string","description":"Идентификатор пользователя, выполнившего действие","example":"98765"},"actor_type":{"type":"string","description":"Тип актора","example":"User"},"details":{"description":"Дополнительные детали события. Структура зависит от значения event_key — см. описания значений поля event_key. Для событий без деталей возвращается пустой объект.","allOf":[{"description":"Дополнительные детали события аудита. Структура зависит от значения event_key.","anyOf":[{"type":"object","description":"Пустые детали. При: user_login, user_logout, user_2fa_fail, user_2fa_success, user_2fa_disabled, user_created, user_deleted, chat_created, message_created, message_updated, message_deleted, reaction_created, reaction_deleted, thread_created, audit_events_accessed, company_chats_accessed, company_bots_accessed, exchange_disabled.","$ref":"#/components/schemas/AuditDetailsEmpty"},{"type":"object","description":"При: user_updated","required":["changed_attrs"],"properties":{"changed_attrs":{"type":"array","description":"Список изменённых полей","items":{"type":"string"}},"context":{"type":"string","description":"Как было выполнено изменение. Значение `sso_login` — профиль обновился автоматически при входе через SSO. Поле отсутствует, если профиль изменили обычным способом."}},"$ref":"#/components/schemas/AuditDetailsUserUpdated"},{"type":"object","description":"При: user_role_changed","required":["new_company_role","previous_company_role","initiator_id"],"properties":{"new_company_role":{"type":"string","description":"Новая роль"},"previous_company_role":{"type":"string","description":"Предыдущая роль"},"initiator_id":{"type":"integer","format":"int32","description":"Идентификатор инициатора"}},"$ref":"#/components/schemas/AuditDetailsRoleChanged"},{"type":"object","description":"При: tag_created, tag_deleted","required":["name"],"properties":{"name":{"type":"string","description":"Название тега"}},"$ref":"#/components/schemas/AuditDetailsTagName"},{"type":"object","description":"При: user_added_to_tag, user_removed_from_tag, user_chat_leave","required":["initiator_id"],"properties":{"initiator_id":{"type":"integer","format":"int32","description":"Идентификатор инициатора действия"}},"$ref":"#/components/schemas/AuditDetailsInitiator"},{"type":"object","description":"При: user_chat_join","required":["inviter_id"],"properties":{"inviter_id":{"type":"integer","format":"int32","description":"Идентификатор пригласившего"}},"$ref":"#/components/schemas/AuditDetailsInviter"},{"type":"object","description":"При: chat_renamed","required":["old_name","new_name"],"properties":{"old_name":{"type":"string","description":"Прежнее название чата"},"new_name":{"type":"string","description":"Новое название чата"}},"$ref":"#/components/schemas/AuditDetailsChatRenamed"},{"type":"object","description":"При: chat_permission_changed","required":["public_access"],"properties":{"public_access":{"type":"boolean","description":"Публичный доступ"}},"$ref":"#/components/schemas/AuditDetailsChatPermission"},{"type":"object","description":"При: tag_added_to_chat","required":["chat_id","tag_name"],"properties":{"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата"},"tag_name":{"type":"string","description":"Название тега"}},"$ref":"#/components/schemas/AuditDetailsTagChat"},{"type":"object","description":"При: tag_removed_from_chat","required":["chat_id"],"properties":{"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата"}},"$ref":"#/components/schemas/AuditDetailsChatId"},{"type":"object","description":"При: access_token_created, access_token_updated, access_token_destroy","required":["scopes"],"properties":{"scopes":{"type":"array","description":"Скоупы токена","items":{"type":"string"}}},"$ref":"#/components/schemas/AuditDetailsTokenScopes"},{"type":"object","description":"При: kms_encrypt, kms_decrypt","required":["chat_id","message_id","reason"],"properties":{"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата"},"message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения"},"reason":{"type":"string","description":"Причина операции"}},"$ref":"#/components/schemas/AuditDetailsKms"},{"type":"object","description":"При: dlp_violation_detected","required":["dlp_rule_id","dlp_rule_name","message_id","chat_id","user_id","action_message","conditions_matched"],"properties":{"dlp_rule_id":{"type":"integer","format":"int32","description":"Идентификатор правила DLP"},"dlp_rule_name":{"type":"string","description":"Название правила DLP"},"message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения"},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата"},"user_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя"},"action_message":{"type":"string","description":"Описание действия. `null`, если у действия правила текст не задан.","nullable":true},"conditions_matched":{"type":"boolean","description":"Результат проверки условий правила (true — условия сработали)"}},"$ref":"#/components/schemas/AuditDetailsDlp"},{"type":"object","description":"При: search_users_api, search_chats_api, search_messages_api","required":["search_type","query_present","cursor_present","limit","filters"],"properties":{"search_type":{"type":"string","description":"Тип поиска"},"query_present":{"type":"boolean","description":"Указан ли поисковый запрос"},"cursor_present":{"type":"boolean","description":"Использован ли курсор"},"limit":{"type":"integer","format":"int32","description":"Количество возвращённых результатов"},"filters":{"type":"object","description":"Применённые фильтры. Возможные ключи зависят от типа поиска: order, sort, created_from, created_to, company_roles (users), active, chat_subtype, personal (chats), chat_ids, user_ids (messages).","additionalProperties":{}}},"$ref":"#/components/schemas/AuditDetailsSearch"},{"type":"object","description":"При: bot_deleted, bot_token_recreated, bot_token_created, bot_token_updated, bot_token_reissued","required":["bot_id","actor_id"],"properties":{"bot_id":{"type":"integer","format":"int32","description":"Идентификатор бота"},"actor_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора.","nullable":true}},"$ref":"#/components/schemas/AuditDetailsBot"},{"type":"object","description":"При: bot_scopes_updated","required":["bot_id","actor_id","added_scopes","removed_scopes"],"properties":{"bot_id":{"type":"integer","format":"int32","description":"Идентификатор бота"},"actor_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора.","nullable":true},"added_scopes":{"type":"array","description":"Скоупы, добавленные токену бота","items":{"type":"string"}},"removed_scopes":{"type":"array","description":"Скоупы, отозванные у токена бота","items":{"type":"string"}}},"$ref":"#/components/schemas/AuditDetailsBotScopes"},{"type":"object","description":"При: bot_webhook_settings_updated","required":["bot_id","actor_id","changes"],"properties":{"bot_id":{"type":"integer","format":"int32","description":"Идентификатор бота"},"actor_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора.","nullable":true},"changes":{"type":"object","description":"Изменённые настройки вебхука. Ключ — имя настройки (outgoing_url, ignore_self_messages, events_history_enabled), значение — объект с полями previous (прежнее значение) и new (новое значение).","additionalProperties":{}}},"$ref":"#/components/schemas/AuditDetailsBotWebhookSettings"},{"type":"object","description":"При: bot_oauth_client_updated","required":["bot_id","actor_id","client_id","changes"],"properties":{"bot_id":{"type":"integer","format":"int32","description":"Идентификатор бота"},"actor_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора.","nullable":true},"client_id":{"type":"string","description":"Идентификатор OAuth-клиента бота"},"changes":{"type":"object","description":"Изменённые параметры клиента. Ключ — имя параметра (confidential, redirect_uris, scopes), значение — объект с полями previous (прежнее значение) и new (новое значение).","additionalProperties":{}}},"$ref":"#/components/schemas/AuditDetailsBotOAuthClient"},{"type":"object","description":"При: oauth_authorization_granted","required":["client_id","scopes"],"properties":{"client_id":{"type":"string","description":"Идентификатор OAuth-клиента, которому выдан доступ"},"scopes":{"type":"array","description":"Скоупы, на которые выдан доступ","items":{"type":"string"}}},"$ref":"#/components/schemas/AuditDetailsOAuthAuthorizationGranted"},{"type":"object","description":"При: oauth_authorization_revoked","required":["client_id","revoked_tokens_count"],"properties":{"client_id":{"type":"string","description":"Идентификатор OAuth-клиента, у которого отозван доступ"},"revoked_tokens_count":{"type":"integer","format":"int32","description":"Количество отозванных токенов"}},"$ref":"#/components/schemas/AuditDetailsOAuthAuthorizationRevoked"},{"type":"object","description":"При: oauth_device_authorization_approved","required":["client_id","scopes"],"properties":{"client_id":{"type":"string","description":"Идентификатор OAuth-клиента, которому разрешён вход"},"scopes":{"type":"array","description":"Скоупы, на которые согласился сотрудник","items":{"type":"string"}}},"$ref":"#/components/schemas/AuditDetailsDeviceAuthorizationApproved"},{"type":"object","description":"При: oauth_device_authorization_denied","required":["client_id","scopes"],"properties":{"client_id":{"type":"string","description":"Идентификатор OAuth-клиента, которому отказано во входе"},"scopes":{"type":"array","description":"Скоупы, которые клиент запрашивал","items":{"type":"string"}}},"$ref":"#/components/schemas/AuditDetailsDeviceAuthorizationDenied"},{"type":"object","description":"При: video_call_started","required":["chat_id","started_message_id"],"properties":{"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором проходит видеозвонок"},"started_message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения о начале звонка. `null`, если такого сообщения нет.","nullable":true}},"$ref":"#/components/schemas/AuditDetailsVideoCallStarted"},{"type":"object","description":"При: video_call_finished","required":["chat_id","started_message_id","duration","max_members_count"],"properties":{"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором проходил видеозвонок"},"started_message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения о начале звонка. `null`, если такого сообщения нет.","nullable":true},"duration":{"type":"integer","format":"int32","description":"Длительность звонка в секундах"},"max_members_count":{"type":"integer","format":"int32","description":"Максимальное число одновременных участников за время звонка"}},"$ref":"#/components/schemas/AuditDetailsVideoCallFinished"},{"type":"object","description":"При: video_call_recording_ready","required":["chat_id","started_message_id","recording_id","file_id","duration","size"],"properties":{"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором проходил видеозвонок"},"started_message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения о начале звонка. `null`, если такого сообщения нет.","nullable":true},"recording_id":{"type":"integer","format":"int32","description":"Идентификатор записи"},"file_id":{"type":"integer","format":"int32","description":"Идентификатор файла записи"},"duration":{"type":"integer","format":"int32","description":"Длительность записи в секундах"},"size":{"type":"integer","format":"int64","description":"Размер файла записи в байтах"}},"$ref":"#/components/schemas/AuditDetailsVideoCallRecording"},{"type":"object","description":"При: bot_oauth_client_secret_rotated","required":["bot_id","actor_id","client_id"],"properties":{"bot_id":{"type":"integer","format":"int32","description":"Идентификатор бота"},"actor_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора.","nullable":true},"client_id":{"type":"string","description":"Идентификатор OAuth-клиента бота"}},"$ref":"#/components/schemas/AuditDetailsBotOAuthClientSecretRotated"},{"type":"object","description":"При: bot_oauth_client_disabled","required":["bot_id","actor_id","client_id","deleted_access_tokens_count","deleted_access_grants_count"],"properties":{"bot_id":{"type":"integer","format":"int32","description":"Идентификатор бота"},"actor_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора.","nullable":true},"client_id":{"type":"string","description":"Идентификатор OAuth-клиента бота"},"deleted_access_tokens_count":{"type":"integer","format":"int32","description":"Сколько токенов сотрудников отозвано"},"deleted_access_grants_count":{"type":"integer","format":"int32","description":"Сколько неиспользованных кодов авторизации отозвано"}},"$ref":"#/components/schemas/AuditDetailsBotOAuthClientDisabled"}],"$ref":"#/components/schemas/AuditEventDetailsUnion"}]},"ip_address":{"type":"string","description":"IP-адрес, с которого было выполнено действие. `null` у событий, записанных без запроса пользователя.","example":"192.168.1.100","nullable":true},"user_agent":{"type":"string","description":"User agent клиента, обрезается до 255 символов. `null` у событий, записанных без запроса пользователя.","example":"Pachca/3.60.0 (co.staply.pachca; build:15; iOS 18.5.0) Alamofire/5.0.0","nullable":true}},"$ref":"#/components/schemas/AuditEvent"}},"meta":{"type":"object","description":"Метаданные пагинации","required":["paginate"],"properties":{"paginate":{"type":"object","description":"Вспомогательная информация","required":["next_page"],"properties":{"next_page":{"type":"string","description":"Курсор пагинации следующей страницы","example":"eyJxZCO2MiwiZGlyIjomSNYjIn3"},"prev_page":{"type":"string","description":"Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка.","example":"eyJxZCO2MiwiZGlyIjoiYXNjIn0"},"has_next":{"type":"boolean","description":"Есть ли ещё данные на следующей странице. На последней странице — `false`.","example":true},"has_prev":{"type":"boolean","description":"Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`.","example":false}}}},"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"audit_events:read","plan":"corporation","scopeRoles":["owner"]},"paginated":true},"docs":"# Журнал аудита событий\n\n**Метод**: `GET`\n\n**Путь**: `/audit_events`\n\n> **Скоуп:** `audit_events:read`\n\n> **Внимание:** Доступно только на тарифе **Корпорация**\n\nЧто происходило в пространстве: входы и выходы, изменения ролей и настроек, действия с чатами, сотрудниками и ботами. Записи только читаются — изменить или удалить их нельзя ни через API, ни из интерфейса.\n\nМетод доступен владельцу пространства на тарифе «Корпорация», остальным сотрудникам он отвечает `403`. Само обращение к журналу тоже записывается в журнал — событием `audit_events_accessed`.\n\nСобытия приходят от новых к старым и отбираются фильтрами: период по `start_time` и `end_time`, вид события по `event_key`, инициатор по `actor_id` и `actor_type`. Без фильтров метод отдаёт все события пространства постранично.\n\n## Параметры\n\n### Query параметры\n\n- `start_time: date-time` — Начальная метка времени, включительно (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Значение, которое не удалось разобрать, фильтр снимает — ответ придёт полным, без ошибки.\n- `end_time: date-time` — Конечная метка времени, включительно (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Значение, которое не удалось разобрать, фильтр снимает — ответ придёт полным, без ошибки.\n- `event_key: string` — Фильтр по конкретному типу события\n Значения: `user_login`, `user_logout`, `user_2fa_fail`, `user_2fa_success`, `user_2fa_disabled`, `user_created`, `user_deleted`, `user_role_changed`, `user_updated`, `tag_created`, `tag_deleted`, `user_added_to_tag`, `user_removed_from_tag`, `chat_created`, `chat_renamed`, `chat_permission_changed`, `user_chat_join`, `user_chat_leave`, `tag_added_to_chat`, `tag_removed_from_chat`, `message_updated`, `message_deleted`, `message_created`, `reaction_created`, `reaction_deleted`, `thread_created`, `access_token_created`, `access_token_updated`, `access_token_destroy`, `kms_encrypt`, `kms_decrypt`, `audit_events_accessed`, `company_chats_accessed`, `company_bots_accessed`, `dlp_violation_detected`, `search_users_api`, `search_chats_api`, `search_messages_api`, `bot_scopes_updated`, `bot_webhook_settings_updated`, `bot_token_recreated`, `bot_deleted`, `bot_oauth_client_updated`, `bot_oauth_client_disabled`, `bot_oauth_client_secret_rotated`, `bot_token_created`, `bot_token_updated`, `bot_token_reissued`, `oauth_authorization_granted`, `oauth_authorization_revoked`, `oauth_device_authorization_approved`, `oauth_device_authorization_denied`, `video_call_started`, `video_call_finished`, `video_call_recording_ready`, `exchange_disabled`\n- `actor_id: string` — Идентификатор пользователя, выполнившего действие\n- `actor_type: string` — Тип актора\n- `entity_id: string` — Идентификатор затронутой сущности\n- `entity_type: string` — Тип сущности\n- `limit: integer, int32` (default: 50) — Количество записей для возврата\n- `cursor: string` — Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n\n## Пример запроса\n\n```bash\n# Для получения следующей страницы используйте cursor из meta.paginate.next_page\ncurl \"https://api.pachca.com/api/shared/v1/audit_events?start_time=2025-05-01T09:11:00.000Z&end_time=2025-05-02T09:11:00.000Z&event_key=user_login&actor_id=98765&actor_type=User&entity_id=98765&entity_type=User&limit=1\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: array of object` (required)\n - `id: string` (required) — Уникальный идентификатор события. Пример: `\"a1b2c3d4-5e6f-7g8h-9i10-j11k12l13m14\"`\n - `created_at: date-time` (required) — Дата и время создания события (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2025-05-15T14:30:00.000Z\"`\n - `event_key: string` (required) — Ключ типа события\n Значения: `user_login` — Пользователь успешно вошел в систему, `user_logout` — Пользователь вышел из системы, `user_2fa_fail` — Неудачная попытка двухфакторной аутентификации, `user_2fa_success` — Успешная двухфакторная аутентификация, `user_2fa_disabled` — Двухфакторная аутентификация отключена у сотрудника, `user_created` — Создана новая учетная запись пользователя, `user_deleted` — Учетная запись пользователя удалена, `user_role_changed` — Роль пользователя была изменена, `user_updated` — Данные пользователя обновлены, `tag_created` — Создан новый тег, `tag_deleted` — Тег удален, `user_added_to_tag` — Пользователь добавлен в тег, `user_removed_from_tag` — Пользователь удален из тега, `chat_created` — Создан новый чат, `chat_renamed` — Чат переименован, `chat_permission_changed` — Изменены права доступа к чату, `user_chat_join` — Пользователь присоединился к чату, `user_chat_leave` — Пользователь покинул чат, `tag_added_to_chat` — Тег добавлен в чат, `tag_removed_from_chat` — Тег удален из чата, `message_updated` — Сообщение отредактировано, `message_deleted` — Сообщение удалено, `message_created` — Сообщение создано, `reaction_created` — Реакция добавлена, `reaction_deleted` — Реакция удалена, `thread_created` — Тред создан, `access_token_created` — Создан новый токен доступа, `access_token_updated` — Токен доступа обновлен, `access_token_destroy` — Токен доступа удален, `kms_encrypt` — Данные зашифрованы, `kms_decrypt` — Данные расшифрованы, `audit_events_accessed` — Доступ к журналам аудита получен, `company_chats_accessed` — Получен список всех чатов пространства, `company_bots_accessed` — Получен список всех ботов пространства, `dlp_violation_detected` — Срабатывание правила DLP-системы, `search_users_api` — Поиск сотрудников через API, `search_chats_api` — Поиск чатов через API, `search_messages_api` — Поиск сообщений через API, `bot_scopes_updated` — Изменены скоупы токена бота, `bot_webhook_settings_updated` — Изменены настройки исходящего вебхука бота, `bot_token_recreated` — Токен бота перевыпущен (ротация), `bot_deleted` — Бот удалён, `bot_oauth_client_updated` — Изменены параметры OAuth-клиента бота, `bot_oauth_client_disabled` — У бота выключена авторизация от имени сотрудника, `bot_oauth_client_secret_rotated` — Обновлён секрет OAuth-клиента бота, `bot_token_created` — Выпущен токен бота, `bot_token_updated` — Изменены имя или скоупы токена бота, `bot_token_reissued` — Отдельный токен бота перевыпущен, `oauth_authorization_granted` — Пользователь выдал OAuth-клиенту доступ к своим данным, `oauth_authorization_revoked` — Доступ OAuth-клиента к данным пользователя отозван, `oauth_device_authorization_approved` — Сотрудник подтвердил вход приложения с устройства, `oauth_device_authorization_denied` — Сотрудник отклонил вход приложения с устройства, `video_call_started` — Видеозвонок начат, `video_call_finished` — Видеозвонок завершён, `video_call_recording_ready` — Запись видеозвонка готова, `exchange_disabled` — Отключена интеграция с Exchange\n - `entity_id: string` (required) — Идентификатор затронутой сущности. Пример: `\"98765\"`\n - `entity_type: string` (required) — Тип затронутой сущности. Пример: `\"User\"`\n - `actor_id: string` (required) — Идентификатор пользователя, выполнившего действие. Пример: `\"98765\"`\n - `actor_type: string` (required) — Тип актора. Пример: `\"User\"`\n - `details: anyOf` (required) — Дополнительные детали события. Структура зависит от значения event_key — см. описания значений поля event_key. Для событий без деталей возвращается пустой объект.\n **Возможные варианты:**\n\n - **AuditDetailsEmpty**: Пустые детали. При: user_login, user_logout, user_2fa_fail, user_2fa_success, user_2fa_disabled, user_created, user_deleted, chat_created, message_created, message_updated, message_deleted, reaction_created, reaction_deleted, thread_created, audit_events_accessed, company_chats_accessed, company_bots_accessed, exchange_disabled.\n - **AuditDetailsUserUpdated**: При: user_updated\n - `changed_attrs: array of string` (required) — Список изменённых полей\n - `context: string` — Как было выполнено изменение. Значение `sso_login` — профиль обновился автоматически при входе через SSO. Поле отсутствует, если профиль изменили обычным способом.\n - **AuditDetailsRoleChanged**: При: user_role_changed\n - `new_company_role: string` (required) — Новая роль\n - `previous_company_role: string` (required) — Предыдущая роль\n - `initiator_id: integer, int32` (required) — Идентификатор инициатора\n - **AuditDetailsTagName**: При: tag_created, tag_deleted\n - `name: string` (required) — Название тега\n - **AuditDetailsInitiator**: При: user_added_to_tag, user_removed_from_tag, user_chat_leave\n - `initiator_id: integer, int32` (required) — Идентификатор инициатора действия\n - **AuditDetailsInviter**: При: user_chat_join\n - `inviter_id: integer, int32` (required) — Идентификатор пригласившего\n - **AuditDetailsChatRenamed**: При: chat_renamed\n - `old_name: string` (required) — Прежнее название чата\n - `new_name: string` (required) — Новое название чата\n - **AuditDetailsChatPermission**: При: chat_permission_changed\n - `public_access: boolean` (required) — Публичный доступ\n - **AuditDetailsTagChat**: При: tag_added_to_chat\n - `chat_id: integer, int32` (required) — Идентификатор чата\n - `tag_name: string` (required) — Название тега\n - **AuditDetailsChatId**: При: tag_removed_from_chat\n - `chat_id: integer, int32` (required) — Идентификатор чата\n - **AuditDetailsTokenScopes**: При: access_token_created, access_token_updated, access_token_destroy\n - `scopes: array of string` (required) — Скоупы токена\n - **AuditDetailsKms**: При: kms_encrypt, kms_decrypt\n - `chat_id: integer, int32` (required) — Идентификатор чата\n - `message_id: integer, int32` (required) — Идентификатор сообщения\n - `reason: string` (required) — Причина операции\n - **AuditDetailsDlp**: При: dlp_violation_detected\n - `dlp_rule_id: integer, int32` (required) — Идентификатор правила DLP\n - `dlp_rule_name: string` (required) — Название правила DLP\n - `message_id: integer, int32` (required) — Идентификатор сообщения\n - `chat_id: integer, int32` (required) — Идентификатор чата\n - `user_id: integer, int32` (required) — Идентификатор пользователя\n - `action_message: string` (required, nullable) — Описание действия. `null`, если у действия правила текст не задан.\n - `conditions_matched: boolean` (required) — Результат проверки условий правила (true — условия сработали)\n - **AuditDetailsSearch**: При: search_users_api, search_chats_api, search_messages_api\n - `search_type: string` (required) — Тип поиска\n - `query_present: boolean` (required) — Указан ли поисковый запрос\n - `cursor_present: boolean` (required) — Использован ли курсор\n - `limit: integer, int32` (required) — Количество возвращённых результатов\n - `filters: Record` (required) — Применённые фильтры. Возможные ключи зависят от типа поиска: order, sort, created_from, created_to, company_roles (users), active, chat_subtype, personal (chats), chat_ids, user_ids (messages).\n **Структура значений Record:**\n - Тип значения: `any`\n - **AuditDetailsBot**: При: bot_deleted, bot_token_recreated, bot_token_created, bot_token_updated, bot_token_reissued\n - `bot_id: integer, int32` (required) — Идентификатор бота\n - `actor_id: integer, int32` (required, nullable) — Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора.\n - **AuditDetailsBotScopes**: При: bot_scopes_updated\n - `bot_id: integer, int32` (required) — Идентификатор бота\n - `actor_id: integer, int32` (required, nullable) — Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора.\n - `added_scopes: array of string` (required) — Скоупы, добавленные токену бота\n - `removed_scopes: array of string` (required) — Скоупы, отозванные у токена бота\n - **AuditDetailsBotWebhookSettings**: При: bot_webhook_settings_updated\n - `bot_id: integer, int32` (required) — Идентификатор бота\n - `actor_id: integer, int32` (required, nullable) — Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора.\n - `changes: Record` (required) — Изменённые настройки вебхука. Ключ — имя настройки (outgoing_url, ignore_self_messages, events_history_enabled), значение — объект с полями previous (прежнее значение) и new (новое значение).\n **Структура значений Record:**\n - Тип значения: `any`\n - **AuditDetailsBotOAuthClient**: При: bot_oauth_client_updated\n - `bot_id: integer, int32` (required) — Идентификатор бота\n - `actor_id: integer, int32` (required, nullable) — Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора.\n - `client_id: string` (required) — Идентификатор OAuth-клиента бота\n - `changes: Record` (required) — Изменённые параметры клиента. Ключ — имя параметра (confidential, redirect_uris, scopes), значение — объект с полями previous (прежнее значение) и new (новое значение).\n **Структура значений Record:**\n - Тип значения: `any`\n - **AuditDetailsOAuthAuthorizationGranted**: При: oauth_authorization_granted\n - `client_id: string` (required) — Идентификатор OAuth-клиента, которому выдан доступ\n - `scopes: array of string` (required) — Скоупы, на которые выдан доступ\n - **AuditDetailsOAuthAuthorizationRevoked**: При: oauth_authorization_revoked\n - `client_id: string` (required) — Идентификатор OAuth-клиента, у которого отозван доступ\n - `revoked_tokens_count: integer, int32` (required) — Количество отозванных токенов\n - **AuditDetailsDeviceAuthorizationApproved**: При: oauth_device_authorization_approved\n - `client_id: string` (required) — Идентификатор OAuth-клиента, которому разрешён вход\n - `scopes: array of string` (required) — Скоупы, на которые согласился сотрудник\n - **AuditDetailsDeviceAuthorizationDenied**: При: oauth_device_authorization_denied\n - `client_id: string` (required) — Идентификатор OAuth-клиента, которому отказано во входе\n - `scopes: array of string` (required) — Скоупы, которые клиент запрашивал\n - **AuditDetailsVideoCallStarted**: При: video_call_started\n - `chat_id: integer, int32` (required) — Идентификатор чата, в котором проходит видеозвонок\n - `started_message_id: integer, int32` (required, nullable) — Идентификатор сообщения о начале звонка. `null`, если такого сообщения нет.\n - **AuditDetailsVideoCallFinished**: При: video_call_finished\n - `chat_id: integer, int32` (required) — Идентификатор чата, в котором проходил видеозвонок\n - `started_message_id: integer, int32` (required, nullable) — Идентификатор сообщения о начале звонка. `null`, если такого сообщения нет.\n - `duration: integer, int32` (required) — Длительность звонка в секундах\n - `max_members_count: integer, int32` (required) — Максимальное число одновременных участников за время звонка\n - **AuditDetailsVideoCallRecording**: При: video_call_recording_ready\n - `chat_id: integer, int32` (required) — Идентификатор чата, в котором проходил видеозвонок\n - `started_message_id: integer, int32` (required, nullable) — Идентификатор сообщения о начале звонка. `null`, если такого сообщения нет.\n - `recording_id: integer, int32` (required) — Идентификатор записи\n - `file_id: integer, int32` (required) — Идентификатор файла записи\n - `duration: integer, int32` (required) — Длительность записи в секундах\n - `size: integer, int64` (required) — Размер файла записи в байтах\n - **AuditDetailsBotOAuthClientSecretRotated**: При: bot_oauth_client_secret_rotated\n - `bot_id: integer, int32` (required) — Идентификатор бота\n - `actor_id: integer, int32` (required, nullable) — Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора.\n - `client_id: string` (required) — Идентификатор OAuth-клиента бота\n - **AuditDetailsBotOAuthClientDisabled**: При: bot_oauth_client_disabled\n - `bot_id: integer, int32` (required) — Идентификатор бота\n - `actor_id: integer, int32` (required, nullable) — Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора.\n - `client_id: string` (required) — Идентификатор OAuth-клиента бота\n - `deleted_access_tokens_count: integer, int32` (required) — Сколько токенов сотрудников отозвано\n - `deleted_access_grants_count: integer, int32` (required) — Сколько неиспользованных кодов авторизации отозвано\n - `ip_address: string` (required, nullable) — IP-адрес, с которого было выполнено действие. `null` у событий, записанных без запроса пользователя. Пример: `\"192.168.1.100\"`\n - `user_agent: string` (required, nullable) — User agent клиента, обрезается до 255 символов. `null` у событий, записанных без запроса пользователя. Пример: `\"Pachca/3.60.0 (co.staply.pachca; build:15; iOS 18.5.0) Alamofire/5.0.0\"`\n- `meta: object` (required) — Метаданные пагинации\n - `paginate: object` (required) — Вспомогательная информация\n - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `\"eyJxZCO2MiwiZGlyIjomSNYjIn3\"`\n - `prev_page: string` — Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка. Пример: `\"eyJxZCO2MiwiZGlyIjoiYXNjIn0\"`\n - `has_next: boolean` — Есть ли ещё данные на следующей странице. На последней странице — `false`. Пример: `true`\n - `has_prev: boolean` — Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`. Пример: `false`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": [\n {\n \"id\": \"a1b2c3d4-5e6f-7g8h-9i10-j11k12l13m14\",\n \"created_at\": \"2025-05-15T14:30:00.000Z\",\n \"event_key\": \"user_login\",\n \"entity_id\": \"98765\",\n \"entity_type\": \"User\",\n \"actor_id\": \"98765\",\n \"actor_type\": \"User\",\n \"details\": null,\n \"ip_address\": \"192.168.1.100\",\n \"user_agent\": \"Pachca/3.60.0 (co.staply.pachca; build:15; iOS 18.5.0) Alamofire/5.0.0\"\n }\n ],\n \"meta\": {\n \"paginate\": {\n \"next_page\": \"eyJxZCO2MiwiZGlyIjomSNYjIn3\",\n \"prev_page\": \"eyJxZCO2MiwiZGlyIjoiYXNjIn0\",\n \"has_next\": true,\n \"has_prev\": false\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"POST","path":"/bot/recreate_token","summary":"Ротация собственного токена бота","scope":"bot_self:write","plan":null,"auth":true,"paginated":false,"command":"pachca bots recreate-token-self","docLink":"https://dev.pachca.com/api/bots/recreate-token-self","describe":"# POST /bot/recreate_token — Ротация собственного токена бота\n\n> **Скоуп:** `bot_self:write`\n\n## Эквивалентная команда\n\n```bash\npachca bots recreate-token-self \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/bots/recreate-token-self\nПолная справка: `pachca api POST /bot/recreate_token --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/bot/recreate_token","description":"Ротация собственного токена бота\n\nМетод позволяет боту сгенерировать себе новый `access_token` своим же токеном — без участия администратора и без знания собственного `id`.\n\nПеревыпускается основной токен бота — тот, что без имени, а если такого нет, самый старый, и он инвалидируется сразу. Если бот ходит отдельным токеном, этот токен остаётся прежним.\n\nНовый токен возвращается в ответе один раз — обязательно сохраните его, иначе бот потеряет доступ к API. Скоупы переносятся с прежнего токена.","parameters":[],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Параметры бота с новым токеном","required":["id","oauth_client","webhook","access_token"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор бота (совпадает с `user_id` бота)","example":1738816},"oauth_client":{"type":"object","description":"Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией. У бота без токенов может прийти `null`.","nullable":true,"allOf":[{"type":"object","description":"Авторизация от имени сотрудника","required":["client_id","client_secret_preview","confidential","redirect_uris","scopes"],"properties":{"client_id":{"type":"string","description":"Идентификатор клиента для ссылки авторизации","example":"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY"},"client_secret_preview":{"type":"string","description":"Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета.","example":"cH5kR9mN...x7Qp"},"confidential":{"type":"boolean","description":"Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE","example":true},"redirect_uris":{"type":"array","description":"Адреса возврата после согласия","example":["https://example.com/oauth/callback"],"items":{"type":"string"}},"scopes":{"type":"array","description":"Права, которые бот запрашивает у сотрудника на экране согласия","example":["messages:read","messages:create"],"items":{"type":"string"}}},"$ref":"#/components/schemas/BotOAuthClient"}]},"webhook":{"description":"Объект параметров вебхука","allOf":[{"type":"object","description":"Параметры вебхука бота в ответах методов самого бота","required":["name","nickname","outgoing_url","events","trigger_on","commands","scopes","template","template_engine","challenge_key","link_preview_enabled","ignore_self_messages","events_history_enabled","single_chat","can_edit","who_can_add"],"properties":{"name":{"type":"string","description":"Имя бота","example":"Бот задач","maxLength":255},"nickname":{"type":"string","description":"Никнейм бота","example":"tasks_bot","maxLength":255},"outgoing_url":{"type":"string","description":"URL исходящего вебхука. `null`, если исходящий вебхук у бота не настроен.","example":"https://www.website.com/tasks/new","nullable":true},"events":{"type":"array","description":"События, на которые подписан бот","example":["message_new"],"items":{"type":"string","description":"Событие исходящего вебхука бота","enum":["message_new","message_update","message_delete","reaction_new","reaction_delete","button_click","message_link_shared","chat_member_add","chat_member_remove","company_member_invite","company_member_confirm","company_member_suspend","company_member_activate","company_member_delete","company_member_update","video_call_started","video_call_finished","video_call_recording_ready"],"x-enum-descriptions":{"message_new":"Новое сообщение","message_update":"Сообщение отредактировано","message_delete":"Сообщение удалено","reaction_new":"Добавлена реакция","reaction_delete":"Реакция удалена","button_click":"Нажата кнопка","message_link_shared":"В сообщении отправлена ссылка (для unfurl)","chat_member_add":"Участник добавлен в чат","chat_member_remove":"Участник удалён из чата","company_member_invite":"Сотрудник приглашён в компанию","company_member_confirm":"Сотрудник подтвердил приглашение","company_member_suspend":"Сотрудник деактивирован","company_member_activate":"Сотрудник активирован","company_member_delete":"Сотрудник удалён из компании","company_member_update":"Данные сотрудника изменены","video_call_started":"Видеозвонок начался","video_call_finished":"Видеозвонок завершился","video_call_recording_ready":"Запись видеозвонка готова"},"$ref":"#/components/schemas/BotEventName"}},"trigger_on":{"description":"Условие срабатывания исходящего вебхука","example":"commands","allOf":[{"type":"string","description":"Условие срабатывания исходящего вебхука бота","enum":["commands","all_messages","unfurl"],"x-enum-descriptions":{"commands":"Только на команды (триггер-слова) из commands","all_messages":"На все сообщения в чатах, где есть бот","unfurl":"На развёртывание ссылок (link previews)"},"$ref":"#/components/schemas/BotTriggerOn"}]},"commands":{"type":"array","description":"Команды бота (триггер-слова)","example":["/task"],"items":{"type":"string"}},"scopes":{"type":"array","description":"Скоупы (права доступа) токена бота. Набор по умолчанию шире того, что можно назначить явно, поэтому здесь могут встречаться значения, недоступные для явной установки.","example":["messages:create"],"items":{"type":"string"}},"template":{"type":"string","description":"Шаблон форматирования входящего вебхука. `null`, если не задан.","example":"Заказ от {{ client }} на сумму {{ amount }} ₽","nullable":true},"template_engine":{"description":"Шаблонизатор для обработки шаблона входящего вебхука","example":"liquid","allOf":[{"type":"string","description":"Шаблонизатор для форматирования входящих вебхуков","enum":["liquid","mustache"],"x-enum-descriptions":{"liquid":"Liquid — условия, циклы и фильтры","mustache":"Mustache — простая подстановка без логики"},"$ref":"#/components/schemas/BotTemplateEngine"}]},"challenge_key":{"type":"string","description":"Название поля проверки для верификации входящего вебхука. `null`, если не задано.","example":"challenge","nullable":true},"link_preview_enabled":{"type":"boolean","description":"Показывать превью ссылок в сообщениях входящего вебхука","example":true},"ignore_self_messages":{"type":"boolean","description":"Игнорировать входящие сообщения, отправленные самим ботом","example":false},"events_history_enabled":{"type":"boolean","description":"Сохранять историю событий бота для последующего получения через метод истории событий","example":false},"single_chat":{"type":"boolean","description":"Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят.","example":false},"can_edit":{"type":"array","description":"Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель.","example":["admin"],"items":{"type":"string","description":"Роль, которой разрешено редактировать настройки бота","enum":["admin","chat_owners"],"x-enum-descriptions":{"admin":"Администраторы компании","chat_owners":"Владельцы чатов, в которые добавлен бот"},"$ref":"#/components/schemas/BotCanEdit"}},"who_can_add":{"description":"Кто может добавлять бота в чаты","example":"creator","allOf":[{"type":"string","description":"Кто может добавлять бота в чаты","enum":["creator","creator_admin","creator_admin_user","anyone"],"x-enum-descriptions":{"creator":"Только создатель бота","creator_admin":"Создатель и администраторы компании","creator_admin_user":"Создатель, администраторы и участники компании","anyone":"Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей"},"$ref":"#/components/schemas/BotWhoCanAdd"}]}},"$ref":"#/components/schemas/BotSelfWebhook"}]},"access_token":{"type":"string","description":"Новый токен бота. Возвращается один раз.","example":"bm90X2FfcmVhbF90b2tlbg"}},"$ref":"#/components/schemas/BotSelfTokenResponse"}}},"example":{"data":{"id":1738816,"oauth_client":{"client_id":"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY","client_secret_preview":"dGhpc19p...ZWNy","confidential":true,"redirect_uris":["https://example.com/oauth/callback"],"scopes":["messages:read","messages:create"]},"webhook":{"name":"Бот задач","nickname":"tasks_bot","outgoing_url":"https://www.website.com/tasks/new","events":["message_new"],"trigger_on":"commands","commands":["/task"],"scopes":["messages:create"],"template":"Заказ от {{ client }} на сумму {{ amount }} ₽","template_engine":"liquid","challenge_key":"challenge","link_preview_enabled":true,"ignore_self_messages":false,"events_history_enabled":false,"single_chat":false,"can_edit":["admin"],"who_can_add":"creator"},"access_token":"bm90X2FfcmVhbF90b2tlbg"}}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"bot_self:write","scopeRoles":["bot"]},"paginated":false},"docs":"# Ротация собственного токена бота\n\n**Метод**: `POST`\n\n**Путь**: `/bot/recreate_token`\n\n> **Скоуп:** `bot_self:write`\n\nМетод позволяет боту сгенерировать себе новый `access_token` своим же токеном — без участия администратора и без знания собственного `id`.\n\nПеревыпускается основной токен бота — тот, что без имени, а если такого нет, самый старый, и он инвалидируется сразу. Если бот ходит отдельным токеном, этот токен остаётся прежним.\n\nНовый токен возвращается в ответе один раз — обязательно сохраните его, иначе бот потеряет доступ к API. Скоупы переносятся с прежнего токена.\n\n## Пример запроса\n\n```bash\ncurl -X POST \"https://api.pachca.com/api/shared/v1/bot/recreate_token\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Параметры бота с новым токеном\n - `id: integer, int32` (required) — Идентификатор бота (совпадает с `user_id` бота). Пример: `1738816`\n - `oauth_client: object` (required) — Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией. У бота без токенов может прийти `null`.\n - `client_id: string` (required) — Идентификатор клиента для ссылки авторизации. Пример: `\"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY\"`\n - `client_secret_preview: string` (required) — Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета. Пример: `\"cH5kR9mN...x7Qp\"`\n - `confidential: boolean` (required) — Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE. Пример: `true`\n - `redirect_uris: array of string` (required) — Адреса возврата после согласия. Пример: `[\"https://example.com/oauth/callback\"]`\n - `scopes: array of string` (required) — Права, которые бот запрашивает у сотрудника на экране согласия. Пример: `[\"messages:read\",\"messages:create\"]`\n - `webhook: object` (required) — Объект параметров вебхука\n - `name: string` (required, max length: 255) — Имя бота. Пример: `\"Бот задач\"`\n - `nickname: string` (required, max length: 255) — Никнейм бота. Пример: `\"tasks_bot\"`\n - `outgoing_url: string` (required, nullable) — URL исходящего вебхука. `null`, если исходящий вебхук у бота не настроен. Пример: `\"https://www.website.com/tasks/new\"`\n - `events: array of string` (required) — События, на которые подписан бот. Пример: `[\"message_new\"]`\n - `trigger_on: string` (required) — Условие срабатывания исходящего вебхука\n Значения: `commands` — Только на команды (триггер-слова) из commands, `all_messages` — На все сообщения в чатах, где есть бот, `unfurl` — На развёртывание ссылок (link previews)\n - `commands: array of string` (required) — Команды бота (триггер-слова). Пример: `[\"/task\"]`\n - `scopes: array of string` (required) — Скоупы (права доступа) токена бота. Набор по умолчанию шире того, что можно назначить явно, поэтому здесь могут встречаться значения, недоступные для явной установки. Пример: `[\"messages:create\"]`\n - `template: string` (required, nullable) — Шаблон форматирования входящего вебхука. `null`, если не задан. Пример: `\"Заказ от {{ client }} на сумму {{ amount }} ₽\"`\n - `template_engine: string` (required) — Шаблонизатор для обработки шаблона входящего вебхука\n Значения: `liquid` — Liquid — условия, циклы и фильтры, `mustache` — Mustache — простая подстановка без логики\n - `challenge_key: string` (required, nullable) — Название поля проверки для верификации входящего вебхука. `null`, если не задано. Пример: `\"challenge\"`\n - `link_preview_enabled: boolean` (required) — Показывать превью ссылок в сообщениях входящего вебхука. Пример: `true`\n - `ignore_self_messages: boolean` (required) — Игнорировать входящие сообщения, отправленные самим ботом. Пример: `false`\n - `events_history_enabled: boolean` (required) — Сохранять историю событий бота для последующего получения через метод истории событий. Пример: `false`\n - `single_chat: boolean` (required) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false`\n - `can_edit: array of string` (required) — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `[\"admin\"]`\n - `who_can_add: string` (required) — Кто может добавлять бота в чаты\n Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей\n - `access_token: string` (required) — Новый токен бота. Возвращается один раз. Пример: `\"bm90X2FfcmVhbF90b2tlbg\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 1738816,\n \"oauth_client\": {\n \"client_id\": \"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY\",\n \"client_secret_preview\": \"dGhpc19p...ZWNy\",\n \"confidential\": true,\n \"redirect_uris\": [\n \"https://example.com/oauth/callback\"\n ],\n \"scopes\": [\n \"messages:read\",\n \"messages:create\"\n ]\n },\n \"webhook\": {\n \"name\": \"Бот задач\",\n \"nickname\": \"tasks_bot\",\n \"outgoing_url\": \"https://www.website.com/tasks/new\",\n \"events\": [\n \"message_new\"\n ],\n \"trigger_on\": \"commands\",\n \"commands\": [\n \"/task\"\n ],\n \"scopes\": [\n \"messages:create\"\n ],\n \"template\": \"Заказ от {{ client }} на сумму {{ amount }} ₽\",\n \"template_engine\": \"liquid\",\n \"challenge_key\": \"challenge\",\n \"link_preview_enabled\": true,\n \"ignore_self_messages\": false,\n \"events_history_enabled\": false,\n \"single_chat\": false,\n \"can_edit\": [\n \"admin\"\n ],\n \"who_can_add\": \"creator\"\n },\n \"access_token\": \"bm90X2FfcmVhbF90b2tlbg\"\n }\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"PUT","path":"/bot/webhook","summary":"Саморегистрация вебхука бота","scope":"bot_self:webhook:write","plan":null,"auth":true,"paginated":false,"command":"pachca bots update-webhook","docLink":"https://dev.pachca.com/api/bots/update-webhook","describe":"# PUT /bot/webhook — Саморегистрация вебхука бота\n\n> **Скоуп:** `bot_self:webhook:write`\n\n## Тело запроса\n\n- `webhook: object` (required) — Объект параметров вебхука\n - `outgoing_url: string` (required) — URL исходящего вебхука. Пустая строка отключает вебхук.\n\n## Эквивалентная команда\n\n```bash\npachca bots update-webhook \\\n --outgoing-url=https://www.website.com/tasks/new \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/bots/update-webhook\nПолная справка: `pachca api PUT /bot/webhook --docs` · схема: `--spec`\n","spec":{"method":"PUT","path":"/bot/webhook","description":"Саморегистрация вебхука бота\n\nМетод позволяет боту самостоятельно изменить `URL` своего исходящего вебхука своим же токеном — без участия администратора и без знания собственного `id`. Меняется вебхук того бота, которому принадлежит токен. Чтобы отключить вебхук, передайте пустую строку в `outgoing_url`.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на саморегистрацию вебхука бота","required":["webhook"],"properties":{"webhook":{"type":"object","description":"Объект параметров вебхука","required":["outgoing_url"],"properties":{"outgoing_url":{"type":"string","description":"URL исходящего вебхука. Пустая строка отключает вебхук.","example":"https://www.website.com/tasks/new"}}}},"$ref":"#/components/schemas/BotWebhookSelfUpdateRequest"},"example":{"webhook":{"outgoing_url":"https://www.website.com/tasks/new"}}}}},"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Параметры бота в ответах методов самого бота","required":["id","oauth_client","webhook"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор бота (совпадает с `user_id` бота)","example":1738816},"oauth_client":{"type":"object","description":"Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией. У бота без токенов может прийти `null`.","nullable":true,"allOf":[{"type":"object","description":"Авторизация от имени сотрудника","required":["client_id","client_secret_preview","confidential","redirect_uris","scopes"],"properties":{"client_id":{"type":"string","description":"Идентификатор клиента для ссылки авторизации","example":"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY"},"client_secret_preview":{"type":"string","description":"Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета.","example":"cH5kR9mN...x7Qp"},"confidential":{"type":"boolean","description":"Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE","example":true},"redirect_uris":{"type":"array","description":"Адреса возврата после согласия","example":["https://example.com/oauth/callback"],"items":{"type":"string"}},"scopes":{"type":"array","description":"Права, которые бот запрашивает у сотрудника на экране согласия","example":["messages:read","messages:create"],"items":{"type":"string"}}},"$ref":"#/components/schemas/BotOAuthClient"}]},"webhook":{"description":"Объект параметров вебхука","allOf":[{"type":"object","description":"Параметры вебхука бота в ответах методов самого бота","required":["name","nickname","outgoing_url","events","trigger_on","commands","scopes","template","template_engine","challenge_key","link_preview_enabled","ignore_self_messages","events_history_enabled","single_chat","can_edit","who_can_add"],"properties":{"name":{"type":"string","description":"Имя бота","example":"Бот задач","maxLength":255},"nickname":{"type":"string","description":"Никнейм бота","example":"tasks_bot","maxLength":255},"outgoing_url":{"type":"string","description":"URL исходящего вебхука. `null`, если исходящий вебхук у бота не настроен.","example":"https://www.website.com/tasks/new","nullable":true},"events":{"type":"array","description":"События, на которые подписан бот","example":["message_new"],"items":{"type":"string","description":"Событие исходящего вебхука бота","enum":["message_new","message_update","message_delete","reaction_new","reaction_delete","button_click","message_link_shared","chat_member_add","chat_member_remove","company_member_invite","company_member_confirm","company_member_suspend","company_member_activate","company_member_delete","company_member_update","video_call_started","video_call_finished","video_call_recording_ready"],"x-enum-descriptions":{"message_new":"Новое сообщение","message_update":"Сообщение отредактировано","message_delete":"Сообщение удалено","reaction_new":"Добавлена реакция","reaction_delete":"Реакция удалена","button_click":"Нажата кнопка","message_link_shared":"В сообщении отправлена ссылка (для unfurl)","chat_member_add":"Участник добавлен в чат","chat_member_remove":"Участник удалён из чата","company_member_invite":"Сотрудник приглашён в компанию","company_member_confirm":"Сотрудник подтвердил приглашение","company_member_suspend":"Сотрудник деактивирован","company_member_activate":"Сотрудник активирован","company_member_delete":"Сотрудник удалён из компании","company_member_update":"Данные сотрудника изменены","video_call_started":"Видеозвонок начался","video_call_finished":"Видеозвонок завершился","video_call_recording_ready":"Запись видеозвонка готова"},"$ref":"#/components/schemas/BotEventName"}},"trigger_on":{"description":"Условие срабатывания исходящего вебхука","example":"commands","allOf":[{"type":"string","description":"Условие срабатывания исходящего вебхука бота","enum":["commands","all_messages","unfurl"],"x-enum-descriptions":{"commands":"Только на команды (триггер-слова) из commands","all_messages":"На все сообщения в чатах, где есть бот","unfurl":"На развёртывание ссылок (link previews)"},"$ref":"#/components/schemas/BotTriggerOn"}]},"commands":{"type":"array","description":"Команды бота (триггер-слова)","example":["/task"],"items":{"type":"string"}},"scopes":{"type":"array","description":"Скоупы (права доступа) токена бота. Набор по умолчанию шире того, что можно назначить явно, поэтому здесь могут встречаться значения, недоступные для явной установки.","example":["messages:create"],"items":{"type":"string"}},"template":{"type":"string","description":"Шаблон форматирования входящего вебхука. `null`, если не задан.","example":"Заказ от {{ client }} на сумму {{ amount }} ₽","nullable":true},"template_engine":{"description":"Шаблонизатор для обработки шаблона входящего вебхука","example":"liquid","allOf":[{"type":"string","description":"Шаблонизатор для форматирования входящих вебхуков","enum":["liquid","mustache"],"x-enum-descriptions":{"liquid":"Liquid — условия, циклы и фильтры","mustache":"Mustache — простая подстановка без логики"},"$ref":"#/components/schemas/BotTemplateEngine"}]},"challenge_key":{"type":"string","description":"Название поля проверки для верификации входящего вебхука. `null`, если не задано.","example":"challenge","nullable":true},"link_preview_enabled":{"type":"boolean","description":"Показывать превью ссылок в сообщениях входящего вебхука","example":true},"ignore_self_messages":{"type":"boolean","description":"Игнорировать входящие сообщения, отправленные самим ботом","example":false},"events_history_enabled":{"type":"boolean","description":"Сохранять историю событий бота для последующего получения через метод истории событий","example":false},"single_chat":{"type":"boolean","description":"Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят.","example":false},"can_edit":{"type":"array","description":"Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель.","example":["admin"],"items":{"type":"string","description":"Роль, которой разрешено редактировать настройки бота","enum":["admin","chat_owners"],"x-enum-descriptions":{"admin":"Администраторы компании","chat_owners":"Владельцы чатов, в которые добавлен бот"},"$ref":"#/components/schemas/BotCanEdit"}},"who_can_add":{"description":"Кто может добавлять бота в чаты","example":"creator","allOf":[{"type":"string","description":"Кто может добавлять бота в чаты","enum":["creator","creator_admin","creator_admin_user","anyone"],"x-enum-descriptions":{"creator":"Только создатель бота","creator_admin":"Создатель и администраторы компании","creator_admin_user":"Создатель, администраторы и участники компании","anyone":"Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей"},"$ref":"#/components/schemas/BotWhoCanAdd"}]}},"$ref":"#/components/schemas/BotSelfWebhook"}]}},"$ref":"#/components/schemas/BotSelfResponse"}}},"example":{"data":{"id":1738816,"oauth_client":{"client_id":"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY","client_secret_preview":"dGhpc19p...ZWNy","confidential":true,"redirect_uris":["https://example.com/oauth/callback"],"scopes":["messages:read","messages:create"]},"webhook":{"name":"Бот задач","nickname":"tasks_bot","outgoing_url":"https://www.website.com/tasks/new","events":["message_new"],"trigger_on":"commands","commands":["/task"],"scopes":["messages:create"],"template":"Заказ от {{ client }} на сумму {{ amount }} ₽","template_engine":"liquid","challenge_key":"challenge","link_preview_enabled":true,"ignore_self_messages":false,"events_history_enabled":false,"single_chat":false,"can_edit":["admin"],"who_can_add":"creator"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"bot_self:webhook:write","scopeRoles":["bot"]},"paginated":false},"docs":"# Саморегистрация вебхука бота\n\n**Метод**: `PUT`\n\n**Путь**: `/bot/webhook`\n\n> **Скоуп:** `bot_self:webhook:write`\n\nМетод позволяет боту самостоятельно изменить `URL` своего исходящего вебхука своим же токеном — без участия администратора и без знания собственного `id`. Меняется вебхук того бота, которому принадлежит токен. Чтобы отключить вебхук, передайте пустую строку в `outgoing_url`.\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `webhook: object` (required) — Объект параметров вебхука\n - `outgoing_url: string` (required) — URL исходящего вебхука. Пустая строка отключает вебхук. Пример: `\"https://www.website.com/tasks/new\"`\n\n### Пример\n\n```json\n{\n \"webhook\": {\n \"outgoing_url\": \"https://www.website.com/tasks/new\"\n }\n}\n```\n\n## Пример запроса\n\n```bash\ncurl -X PUT \"https://api.pachca.com/api/shared/v1/bot/webhook\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"webhook\": {\n \"outgoing_url\": \"https://www.website.com/tasks/new\"\n }\n}'\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Параметры бота в ответах методов самого бота\n - `id: integer, int32` (required) — Идентификатор бота (совпадает с `user_id` бота). Пример: `1738816`\n - `oauth_client: object` (required) — Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией. У бота без токенов может прийти `null`.\n - `client_id: string` (required) — Идентификатор клиента для ссылки авторизации. Пример: `\"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY\"`\n - `client_secret_preview: string` (required) — Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета. Пример: `\"cH5kR9mN...x7Qp\"`\n - `confidential: boolean` (required) — Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE. Пример: `true`\n - `redirect_uris: array of string` (required) — Адреса возврата после согласия. Пример: `[\"https://example.com/oauth/callback\"]`\n - `scopes: array of string` (required) — Права, которые бот запрашивает у сотрудника на экране согласия. Пример: `[\"messages:read\",\"messages:create\"]`\n - `webhook: object` (required) — Объект параметров вебхука\n - `name: string` (required, max length: 255) — Имя бота. Пример: `\"Бот задач\"`\n - `nickname: string` (required, max length: 255) — Никнейм бота. Пример: `\"tasks_bot\"`\n - `outgoing_url: string` (required, nullable) — URL исходящего вебхука. `null`, если исходящий вебхук у бота не настроен. Пример: `\"https://www.website.com/tasks/new\"`\n - `events: array of string` (required) — События, на которые подписан бот. Пример: `[\"message_new\"]`\n - `trigger_on: string` (required) — Условие срабатывания исходящего вебхука\n Значения: `commands` — Только на команды (триггер-слова) из commands, `all_messages` — На все сообщения в чатах, где есть бот, `unfurl` — На развёртывание ссылок (link previews)\n - `commands: array of string` (required) — Команды бота (триггер-слова). Пример: `[\"/task\"]`\n - `scopes: array of string` (required) — Скоупы (права доступа) токена бота. Набор по умолчанию шире того, что можно назначить явно, поэтому здесь могут встречаться значения, недоступные для явной установки. Пример: `[\"messages:create\"]`\n - `template: string` (required, nullable) — Шаблон форматирования входящего вебхука. `null`, если не задан. Пример: `\"Заказ от {{ client }} на сумму {{ amount }} ₽\"`\n - `template_engine: string` (required) — Шаблонизатор для обработки шаблона входящего вебхука\n Значения: `liquid` — Liquid — условия, циклы и фильтры, `mustache` — Mustache — простая подстановка без логики\n - `challenge_key: string` (required, nullable) — Название поля проверки для верификации входящего вебхука. `null`, если не задано. Пример: `\"challenge\"`\n - `link_preview_enabled: boolean` (required) — Показывать превью ссылок в сообщениях входящего вебхука. Пример: `true`\n - `ignore_self_messages: boolean` (required) — Игнорировать входящие сообщения, отправленные самим ботом. Пример: `false`\n - `events_history_enabled: boolean` (required) — Сохранять историю событий бота для последующего получения через метод истории событий. Пример: `false`\n - `single_chat: boolean` (required) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false`\n - `can_edit: array of string` (required) — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `[\"admin\"]`\n - `who_can_add: string` (required) — Кто может добавлять бота в чаты\n Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 1738816,\n \"oauth_client\": {\n \"client_id\": \"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY\",\n \"client_secret_preview\": \"dGhpc19p...ZWNy\",\n \"confidential\": true,\n \"redirect_uris\": [\n \"https://example.com/oauth/callback\"\n ],\n \"scopes\": [\n \"messages:read\",\n \"messages:create\"\n ]\n },\n \"webhook\": {\n \"name\": \"Бот задач\",\n \"nickname\": \"tasks_bot\",\n \"outgoing_url\": \"https://www.website.com/tasks/new\",\n \"events\": [\n \"message_new\"\n ],\n \"trigger_on\": \"commands\",\n \"commands\": [\n \"/task\"\n ],\n \"scopes\": [\n \"messages:create\"\n ],\n \"template\": \"Заказ от {{ client }} на сумму {{ amount }} ₽\",\n \"template_engine\": \"liquid\",\n \"challenge_key\": \"challenge\",\n \"link_preview_enabled\": true,\n \"ignore_self_messages\": false,\n \"events_history_enabled\": false,\n \"single_chat\": false,\n \"can_edit\": [\n \"admin\"\n ],\n \"who_can_add\": \"creator\"\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/bots","summary":"Список ботов","scope":"bots:read","plan":null,"auth":true,"paginated":true,"command":"pachca bots list","docLink":"https://dev.pachca.com/api/bots/list","describe":"# GET /bots — Список ботов\n\n> **Скоуп:** `bots:read`\n\n> Пагинация: добавьте `--all` для автоматического обхода страниц\n\n## Параметры\n\n- `query` — query: Поисковая фраза для фильтрации ботов по имени\n- `limit` — query: Количество возвращаемых сущностей за один запрос\n- `cursor` — query: Курсор для пагинации (из `meta.paginate.next_page`)\n\n## Эквивалентная команда\n\n```bash\n# Добавьте --all для автоматической пагинации\npachca bots list \\\n --query=задач \\\n --limit=1 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/bots/list\nПолная справка: `pachca api GET /bots --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/bots","description":"Список ботов\n\nБоты, которых вызывающий вправе настраивать: созданные им самим и те, чьи настройки открывают ему доступ к редактированию.\n\nПараметр `query` отбирает ботов по части имени, без опечаток. Токены ботов в списке не приходят: значение токена показывают один раз, а сами токены бота отдаёт [Список токенов бота](GET /bots/{id}/tokens).\n\nПеречень всех ботов пространства, включая чужих, доступен владельцу на тарифе «Корпорация» — [Список ботов пространства](GET /company/bots). Там чужие боты приходят с одними лишь именем и ником, остальные настройки скрыты.","parameters":[{"name":"query","in":"query","description":"Поисковая фраза для фильтрации ботов по имени","required":false,"schema":{"type":"string","example":"задач"},"example":"задач","explode":false},{"name":"limit","in":"query","description":"Количество возвращаемых сущностей за один запрос","required":false,"schema":{"type":"integer","format":"int32","default":50,"example":1,"minimum":1,"maximum":50},"example":1,"explode":false},{"name":"cursor","in":"query","description":"Курсор для пагинации (из `meta.paginate.next_page`)","required":false,"schema":{"type":"string","example":"eyJpZCI6MTczODgxNn0"},"example":"eyJpZCI6MTczODgxNn0","explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными и пагинацией","required":["data","meta"],"properties":{"data":{"type":"array","items":{"type":"object","description":"Параметры бота","required":["id","name","nickname","avatar_url","creator_id","created_at","authorized_users_count","last_used_at","webhook","oauth_client_enabled","oauth_client","promo","permissions"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор бота (совпадает с `user_id` бота)","example":1738816},"name":{"type":"string","description":"Имя бота","example":"Бот задач"},"nickname":{"type":"string","description":"Никнейм бота","example":"tasks_bot"},"avatar_url":{"type":"string","description":"Ссылка на аватар бота. `null`, если аватар не задан.","example":"https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg","nullable":true},"creator_id":{"type":"integer","format":"int32","description":"Идентификатор сотрудника, создавшего бота. `null`, если создатель не записан.","example":12,"nullable":true},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2025-05-15T14:30:00.000Z"},"authorized_users_count":{"type":"integer","format":"int32","description":"Сколько сотрудников авторизовали бота","example":3},"last_used_at":{"type":"string","format":"date-time","description":"Дата и время, когда бот последний раз работал (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ: запрос на входящий вебхук или вызов API любым токеном бота, включая токены сотрудников. `null`, если такого не было. Использование токена учитывается не чаще раза в час.","example":"2025-05-15T14:30:00.000Z","nullable":true},"webhook":{"description":"Объект параметров вебхука","allOf":[{"type":"object","description":"Параметры вебхука бота","required":["name","nickname","outgoing_url","events","trigger_on","commands","scopes","template","template_engine","challenge_key","link_preview_enabled","ignore_self_messages","events_history_enabled","single_chat","can_edit","who_can_add","kind","unfurl_domains","last_request_at"],"properties":{"name":{"type":"string","description":"Имя бота","example":"Бот задач","maxLength":255},"nickname":{"type":"string","description":"Никнейм бота","example":"tasks_bot","maxLength":255},"outgoing_url":{"type":"string","description":"URL исходящего вебхука. `null`, если исходящий вебхук у бота не настроен.","example":"https://www.website.com/tasks/new","nullable":true},"events":{"type":"array","description":"События, на которые подписан бот","example":["message_new"],"items":{"type":"string","description":"Событие исходящего вебхука бота","enum":["message_new","message_update","message_delete","reaction_new","reaction_delete","button_click","message_link_shared","chat_member_add","chat_member_remove","company_member_invite","company_member_confirm","company_member_suspend","company_member_activate","company_member_delete","company_member_update","video_call_started","video_call_finished","video_call_recording_ready"],"x-enum-descriptions":{"message_new":"Новое сообщение","message_update":"Сообщение отредактировано","message_delete":"Сообщение удалено","reaction_new":"Добавлена реакция","reaction_delete":"Реакция удалена","button_click":"Нажата кнопка","message_link_shared":"В сообщении отправлена ссылка (для unfurl)","chat_member_add":"Участник добавлен в чат","chat_member_remove":"Участник удалён из чата","company_member_invite":"Сотрудник приглашён в компанию","company_member_confirm":"Сотрудник подтвердил приглашение","company_member_suspend":"Сотрудник деактивирован","company_member_activate":"Сотрудник активирован","company_member_delete":"Сотрудник удалён из компании","company_member_update":"Данные сотрудника изменены","video_call_started":"Видеозвонок начался","video_call_finished":"Видеозвонок завершился","video_call_recording_ready":"Запись видеозвонка готова"},"$ref":"#/components/schemas/BotEventName"}},"trigger_on":{"description":"Условие срабатывания исходящего вебхука","example":"commands","allOf":[{"type":"string","description":"Условие срабатывания исходящего вебхука бота","enum":["commands","all_messages","unfurl"],"x-enum-descriptions":{"commands":"Только на команды (триггер-слова) из commands","all_messages":"На все сообщения в чатах, где есть бот","unfurl":"На развёртывание ссылок (link previews)"},"$ref":"#/components/schemas/BotTriggerOn"}]},"commands":{"type":"array","description":"Команды бота (триггер-слова)","example":["/task"],"items":{"type":"string"}},"scopes":{"type":"array","description":"Скоупы (права доступа) токена бота. Набор по умолчанию шире того, что можно назначить явно, поэтому здесь могут встречаться значения, недоступные для явной установки.","example":["messages:create"],"items":{"type":"string"}},"template":{"type":"string","description":"Шаблон форматирования входящего вебхука. `null`, если не задан.","example":"Заказ от {{ client }} на сумму {{ amount }} ₽","nullable":true},"template_engine":{"description":"Шаблонизатор для обработки шаблона входящего вебхука","example":"liquid","allOf":[{"type":"string","description":"Шаблонизатор для форматирования входящих вебхуков","enum":["liquid","mustache"],"x-enum-descriptions":{"liquid":"Liquid — условия, циклы и фильтры","mustache":"Mustache — простая подстановка без логики"},"$ref":"#/components/schemas/BotTemplateEngine"}]},"challenge_key":{"type":"string","description":"Название поля проверки для верификации входящего вебхука. `null`, если не задано.","example":"challenge","nullable":true},"link_preview_enabled":{"type":"boolean","description":"Показывать превью ссылок в сообщениях входящего вебхука","example":true},"ignore_self_messages":{"type":"boolean","description":"Игнорировать входящие сообщения, отправленные самим ботом","example":false},"events_history_enabled":{"type":"boolean","description":"Сохранять историю событий бота для последующего получения через метод истории событий","example":false},"single_chat":{"type":"boolean","description":"Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят.","example":false},"can_edit":{"type":"array","description":"Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель.","example":["admin"],"items":{"type":"string","description":"Роль, которой разрешено редактировать настройки бота","enum":["admin","chat_owners"],"x-enum-descriptions":{"admin":"Администраторы компании","chat_owners":"Владельцы чатов, в которые добавлен бот"},"$ref":"#/components/schemas/BotCanEdit"}},"who_can_add":{"description":"Кто может добавлять бота в чаты","example":"creator","allOf":[{"type":"string","description":"Кто может добавлять бота в чаты","enum":["creator","creator_admin","creator_admin_user","anyone"],"x-enum-descriptions":{"creator":"Только создатель бота","creator_admin":"Создатель и администраторы компании","creator_admin_user":"Создатель, администраторы и участники компании","anyone":"Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей"},"$ref":"#/components/schemas/BotWhoCanAdd"}]},"kind":{"description":"Источник входящего вебхука. `null`, если входящий вебхук у бота выключен.","example":"simple","nullable":true,"allOf":[{"type":"string","description":"Источник входящего вебхука бота","enum":["simple","gitlab","grafana"],"x-enum-descriptions":{"simple":"Свой формат: сообщение собирается из тела запроса по шаблону бота","gitlab":"GitLab: Пачка сама разбирает запрос и собирает сообщение","grafana":"Grafana: Пачка сама разбирает запрос и собирает сообщение"},"$ref":"#/components/schemas/BotWebhookKind"}]},"unfurl_domains":{"type":"array","description":"Домены, ссылки на которые бот разворачивает","example":["example.com"],"items":{"type":"string"}},"last_request_at":{"type":"string","format":"date-time","description":"Дата и время последнего запроса на входящий вебхук бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если запросов не было.","example":"2025-05-15T14:30:00.000Z","nullable":true}},"$ref":"#/components/schemas/BotWebhook"}]},"oauth_client_enabled":{"type":"boolean","description":"Включена ли у бота авторизация от имени сотрудника","example":true},"oauth_client":{"type":"object","description":"Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией, поэтому включена ли она, смотрите в `oauth_client_enabled`. У бота без токенов может прийти `null`.","nullable":true,"allOf":[{"type":"object","description":"Авторизация от имени сотрудника","required":["client_id","client_secret_preview","confidential","redirect_uris","scopes"],"properties":{"client_id":{"type":"string","description":"Идентификатор клиента для ссылки авторизации","example":"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY"},"client_secret_preview":{"type":"string","description":"Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета.","example":"cH5kR9mN...x7Qp"},"confidential":{"type":"boolean","description":"Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE","example":true},"redirect_uris":{"type":"array","description":"Адреса возврата после согласия","example":["https://example.com/oauth/callback"],"items":{"type":"string"}},"scopes":{"type":"array","description":"Права, которые бот запрашивает у сотрудника на экране согласия","example":["messages:read","messages:create"],"items":{"type":"string"}}},"$ref":"#/components/schemas/BotOAuthClient"}]},"promo":{"type":"object","description":"Страница бота в витрине. `null`, если авторизация у бота выключена.","nullable":true,"allOf":[{"type":"object","description":"Страница бота в витрине","required":["description","published","promo_images"],"properties":{"description":{"type":"string","description":"Описание бота. `null`, если не задано.","example":"Собирает сводку по задачам Jira и присылает её в чат","nullable":true},"published":{"type":"boolean","description":"Опубликован ли бот в витрине","example":true},"promo_images":{"type":"array","description":"Скриншоты страницы бота","items":{"type":"object","description":"Скриншот страницы бота в витрине","required":["key","url"],"properties":{"key":{"type":"string","description":"Ключ изображения","example":"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"},"url":{"type":"string","description":"Ссылка на изображение","example":"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"}},"$ref":"#/components/schemas/BotPromoImage"}}},"$ref":"#/components/schemas/BotPromo"}]},"permissions":{"description":"Что вы можете делать с этим ботом","allOf":[{"type":"object","description":"Что текущий пользователь может делать с ботом","required":["update_oauth_client","recreate_token","destroy"],"properties":{"update_oauth_client":{"type":"boolean","description":"Менять авторизацию от имени сотрудника, страницу в витрине и имя бота","example":true},"recreate_token":{"type":"boolean","description":"Выпускать, менять и удалять токены бота и обновлять секрет клиента","example":true},"destroy":{"type":"boolean","description":"Удалить бота","example":true}},"$ref":"#/components/schemas/BotPermissions"}]},"client_secret":{"type":"string","description":"Секрет клиента. Приходит один раз: при включении серверного клиента, при переходе на него и при ротации секрета.","example":"dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA"}},"$ref":"#/components/schemas/BotResponse"}},"meta":{"type":"object","description":"Метаданные пагинации","required":["paginate"],"properties":{"paginate":{"type":"object","description":"Вспомогательная информация","required":["next_page"],"properties":{"next_page":{"type":"string","description":"Курсор пагинации следующей страницы","example":"eyJxZCO2MiwiZGlyIjomSNYjIn3"},"prev_page":{"type":"string","description":"Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка.","example":"eyJxZCO2MiwiZGlyIjoiYXNjIn0"},"has_next":{"type":"boolean","description":"Есть ли ещё данные на следующей странице. На последней странице — `false`.","example":true},"has_prev":{"type":"boolean","description":"Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`.","example":false}}}},"$ref":"#/components/schemas/PaginationMeta"}}},"example":{"data":[{"id":1738816,"name":"Бот задач","nickname":"tasks_bot","avatar_url":null,"creator_id":12,"created_at":"2025-05-15T14:30:00.000Z","authorized_users_count":3,"last_used_at":"2025-05-20T09:15:00.000Z","webhook":{"name":"Бот задач","nickname":"tasks_bot","outgoing_url":"https://www.website.com/tasks/new","events":["message_new"],"trigger_on":"commands","commands":["/task"],"scopes":["messages:create"],"template":"Заказ от {{ client }} на сумму {{ amount }} ₽","template_engine":"liquid","challenge_key":"challenge","link_preview_enabled":true,"ignore_self_messages":false,"events_history_enabled":false,"single_chat":false,"can_edit":["admin"],"who_can_add":"creator","kind":"simple","unfurl_domains":[],"last_request_at":"2025-05-20T09:15:00.000Z"},"oauth_client_enabled":true,"oauth_client":{"client_id":"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY","client_secret_preview":"dGhpc19p...ZWNy","confidential":true,"redirect_uris":["https://example.com/oauth/callback"],"scopes":["messages:read","messages:create"]},"promo":{"description":"Собирает сводку по задачам и присылает её в чат","published":true,"promo_images":[]},"permissions":{"update_oauth_client":true,"recreate_token":true,"destroy":true}}],"meta":{"paginate":{"next_page":"eyJpZCI6MTczODgxNn0"}}}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}}},"requirements":{"scope":"bots:read","scopeRoles":["owner","admin","user"]},"paginated":true},"docs":"# Список ботов\n\n**Метод**: `GET`\n\n**Путь**: `/bots`\n\n> **Скоуп:** `bots:read`\n\nБоты, которых вызывающий вправе настраивать: созданные им самим и те, чьи настройки открывают ему доступ к редактированию.\n\nПараметр `query` отбирает ботов по части имени, без опечаток. Токены ботов в списке не приходят: значение токена показывают один раз, а сами токены бота отдаёт [Список токенов бота](GET /bots/{id}/tokens).\n\nПеречень всех ботов пространства, включая чужих, доступен владельцу на тарифе «Корпорация» — [Список ботов пространства](GET /company/bots). Там чужие боты приходят с одними лишь именем и ником, остальные настройки скрыты.\n\n## Параметры\n\n### Query параметры\n\n- `query: string` — Поисковая фраза для фильтрации ботов по имени\n- `limit: integer, int32` (default: 50) — Количество возвращаемых сущностей за один запрос\n- `cursor: string` — Курсор для пагинации (из `meta.paginate.next_page`)\n\n\n## Пример запроса\n\n```bash\n# Для получения следующей страницы используйте cursor из meta.paginate.next_page\ncurl \"https://api.pachca.com/api/shared/v1/bots?query=задач&limit=1\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: array of object` (required)\n - `id: integer, int32` (required) — Идентификатор бота (совпадает с `user_id` бота). Пример: `1738816`\n - `name: string` (required) — Имя бота. Пример: `\"Бот задач\"`\n - `nickname: string` (required) — Никнейм бота. Пример: `\"tasks_bot\"`\n - `avatar_url: string` (required, nullable) — Ссылка на аватар бота. `null`, если аватар не задан. Пример: `\"https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg\"`\n - `creator_id: integer, int32` (required, nullable) — Идентификатор сотрудника, создавшего бота. `null`, если создатель не записан. Пример: `12`\n - `created_at: date-time` (required) — Дата и время создания бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2025-05-15T14:30:00.000Z\"`\n - `authorized_users_count: integer, int32` (required) — Сколько сотрудников авторизовали бота. Пример: `3`\n - `last_used_at: date-time` (required, nullable) — Дата и время, когда бот последний раз работал (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ: запрос на входящий вебхук или вызов API любым токеном бота, включая токены сотрудников. `null`, если такого не было. Использование токена учитывается не чаще раза в час. Пример: `\"2025-05-15T14:30:00.000Z\"`\n - `webhook: object` (required) — Объект параметров вебхука\n - `name: string` (required, max length: 255) — Имя бота. Пример: `\"Бот задач\"`\n - `nickname: string` (required, max length: 255) — Никнейм бота. Пример: `\"tasks_bot\"`\n - `outgoing_url: string` (required, nullable) — URL исходящего вебхука. `null`, если исходящий вебхук у бота не настроен. Пример: `\"https://www.website.com/tasks/new\"`\n - `events: array of string` (required) — События, на которые подписан бот. Пример: `[\"message_new\"]`\n - `trigger_on: string` (required) — Условие срабатывания исходящего вебхука\n Значения: `commands` — Только на команды (триггер-слова) из commands, `all_messages` — На все сообщения в чатах, где есть бот, `unfurl` — На развёртывание ссылок (link previews)\n - `commands: array of string` (required) — Команды бота (триггер-слова). Пример: `[\"/task\"]`\n - `scopes: array of string` (required) — Скоупы (права доступа) токена бота. Набор по умолчанию шире того, что можно назначить явно, поэтому здесь могут встречаться значения, недоступные для явной установки. Пример: `[\"messages:create\"]`\n - `template: string` (required, nullable) — Шаблон форматирования входящего вебхука. `null`, если не задан. Пример: `\"Заказ от {{ client }} на сумму {{ amount }} ₽\"`\n - `template_engine: string` (required) — Шаблонизатор для обработки шаблона входящего вебхука\n Значения: `liquid` — Liquid — условия, циклы и фильтры, `mustache` — Mustache — простая подстановка без логики\n - `challenge_key: string` (required, nullable) — Название поля проверки для верификации входящего вебхука. `null`, если не задано. Пример: `\"challenge\"`\n - `link_preview_enabled: boolean` (required) — Показывать превью ссылок в сообщениях входящего вебхука. Пример: `true`\n - `ignore_self_messages: boolean` (required) — Игнорировать входящие сообщения, отправленные самим ботом. Пример: `false`\n - `events_history_enabled: boolean` (required) — Сохранять историю событий бота для последующего получения через метод истории событий. Пример: `false`\n - `single_chat: boolean` (required) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false`\n - `can_edit: array of string` (required) — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `[\"admin\"]`\n - `who_can_add: string` (required) — Кто может добавлять бота в чаты\n Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей\n - `kind: string` (required) — Источник входящего вебхука. `null`, если входящий вебхук у бота выключен.\n Значения: `simple` — Свой формат: сообщение собирается из тела запроса по шаблону бота, `gitlab` — GitLab: Пачка сама разбирает запрос и собирает сообщение, `grafana` — Grafana: Пачка сама разбирает запрос и собирает сообщение\n - `unfurl_domains: array of string` (required) — Домены, ссылки на которые бот разворачивает. Пример: `[\"example.com\"]`\n - `last_request_at: date-time` (required, nullable) — Дата и время последнего запроса на входящий вебхук бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если запросов не было. Пример: `\"2025-05-15T14:30:00.000Z\"`\n - `oauth_client_enabled: boolean` (required) — Включена ли у бота авторизация от имени сотрудника. Пример: `true`\n - `oauth_client: object` (required) — Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией, поэтому включена ли она, смотрите в `oauth_client_enabled`. У бота без токенов может прийти `null`.\n - `client_id: string` (required) — Идентификатор клиента для ссылки авторизации. Пример: `\"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY\"`\n - `client_secret_preview: string` (required) — Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета. Пример: `\"cH5kR9mN...x7Qp\"`\n - `confidential: boolean` (required) — Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE. Пример: `true`\n - `redirect_uris: array of string` (required) — Адреса возврата после согласия. Пример: `[\"https://example.com/oauth/callback\"]`\n - `scopes: array of string` (required) — Права, которые бот запрашивает у сотрудника на экране согласия. Пример: `[\"messages:read\",\"messages:create\"]`\n - `promo: object` (required) — Страница бота в витрине. `null`, если авторизация у бота выключена.\n - `description: string` (required, nullable) — Описание бота. `null`, если не задано. Пример: `\"Собирает сводку по задачам Jira и присылает её в чат\"`\n - `published: boolean` (required) — Опубликован ли бот в витрине. Пример: `true`\n - `promo_images: array of object` (required) — Скриншоты страницы бота\n - `key: string` (required) — Ключ изображения. Пример: `\"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png\"`\n - `url: string` (required) — Ссылка на изображение. Пример: `\"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png\"`\n - `permissions: object` (required) — Что вы можете делать с этим ботом\n - `update_oauth_client: boolean` (required) — Менять авторизацию от имени сотрудника, страницу в витрине и имя бота. Пример: `true`\n - `recreate_token: boolean` (required) — Выпускать, менять и удалять токены бота и обновлять секрет клиента. Пример: `true`\n - `destroy: boolean` (required) — Удалить бота. Пример: `true`\n - `client_secret: string` — Секрет клиента. Приходит один раз: при включении серверного клиента, при переходе на него и при ротации секрета. Пример: `\"dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA\"`\n- `meta: object` (required) — Метаданные пагинации\n - `paginate: object` (required) — Вспомогательная информация\n - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `\"eyJxZCO2MiwiZGlyIjomSNYjIn3\"`\n - `prev_page: string` — Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка. Пример: `\"eyJxZCO2MiwiZGlyIjoiYXNjIn0\"`\n - `has_next: boolean` — Есть ли ещё данные на следующей странице. На последней странице — `false`. Пример: `true`\n - `has_prev: boolean` — Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`. Пример: `false`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": [\n {\n \"id\": 1738816,\n \"name\": \"Бот задач\",\n \"nickname\": \"tasks_bot\",\n \"avatar_url\": null,\n \"creator_id\": 12,\n \"created_at\": \"2025-05-15T14:30:00.000Z\",\n \"authorized_users_count\": 3,\n \"last_used_at\": \"2025-05-20T09:15:00.000Z\",\n \"webhook\": {\n \"name\": \"Бот задач\",\n \"nickname\": \"tasks_bot\",\n \"outgoing_url\": \"https://www.website.com/tasks/new\",\n \"events\": [\n \"message_new\"\n ],\n \"trigger_on\": \"commands\",\n \"commands\": [\n \"/task\"\n ],\n \"scopes\": [\n \"messages:create\"\n ],\n \"template\": \"Заказ от {{ client }} на сумму {{ amount }} ₽\",\n \"template_engine\": \"liquid\",\n \"challenge_key\": \"challenge\",\n \"link_preview_enabled\": true,\n \"ignore_self_messages\": false,\n \"events_history_enabled\": false,\n \"single_chat\": false,\n \"can_edit\": [\n \"admin\"\n ],\n \"who_can_add\": \"creator\",\n \"kind\": \"simple\",\n \"unfurl_domains\": [],\n \"last_request_at\": \"2025-05-20T09:15:00.000Z\"\n },\n \"oauth_client_enabled\": true,\n \"oauth_client\": {\n \"client_id\": \"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY\",\n \"client_secret_preview\": \"dGhpc19p...ZWNy\",\n \"confidential\": true,\n \"redirect_uris\": [\n \"https://example.com/oauth/callback\"\n ],\n \"scopes\": [\n \"messages:read\",\n \"messages:create\"\n ]\n },\n \"promo\": {\n \"description\": \"Собирает сводку по задачам и присылает её в чат\",\n \"published\": true,\n \"promo_images\": []\n },\n \"permissions\": {\n \"update_oauth_client\": true,\n \"recreate_token\": true,\n \"destroy\": true\n }\n }\n ],\n \"meta\": {\n \"paginate\": {\n \"next_page\": \"eyJpZCI6MTczODgxNn0\"\n }\n }\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n"},{"method":"POST","path":"/bots","summary":"Новый бот","scope":"bots:write","plan":null,"auth":true,"paginated":false,"command":"pachca bots create","docLink":"https://dev.pachca.com/api/bots/create","describe":"# POST /bots — Новый бот\n\n> **Скоуп:** `bots:write`\n\n## Тело запроса\n\n- `empty: boolean` (default: false) — Создать пустого бота: без токена и без входящего вебхука. Без этого поля бот создаётся с входящим вебхуком в своём формате, а его токен приходит в `access_token`.\n- `webhook: object` (required) — Объект параметров вебхука создаваемого бота\n - `name: string` (required, max length: 255) — Имя бота\n - `nickname: string` (max length: 255) — Никнейм бота. Должен заканчиваться на `_bot`.\n - `outgoing_url: string` — URL исходящего вебхука\n - `events: array of string` — События, на которые подписан бот\n - `trigger_on: string` — Условие срабатывания исходящего вебхука\n Значения: `commands` — Только на команды (триггер-слова) из commands, `all_messages` — На все сообщения в чатах, где есть бот, `unfurl` — На развёртывание ссылок (link previews)\n - `commands: array of string` — Команды бота (триггер-слова), на которые он реагирует при trigger_on = commands. Суммарная длина команд, объединённых через запятую, не должна превышать 255 символов.\n - `scopes: array of string` — Скоупы (права доступа) токена бота. Если не указано, бот получает набор по умолчанию. Боту доступны не все скоупы: часть из них разрешена только пользовательским ролям, и попытка назначить такой скоуп возвращает `400`. Служебные значения `bot` и `all` назначать нельзя.\n - `template: string` — Шаблон форматирования входящего вебхука\n - `template_engine: string` — Шаблонизатор для обработки шаблона входящего вебхука\n Значения: `liquid` — Liquid — условия, циклы и фильтры, `mustache` — Mustache — простая подстановка без логики\n - `challenge_key: string` — Название поля проверки для верификации входящего вебхука\n - `link_preview_enabled: boolean` (default: true) — Показывать превью ссылок в сообщениях входящего вебхука\n - `ignore_self_messages: boolean` (default: false) — Игнорировать входящие сообщения, отправленные самим ботом\n - `events_history_enabled: boolean` (default: false) — Сохранять историю событий бота для последующего получения через метод истории событий\n - `who_can_add: string` — Кто может добавлять бота в чаты\n Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей\n - `can_edit: array of string` — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель.\n - `single_chat: boolean` (default: false) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят.\n - `kind: string` — Источник входящего вебхука. Без `empty` по умолчанию `simple`, а у пустого бота входящий вебхук включается только этим полем.\n Значения: `simple` — Свой формат: сообщение собирается из тела запроса по шаблону бота, `gitlab` — GitLab: Пачка сама разбирает запрос и собирает сообщение, `grafana` — Grafana: Пачка сама разбирает запрос и собирает сообщение\n - `unfurl_domains: array of string` — Домены, ссылки на которые бот разворачивает, не больше 5. Работают вместе с событием `message_link_shared`.\n- `oauth_client: object` — Включить авторизацию от имени сотрудника сразу при создании\n - `confidential: boolean` — Где хранится секрет: `true` — серверное приложение хранит `client_secret` и обменивает код у себя, `false` — приложение без секрета (браузер, мобильное, CLI) обменивает код по PKCE. Если не передать, значение не меняется, а у нового клиента — `true`.\n - `redirect_uris: array of string` — Адреса возврата после согласия. HTTPS обязателен, кроме адресов на этом же компьютере (`localhost`, `127.0.0.1`). Адрес в ссылке авторизации должен совпадать с одним из списка точно, у `localhost` и `127.0.0.1` порт не сравнивается. При включении передайте хотя бы один адрес. Список заменяется целиком.\n - `scopes: array of string` — Права, которые бот запрашивает у сотрудника на экране согласия. Доступны только права, которые можно выдать самому боту. Если при включении поле не передать, запрашиваются все права бота. Список заменяется целиком.\n- `promo: object` — Страница бота в витрине. Задаётся только вместе с `oauth_client`: без авторизации страницы у бота нет.\n - `description: string` — Описание: чем бот занимается и зачем его подключать. Без описания бота нельзя опубликовать.\n - `published: boolean` — Опубликовать бота в витрине: он появится карточкой на вкладке «Обзор». Публикация требует описания.\n - `promo_images: array of string` — Скриншоты страницы бота, не больше 5: ключи загруженных изображений (`key` из [Получение подписи, ключа и других параметров](POST /uploads)). Список заменяется целиком, порядок сохраняется.\n\n## Эквивалентная команда\n\n```bash\npachca bots create \\\n --name='Бот задач' \\\n --nickname=tasks_bot \\\n --outgoing-url=https://www.website.com/tasks/new \\\n --events='[\"message_new\"]' \\\n --commands='[\"/task\",\"/help\"]' \\\n --scopes='[\"messages:create\"]' \\\n --template='Заказ от {{ client }} на сумму {{ amount }} ₽' \\\n --challenge-key=challenge \\\n --can-edit='[\"admin\"]' \\\n --kind=simple \\\n --unfurl-domains='[\"example.com\"]' \\\n --oauth-client='{\"confidential\":true,\"redirect_uris\":[\"https://example.com/oauth/callback\"],\"scopes\":[\"messages:read\",\"messages:create\"]}' \\\n --promo='{\"description\":\"Собирает сводку по задачам Jira и присылает её в чат\",\"published\":true,\"promo_images\":[\"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png\"]}' \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/bots/create\nПолная справка: `pachca api POST /bots --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/bots","description":"Новый бот\n\nСоздаёт бота в пространстве. По умолчанию бот получает входящий вебхук в своём формате и сразу отдаёт свой `access_token`. Сохраните токен при создании: тот же самый повторно не показывают, останется перевыпустить его методом [Ротация токена бота](POST /bots/{id}/recreate_token).\n\nС `empty: true` создаётся пустой бот, как в интерфейсе: только имя и ник, без токена и без входящего вебхука. Токены ему выпускают методом [Новый токен бота](POST /bots/{id}/tokens), а входящий вебхук включают полем `kind` в объекте `webhook`.\n\nСозданный бот ещё никуда не пишет. В беседу и канал он пишет только как участник, а добавляют его как сотрудника — методом [Добавление пользователей](POST /chats/{id}/members), передав `id` бота. В канале бот получает роль редактора. Личные сообщения и треды в открытых чатах членства не требуют.\n\nВходящий вебхук бота отправляет сообщение сразу во все беседы и каналы, где бот состоит, поэтому набор его чатов и решает, куда оно попадёт. Токен для этого не нужен, достаточно адреса вебхука. Чтобы написать в один конкретный чат, берите метод [Новое сообщение](POST /messages) — вот там токен уже нужен.\n\nАвторизацию от имени сотрудника можно включить сразу, передав `oauth_client`, а страницу в витрине заполнить в `promo`. У серверного клиента секрет приходит в `client_secret` один раз. Подробнее — в разделе [Настройка авторизации](/guides/oauth/setup).\n\nНик обязан заканчиваться на `_bot` и быть свободным в пространстве.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на создание бота","required":["webhook"],"properties":{"empty":{"type":"boolean","description":"Создать пустого бота: без токена и без входящего вебхука. Без этого поля бот создаётся с входящим вебхуком в своём формате, а его токен приходит в `access_token`.","default":false,"example":false},"webhook":{"type":"object","description":"Объект параметров вебхука создаваемого бота","required":["name"],"properties":{"name":{"type":"string","description":"Имя бота","example":"Бот задач","maxLength":255},"nickname":{"type":"string","description":"Никнейм бота. Должен заканчиваться на `_bot`.","example":"tasks_bot","maxLength":255},"outgoing_url":{"type":"string","description":"URL исходящего вебхука","example":"https://www.website.com/tasks/new"},"events":{"type":"array","description":"События, на которые подписан бот","example":["message_new"],"items":{"type":"string","description":"Событие исходящего вебхука бота","enum":["message_new","message_update","message_delete","reaction_new","reaction_delete","button_click","message_link_shared","chat_member_add","chat_member_remove","company_member_invite","company_member_confirm","company_member_suspend","company_member_activate","company_member_delete","company_member_update","video_call_started","video_call_finished","video_call_recording_ready"],"x-enum-descriptions":{"message_new":"Новое сообщение","message_update":"Сообщение отредактировано","message_delete":"Сообщение удалено","reaction_new":"Добавлена реакция","reaction_delete":"Реакция удалена","button_click":"Нажата кнопка","message_link_shared":"В сообщении отправлена ссылка (для unfurl)","chat_member_add":"Участник добавлен в чат","chat_member_remove":"Участник удалён из чата","company_member_invite":"Сотрудник приглашён в компанию","company_member_confirm":"Сотрудник подтвердил приглашение","company_member_suspend":"Сотрудник деактивирован","company_member_activate":"Сотрудник активирован","company_member_delete":"Сотрудник удалён из компании","company_member_update":"Данные сотрудника изменены","video_call_started":"Видеозвонок начался","video_call_finished":"Видеозвонок завершился","video_call_recording_ready":"Запись видеозвонка готова"},"$ref":"#/components/schemas/BotEventName"}},"trigger_on":{"description":"Условие срабатывания исходящего вебхука","default":"commands","example":"commands","allOf":[{"type":"string","description":"Условие срабатывания исходящего вебхука бота","enum":["commands","all_messages","unfurl"],"x-enum-descriptions":{"commands":"Только на команды (триггер-слова) из commands","all_messages":"На все сообщения в чатах, где есть бот","unfurl":"На развёртывание ссылок (link previews)"},"$ref":"#/components/schemas/BotTriggerOn"}]},"commands":{"type":"array","description":"Команды бота (триггер-слова), на которые он реагирует при trigger_on = commands. Суммарная длина команд, объединённых через запятую, не должна превышать 255 символов.","example":["/task","/help"],"items":{"type":"string"}},"scopes":{"type":"array","description":"Скоупы (права доступа) токена бота. Если не указано, бот получает набор по умолчанию. Боту доступны не все скоупы: часть из них разрешена только пользовательским ролям, и попытка назначить такой скоуп возвращает `400`. Служебные значения `bot` и `all` назначать нельзя.","example":["messages:create"],"items":{"type":"string"}},"template":{"type":"string","description":"Шаблон форматирования входящего вебхука","example":"Заказ от {{ client }} на сумму {{ amount }} ₽"},"template_engine":{"description":"Шаблонизатор для обработки шаблона входящего вебхука","default":"liquid","example":"liquid","allOf":[{"type":"string","description":"Шаблонизатор для форматирования входящих вебхуков","enum":["liquid","mustache"],"x-enum-descriptions":{"liquid":"Liquid — условия, циклы и фильтры","mustache":"Mustache — простая подстановка без логики"},"$ref":"#/components/schemas/BotTemplateEngine"}]},"challenge_key":{"type":"string","description":"Название поля проверки для верификации входящего вебхука","example":"challenge"},"link_preview_enabled":{"type":"boolean","description":"Показывать превью ссылок в сообщениях входящего вебхука","default":true,"example":true},"ignore_self_messages":{"type":"boolean","description":"Игнорировать входящие сообщения, отправленные самим ботом","default":false,"example":false},"events_history_enabled":{"type":"boolean","description":"Сохранять историю событий бота для последующего получения через метод истории событий","default":false,"example":false},"who_can_add":{"description":"Кто может добавлять бота в чаты","default":"creator","example":"creator","allOf":[{"type":"string","description":"Кто может добавлять бота в чаты","enum":["creator","creator_admin","creator_admin_user","anyone"],"x-enum-descriptions":{"creator":"Только создатель бота","creator_admin":"Создатель и администраторы компании","creator_admin_user":"Создатель, администраторы и участники компании","anyone":"Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей"},"$ref":"#/components/schemas/BotWhoCanAdd"}]},"can_edit":{"type":"array","description":"Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель.","example":["admin"],"items":{"type":"string","description":"Роль, которой разрешено редактировать настройки бота","enum":["admin","chat_owners"],"x-enum-descriptions":{"admin":"Администраторы компании","chat_owners":"Владельцы чатов, в которые добавлен бот"},"$ref":"#/components/schemas/BotCanEdit"}},"single_chat":{"type":"boolean","description":"Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят.","default":false,"example":false},"kind":{"description":"Источник входящего вебхука. Без `empty` по умолчанию `simple`, а у пустого бота входящий вебхук включается только этим полем.","example":"simple","allOf":[{"type":"string","description":"Источник входящего вебхука бота","enum":["simple","gitlab","grafana"],"x-enum-descriptions":{"simple":"Свой формат: сообщение собирается из тела запроса по шаблону бота","gitlab":"GitLab: Пачка сама разбирает запрос и собирает сообщение","grafana":"Grafana: Пачка сама разбирает запрос и собирает сообщение"},"$ref":"#/components/schemas/BotWebhookKind"}]},"unfurl_domains":{"type":"array","description":"Домены, ссылки на которые бот разворачивает, не больше 5. Работают вместе с событием `message_link_shared`.","example":["example.com"],"items":{"type":"string"}}}},"oauth_client":{"description":"Включить авторизацию от имени сотрудника сразу при создании","allOf":[{"type":"object","description":"Настройки авторизации от имени сотрудника","properties":{"confidential":{"type":"boolean","description":"Где хранится секрет: `true` — серверное приложение хранит `client_secret` и обменивает код у себя, `false` — приложение без секрета (браузер, мобильное, CLI) обменивает код по PKCE. Если не передать, значение не меняется, а у нового клиента — `true`.","example":true},"redirect_uris":{"type":"array","description":"Адреса возврата после согласия. HTTPS обязателен, кроме адресов на этом же компьютере (`localhost`, `127.0.0.1`). Адрес в ссылке авторизации должен совпадать с одним из списка точно, у `localhost` и `127.0.0.1` порт не сравнивается. При включении передайте хотя бы один адрес. Список заменяется целиком.","example":["https://example.com/oauth/callback"],"items":{"type":"string"}},"scopes":{"type":"array","description":"Права, которые бот запрашивает у сотрудника на экране согласия. Доступны только права, которые можно выдать самому боту. Если при включении поле не передать, запрашиваются все права бота. Список заменяется целиком.","example":["messages:read","messages:create"],"items":{"type":"string"}}},"$ref":"#/components/schemas/BotOAuthClientRequest"}]},"promo":{"description":"Страница бота в витрине. Задаётся только вместе с `oauth_client`: без авторизации страницы у бота нет.","allOf":[{"type":"object","description":"Страница бота в витрине","properties":{"description":{"type":"string","description":"Описание: чем бот занимается и зачем его подключать. Без описания бота нельзя опубликовать.","example":"Собирает сводку по задачам Jira и присылает её в чат"},"published":{"type":"boolean","description":"Опубликовать бота в витрине: он появится карточкой на вкладке «Обзор». Публикация требует описания.","example":true},"promo_images":{"type":"array","description":"Скриншоты страницы бота, не больше 5: ключи загруженных изображений (`key` из [Получение подписи, ключа и других параметров](POST /uploads)). Список заменяется целиком, порядок сохраняется.","example":["attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"],"items":{"type":"string"}}},"$ref":"#/components/schemas/BotPromoRequest"}]}},"$ref":"#/components/schemas/BotCreateRequest"},"example":{"webhook":{"name":"Бот задач","nickname":"tasks_bot","outgoing_url":"https://www.website.com/tasks/new","events":["message_new"],"trigger_on":"commands","commands":["/task"],"scopes":["messages:create"]},"oauth_client":{"confidential":true,"redirect_uris":["https://example.com/oauth/callback"],"scopes":["messages:read","messages:create"]}}}}},"responses":{"201":{"description":"The request has succeeded and a new resource has been created as a result.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Параметры созданного бота","required":["id","name","nickname","avatar_url","creator_id","created_at","authorized_users_count","last_used_at","webhook","oauth_client_enabled","oauth_client","promo","permissions"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор бота (совпадает с `user_id` бота)","example":1738816},"name":{"type":"string","description":"Имя бота","example":"Бот задач"},"nickname":{"type":"string","description":"Никнейм бота","example":"tasks_bot"},"avatar_url":{"type":"string","description":"Ссылка на аватар бота. `null`, если аватар не задан.","example":"https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg","nullable":true},"creator_id":{"type":"integer","format":"int32","description":"Идентификатор сотрудника, создавшего бота. `null`, если создатель не записан.","example":12,"nullable":true},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2025-05-15T14:30:00.000Z"},"authorized_users_count":{"type":"integer","format":"int32","description":"Сколько сотрудников авторизовали бота","example":3},"last_used_at":{"type":"string","format":"date-time","description":"Дата и время, когда бот последний раз работал (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ: запрос на входящий вебхук или вызов API любым токеном бота, включая токены сотрудников. `null`, если такого не было. Использование токена учитывается не чаще раза в час.","example":"2025-05-15T14:30:00.000Z","nullable":true},"webhook":{"description":"Объект параметров вебхука","allOf":[{"type":"object","description":"Параметры вебхука бота","required":["name","nickname","outgoing_url","events","trigger_on","commands","scopes","template","template_engine","challenge_key","link_preview_enabled","ignore_self_messages","events_history_enabled","single_chat","can_edit","who_can_add","kind","unfurl_domains","last_request_at"],"properties":{"name":{"type":"string","description":"Имя бота","example":"Бот задач","maxLength":255},"nickname":{"type":"string","description":"Никнейм бота","example":"tasks_bot","maxLength":255},"outgoing_url":{"type":"string","description":"URL исходящего вебхука. `null`, если исходящий вебхук у бота не настроен.","example":"https://www.website.com/tasks/new","nullable":true},"events":{"type":"array","description":"События, на которые подписан бот","example":["message_new"],"items":{"type":"string","description":"Событие исходящего вебхука бота","enum":["message_new","message_update","message_delete","reaction_new","reaction_delete","button_click","message_link_shared","chat_member_add","chat_member_remove","company_member_invite","company_member_confirm","company_member_suspend","company_member_activate","company_member_delete","company_member_update","video_call_started","video_call_finished","video_call_recording_ready"],"x-enum-descriptions":{"message_new":"Новое сообщение","message_update":"Сообщение отредактировано","message_delete":"Сообщение удалено","reaction_new":"Добавлена реакция","reaction_delete":"Реакция удалена","button_click":"Нажата кнопка","message_link_shared":"В сообщении отправлена ссылка (для unfurl)","chat_member_add":"Участник добавлен в чат","chat_member_remove":"Участник удалён из чата","company_member_invite":"Сотрудник приглашён в компанию","company_member_confirm":"Сотрудник подтвердил приглашение","company_member_suspend":"Сотрудник деактивирован","company_member_activate":"Сотрудник активирован","company_member_delete":"Сотрудник удалён из компании","company_member_update":"Данные сотрудника изменены","video_call_started":"Видеозвонок начался","video_call_finished":"Видеозвонок завершился","video_call_recording_ready":"Запись видеозвонка готова"},"$ref":"#/components/schemas/BotEventName"}},"trigger_on":{"description":"Условие срабатывания исходящего вебхука","example":"commands","allOf":[{"type":"string","description":"Условие срабатывания исходящего вебхука бота","enum":["commands","all_messages","unfurl"],"x-enum-descriptions":{"commands":"Только на команды (триггер-слова) из commands","all_messages":"На все сообщения в чатах, где есть бот","unfurl":"На развёртывание ссылок (link previews)"},"$ref":"#/components/schemas/BotTriggerOn"}]},"commands":{"type":"array","description":"Команды бота (триггер-слова)","example":["/task"],"items":{"type":"string"}},"scopes":{"type":"array","description":"Скоупы (права доступа) токена бота. Набор по умолчанию шире того, что можно назначить явно, поэтому здесь могут встречаться значения, недоступные для явной установки.","example":["messages:create"],"items":{"type":"string"}},"template":{"type":"string","description":"Шаблон форматирования входящего вебхука. `null`, если не задан.","example":"Заказ от {{ client }} на сумму {{ amount }} ₽","nullable":true},"template_engine":{"description":"Шаблонизатор для обработки шаблона входящего вебхука","example":"liquid","allOf":[{"type":"string","description":"Шаблонизатор для форматирования входящих вебхуков","enum":["liquid","mustache"],"x-enum-descriptions":{"liquid":"Liquid — условия, циклы и фильтры","mustache":"Mustache — простая подстановка без логики"},"$ref":"#/components/schemas/BotTemplateEngine"}]},"challenge_key":{"type":"string","description":"Название поля проверки для верификации входящего вебхука. `null`, если не задано.","example":"challenge","nullable":true},"link_preview_enabled":{"type":"boolean","description":"Показывать превью ссылок в сообщениях входящего вебхука","example":true},"ignore_self_messages":{"type":"boolean","description":"Игнорировать входящие сообщения, отправленные самим ботом","example":false},"events_history_enabled":{"type":"boolean","description":"Сохранять историю событий бота для последующего получения через метод истории событий","example":false},"single_chat":{"type":"boolean","description":"Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят.","example":false},"can_edit":{"type":"array","description":"Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель.","example":["admin"],"items":{"type":"string","description":"Роль, которой разрешено редактировать настройки бота","enum":["admin","chat_owners"],"x-enum-descriptions":{"admin":"Администраторы компании","chat_owners":"Владельцы чатов, в которые добавлен бот"},"$ref":"#/components/schemas/BotCanEdit"}},"who_can_add":{"description":"Кто может добавлять бота в чаты","example":"creator","allOf":[{"type":"string","description":"Кто может добавлять бота в чаты","enum":["creator","creator_admin","creator_admin_user","anyone"],"x-enum-descriptions":{"creator":"Только создатель бота","creator_admin":"Создатель и администраторы компании","creator_admin_user":"Создатель, администраторы и участники компании","anyone":"Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей"},"$ref":"#/components/schemas/BotWhoCanAdd"}]},"kind":{"description":"Источник входящего вебхука. `null`, если входящий вебхук у бота выключен.","example":"simple","nullable":true,"allOf":[{"type":"string","description":"Источник входящего вебхука бота","enum":["simple","gitlab","grafana"],"x-enum-descriptions":{"simple":"Свой формат: сообщение собирается из тела запроса по шаблону бота","gitlab":"GitLab: Пачка сама разбирает запрос и собирает сообщение","grafana":"Grafana: Пачка сама разбирает запрос и собирает сообщение"},"$ref":"#/components/schemas/BotWebhookKind"}]},"unfurl_domains":{"type":"array","description":"Домены, ссылки на которые бот разворачивает","example":["example.com"],"items":{"type":"string"}},"last_request_at":{"type":"string","format":"date-time","description":"Дата и время последнего запроса на входящий вебхук бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если запросов не было.","example":"2025-05-15T14:30:00.000Z","nullable":true}},"$ref":"#/components/schemas/BotWebhook"}]},"oauth_client_enabled":{"type":"boolean","description":"Включена ли у бота авторизация от имени сотрудника","example":true},"oauth_client":{"type":"object","description":"Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией, поэтому включена ли она, смотрите в `oauth_client_enabled`. У бота без токенов может прийти `null`.","nullable":true,"allOf":[{"type":"object","description":"Авторизация от имени сотрудника","required":["client_id","client_secret_preview","confidential","redirect_uris","scopes"],"properties":{"client_id":{"type":"string","description":"Идентификатор клиента для ссылки авторизации","example":"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY"},"client_secret_preview":{"type":"string","description":"Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета.","example":"cH5kR9mN...x7Qp"},"confidential":{"type":"boolean","description":"Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE","example":true},"redirect_uris":{"type":"array","description":"Адреса возврата после согласия","example":["https://example.com/oauth/callback"],"items":{"type":"string"}},"scopes":{"type":"array","description":"Права, которые бот запрашивает у сотрудника на экране согласия","example":["messages:read","messages:create"],"items":{"type":"string"}}},"$ref":"#/components/schemas/BotOAuthClient"}]},"promo":{"type":"object","description":"Страница бота в витрине. `null`, если авторизация у бота выключена.","nullable":true,"allOf":[{"type":"object","description":"Страница бота в витрине","required":["description","published","promo_images"],"properties":{"description":{"type":"string","description":"Описание бота. `null`, если не задано.","example":"Собирает сводку по задачам Jira и присылает её в чат","nullable":true},"published":{"type":"boolean","description":"Опубликован ли бот в витрине","example":true},"promo_images":{"type":"array","description":"Скриншоты страницы бота","items":{"type":"object","description":"Скриншот страницы бота в витрине","required":["key","url"],"properties":{"key":{"type":"string","description":"Ключ изображения","example":"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"},"url":{"type":"string","description":"Ссылка на изображение","example":"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"}},"$ref":"#/components/schemas/BotPromoImage"}}},"$ref":"#/components/schemas/BotPromo"}]},"permissions":{"description":"Что вы можете делать с этим ботом","allOf":[{"type":"object","description":"Что текущий пользователь может делать с ботом","required":["update_oauth_client","recreate_token","destroy"],"properties":{"update_oauth_client":{"type":"boolean","description":"Менять авторизацию от имени сотрудника, страницу в витрине и имя бота","example":true},"recreate_token":{"type":"boolean","description":"Выпускать, менять и удалять токены бота и обновлять секрет клиента","example":true},"destroy":{"type":"boolean","description":"Удалить бота","example":true}},"$ref":"#/components/schemas/BotPermissions"}]},"client_secret":{"type":"string","description":"Секрет клиента. Приходит один раз: при включении серверного клиента, при переходе на него и при ротации секрета.","example":"dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA"},"access_token":{"type":"string","description":"Токен доступа бота. Возвращается при создании бота и при ротации токена. Не приходит, если бот создан с `empty: true`.","example":"bm90X2FfcmVhbF90b2tlbg"}},"$ref":"#/components/schemas/BotCreateResponse"}}},"example":{"data":{"id":1738816,"name":"Бот задач","nickname":"tasks_bot","avatar_url":null,"creator_id":12,"created_at":"2025-05-15T14:30:00.000Z","authorized_users_count":0,"last_used_at":null,"webhook":{"name":"Бот задач","nickname":"tasks_bot","outgoing_url":"https://www.website.com/tasks/new","events":["message_new"],"trigger_on":"commands","commands":["/task"],"scopes":["messages:create"],"template":"Заказ от {{ client }} на сумму {{ amount }} ₽","template_engine":"liquid","challenge_key":"challenge","link_preview_enabled":true,"ignore_self_messages":false,"events_history_enabled":false,"single_chat":false,"can_edit":["admin"],"who_can_add":"creator","kind":"simple","unfurl_domains":[],"last_request_at":null},"oauth_client_enabled":true,"oauth_client":{"client_id":"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY","client_secret_preview":"dGhpc19p...ZWNy","confidential":true,"redirect_uris":["https://example.com/oauth/callback"],"scopes":["messages:read","messages:create"]},"promo":{"description":null,"published":false,"promo_images":[]},"permissions":{"update_oauth_client":true,"recreate_token":true,"destroy":true},"client_secret":"dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA","access_token":"bm90X2FfcmVhbF90b2tlbg"}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}}},"requirements":{"scope":"bots:write","scopeRoles":["owner","admin","user"]},"paginated":false},"docs":"# Новый бот\n\n**Метод**: `POST`\n\n**Путь**: `/bots`\n\n> **Скоуп:** `bots:write`\n\nСоздаёт бота в пространстве. По умолчанию бот получает входящий вебхук в своём формате и сразу отдаёт свой `access_token`. Сохраните токен при создании: тот же самый повторно не показывают, останется перевыпустить его методом [Ротация токена бота](POST /bots/{id}/recreate_token).\n\nС `empty: true` создаётся пустой бот, как в интерфейсе: только имя и ник, без токена и без входящего вебхука. Токены ему выпускают методом [Новый токен бота](POST /bots/{id}/tokens), а входящий вебхук включают полем `kind` в объекте `webhook`.\n\nСозданный бот ещё никуда не пишет. В беседу и канал он пишет только как участник, а добавляют его как сотрудника — методом [Добавление пользователей](POST /chats/{id}/members), передав `id` бота. В канале бот получает роль редактора. Личные сообщения и треды в открытых чатах членства не требуют.\n\nВходящий вебхук бота отправляет сообщение сразу во все беседы и каналы, где бот состоит, поэтому набор его чатов и решает, куда оно попадёт. Токен для этого не нужен, достаточно адреса вебхука. Чтобы написать в один конкретный чат, берите метод [Новое сообщение](POST /messages) — вот там токен уже нужен.\n\nАвторизацию от имени сотрудника можно включить сразу, передав `oauth_client`, а страницу в витрине заполнить в `promo`. У серверного клиента секрет приходит в `client_secret` один раз. Подробнее — в разделе [Настройка авторизации](/guides/oauth/setup).\n\nНик обязан заканчиваться на `_bot` и быть свободным в пространстве.\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `empty: boolean` (default: false) — Создать пустого бота: без токена и без входящего вебхука. Без этого поля бот создаётся с входящим вебхуком в своём формате, а его токен приходит в `access_token`. Пример: `false`\n- `webhook: object` (required) — Объект параметров вебхука создаваемого бота\n - `name: string` (required, max length: 255) — Имя бота. Пример: `\"Бот задач\"`\n - `nickname: string` (max length: 255) — Никнейм бота. Должен заканчиваться на `_bot`. Пример: `\"tasks_bot\"`\n - `outgoing_url: string` — URL исходящего вебхука. Пример: `\"https://www.website.com/tasks/new\"`\n - `events: array of string` — События, на которые подписан бот. Пример: `[\"message_new\"]`\n - `trigger_on: string` — Условие срабатывания исходящего вебхука\n Значения: `commands` — Только на команды (триггер-слова) из commands, `all_messages` — На все сообщения в чатах, где есть бот, `unfurl` — На развёртывание ссылок (link previews)\n - `commands: array of string` — Команды бота (триггер-слова), на которые он реагирует при trigger_on = commands. Суммарная длина команд, объединённых через запятую, не должна превышать 255 символов. Пример: `[\"/task\",\"/help\"]`\n - `scopes: array of string` — Скоупы (права доступа) токена бота. Если не указано, бот получает набор по умолчанию. Боту доступны не все скоупы: часть из них разрешена только пользовательским ролям, и попытка назначить такой скоуп возвращает `400`. Служебные значения `bot` и `all` назначать нельзя. Пример: `[\"messages:create\"]`\n - `template: string` — Шаблон форматирования входящего вебхука. Пример: `\"Заказ от {{ client }} на сумму {{ amount }} ₽\"`\n - `template_engine: string` — Шаблонизатор для обработки шаблона входящего вебхука\n Значения: `liquid` — Liquid — условия, циклы и фильтры, `mustache` — Mustache — простая подстановка без логики\n - `challenge_key: string` — Название поля проверки для верификации входящего вебхука. Пример: `\"challenge\"`\n - `link_preview_enabled: boolean` (default: true) — Показывать превью ссылок в сообщениях входящего вебхука. Пример: `true`\n - `ignore_self_messages: boolean` (default: false) — Игнорировать входящие сообщения, отправленные самим ботом. Пример: `false`\n - `events_history_enabled: boolean` (default: false) — Сохранять историю событий бота для последующего получения через метод истории событий. Пример: `false`\n - `who_can_add: string` — Кто может добавлять бота в чаты\n Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей\n - `can_edit: array of string` — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `[\"admin\"]`\n - `single_chat: boolean` (default: false) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false`\n - `kind: string` — Источник входящего вебхука. Без `empty` по умолчанию `simple`, а у пустого бота входящий вебхук включается только этим полем.\n Значения: `simple` — Свой формат: сообщение собирается из тела запроса по шаблону бота, `gitlab` — GitLab: Пачка сама разбирает запрос и собирает сообщение, `grafana` — Grafana: Пачка сама разбирает запрос и собирает сообщение\n - `unfurl_domains: array of string` — Домены, ссылки на которые бот разворачивает, не больше 5. Работают вместе с событием `message_link_shared`. Пример: `[\"example.com\"]`\n- `oauth_client: object` — Включить авторизацию от имени сотрудника сразу при создании\n - `confidential: boolean` — Где хранится секрет: `true` — серверное приложение хранит `client_secret` и обменивает код у себя, `false` — приложение без секрета (браузер, мобильное, CLI) обменивает код по PKCE. Если не передать, значение не меняется, а у нового клиента — `true`. Пример: `true`\n - `redirect_uris: array of string` — Адреса возврата после согласия. HTTPS обязателен, кроме адресов на этом же компьютере (`localhost`, `127.0.0.1`). Адрес в ссылке авторизации должен совпадать с одним из списка точно, у `localhost` и `127.0.0.1` порт не сравнивается. При включении передайте хотя бы один адрес. Список заменяется целиком. Пример: `[\"https://example.com/oauth/callback\"]`\n - `scopes: array of string` — Права, которые бот запрашивает у сотрудника на экране согласия. Доступны только права, которые можно выдать самому боту. Если при включении поле не передать, запрашиваются все права бота. Список заменяется целиком. Пример: `[\"messages:read\",\"messages:create\"]`\n- `promo: object` — Страница бота в витрине. Задаётся только вместе с `oauth_client`: без авторизации страницы у бота нет.\n - `description: string` — Описание: чем бот занимается и зачем его подключать. Без описания бота нельзя опубликовать. Пример: `\"Собирает сводку по задачам Jira и присылает её в чат\"`\n - `published: boolean` — Опубликовать бота в витрине: он появится карточкой на вкладке «Обзор». Публикация требует описания. Пример: `true`\n - `promo_images: array of string` — Скриншоты страницы бота, не больше 5: ключи загруженных изображений (`key` из [Получение подписи, ключа и других параметров](POST /uploads)). Список заменяется целиком, порядок сохраняется. Пример: `[\"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png\"]`\n\n### Пример\n\n```json\n{\n \"webhook\": {\n \"name\": \"Бот задач\",\n \"nickname\": \"tasks_bot\",\n \"outgoing_url\": \"https://www.website.com/tasks/new\",\n \"events\": [\n \"message_new\"\n ],\n \"trigger_on\": \"commands\",\n \"commands\": [\n \"/task\"\n ],\n \"scopes\": [\n \"messages:create\"\n ]\n },\n \"oauth_client\": {\n \"confidential\": true,\n \"redirect_uris\": [\n \"https://example.com/oauth/callback\"\n ],\n \"scopes\": [\n \"messages:read\",\n \"messages:create\"\n ]\n }\n}\n```\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/bots\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"webhook\": {\n \"name\": \"Бот задач\",\n \"nickname\": \"tasks_bot\",\n \"outgoing_url\": \"https://www.website.com/tasks/new\",\n \"events\": [\n \"message_new\"\n ],\n \"trigger_on\": \"commands\",\n \"commands\": [\n \"/task\"\n ],\n \"scopes\": [\n \"messages:create\"\n ]\n },\n \"oauth_client\": {\n \"confidential\": true,\n \"redirect_uris\": [\n \"https://example.com/oauth/callback\"\n ],\n \"scopes\": [\n \"messages:read\",\n \"messages:create\"\n ]\n }\n}'\n```\n\n## Ответы\n\n### 201: The request has succeeded and a new resource has been created as a result.\n\n**Схема ответа:**\n\n- `data: object` (required) — Параметры созданного бота\n - `id: integer, int32` (required) — Идентификатор бота (совпадает с `user_id` бота). Пример: `1738816`\n - `name: string` (required) — Имя бота. Пример: `\"Бот задач\"`\n - `nickname: string` (required) — Никнейм бота. Пример: `\"tasks_bot\"`\n - `avatar_url: string` (required, nullable) — Ссылка на аватар бота. `null`, если аватар не задан. Пример: `\"https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg\"`\n - `creator_id: integer, int32` (required, nullable) — Идентификатор сотрудника, создавшего бота. `null`, если создатель не записан. Пример: `12`\n - `created_at: date-time` (required) — Дата и время создания бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2025-05-15T14:30:00.000Z\"`\n - `authorized_users_count: integer, int32` (required) — Сколько сотрудников авторизовали бота. Пример: `3`\n - `last_used_at: date-time` (required, nullable) — Дата и время, когда бот последний раз работал (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ: запрос на входящий вебхук или вызов API любым токеном бота, включая токены сотрудников. `null`, если такого не было. Использование токена учитывается не чаще раза в час. Пример: `\"2025-05-15T14:30:00.000Z\"`\n - `webhook: object` (required) — Объект параметров вебхука\n - `name: string` (required, max length: 255) — Имя бота. Пример: `\"Бот задач\"`\n - `nickname: string` (required, max length: 255) — Никнейм бота. Пример: `\"tasks_bot\"`\n - `outgoing_url: string` (required, nullable) — URL исходящего вебхука. `null`, если исходящий вебхук у бота не настроен. Пример: `\"https://www.website.com/tasks/new\"`\n - `events: array of string` (required) — События, на которые подписан бот. Пример: `[\"message_new\"]`\n - `trigger_on: string` (required) — Условие срабатывания исходящего вебхука\n Значения: `commands` — Только на команды (триггер-слова) из commands, `all_messages` — На все сообщения в чатах, где есть бот, `unfurl` — На развёртывание ссылок (link previews)\n - `commands: array of string` (required) — Команды бота (триггер-слова). Пример: `[\"/task\"]`\n - `scopes: array of string` (required) — Скоупы (права доступа) токена бота. Набор по умолчанию шире того, что можно назначить явно, поэтому здесь могут встречаться значения, недоступные для явной установки. Пример: `[\"messages:create\"]`\n - `template: string` (required, nullable) — Шаблон форматирования входящего вебхука. `null`, если не задан. Пример: `\"Заказ от {{ client }} на сумму {{ amount }} ₽\"`\n - `template_engine: string` (required) — Шаблонизатор для обработки шаблона входящего вебхука\n Значения: `liquid` — Liquid — условия, циклы и фильтры, `mustache` — Mustache — простая подстановка без логики\n - `challenge_key: string` (required, nullable) — Название поля проверки для верификации входящего вебхука. `null`, если не задано. Пример: `\"challenge\"`\n - `link_preview_enabled: boolean` (required) — Показывать превью ссылок в сообщениях входящего вебхука. Пример: `true`\n - `ignore_self_messages: boolean` (required) — Игнорировать входящие сообщения, отправленные самим ботом. Пример: `false`\n - `events_history_enabled: boolean` (required) — Сохранять историю событий бота для последующего получения через метод истории событий. Пример: `false`\n - `single_chat: boolean` (required) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false`\n - `can_edit: array of string` (required) — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `[\"admin\"]`\n - `who_can_add: string` (required) — Кто может добавлять бота в чаты\n Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей\n - `kind: string` (required) — Источник входящего вебхука. `null`, если входящий вебхук у бота выключен.\n Значения: `simple` — Свой формат: сообщение собирается из тела запроса по шаблону бота, `gitlab` — GitLab: Пачка сама разбирает запрос и собирает сообщение, `grafana` — Grafana: Пачка сама разбирает запрос и собирает сообщение\n - `unfurl_domains: array of string` (required) — Домены, ссылки на которые бот разворачивает. Пример: `[\"example.com\"]`\n - `last_request_at: date-time` (required, nullable) — Дата и время последнего запроса на входящий вебхук бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если запросов не было. Пример: `\"2025-05-15T14:30:00.000Z\"`\n - `oauth_client_enabled: boolean` (required) — Включена ли у бота авторизация от имени сотрудника. Пример: `true`\n - `oauth_client: object` (required) — Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией, поэтому включена ли она, смотрите в `oauth_client_enabled`. У бота без токенов может прийти `null`.\n - `client_id: string` (required) — Идентификатор клиента для ссылки авторизации. Пример: `\"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY\"`\n - `client_secret_preview: string` (required) — Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета. Пример: `\"cH5kR9mN...x7Qp\"`\n - `confidential: boolean` (required) — Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE. Пример: `true`\n - `redirect_uris: array of string` (required) — Адреса возврата после согласия. Пример: `[\"https://example.com/oauth/callback\"]`\n - `scopes: array of string` (required) — Права, которые бот запрашивает у сотрудника на экране согласия. Пример: `[\"messages:read\",\"messages:create\"]`\n - `promo: object` (required) — Страница бота в витрине. `null`, если авторизация у бота выключена.\n - `description: string` (required, nullable) — Описание бота. `null`, если не задано. Пример: `\"Собирает сводку по задачам Jira и присылает её в чат\"`\n - `published: boolean` (required) — Опубликован ли бот в витрине. Пример: `true`\n - `promo_images: array of object` (required) — Скриншоты страницы бота\n - `key: string` (required) — Ключ изображения. Пример: `\"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png\"`\n - `url: string` (required) — Ссылка на изображение. Пример: `\"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png\"`\n - `permissions: object` (required) — Что вы можете делать с этим ботом\n - `update_oauth_client: boolean` (required) — Менять авторизацию от имени сотрудника, страницу в витрине и имя бота. Пример: `true`\n - `recreate_token: boolean` (required) — Выпускать, менять и удалять токены бота и обновлять секрет клиента. Пример: `true`\n - `destroy: boolean` (required) — Удалить бота. Пример: `true`\n - `client_secret: string` — Секрет клиента. Приходит один раз: при включении серверного клиента, при переходе на него и при ротации секрета. Пример: `\"dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA\"`\n - `access_token: string` — Токен доступа бота. Возвращается при создании бота и при ротации токена. Не приходит, если бот создан с `empty: true`. Пример: `\"bm90X2FfcmVhbF90b2tlbg\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 1738816,\n \"name\": \"Бот задач\",\n \"nickname\": \"tasks_bot\",\n \"avatar_url\": null,\n \"creator_id\": 12,\n \"created_at\": \"2025-05-15T14:30:00.000Z\",\n \"authorized_users_count\": 0,\n \"last_used_at\": null,\n \"webhook\": {\n \"name\": \"Бот задач\",\n \"nickname\": \"tasks_bot\",\n \"outgoing_url\": \"https://www.website.com/tasks/new\",\n \"events\": [\n \"message_new\"\n ],\n \"trigger_on\": \"commands\",\n \"commands\": [\n \"/task\"\n ],\n \"scopes\": [\n \"messages:create\"\n ],\n \"template\": \"Заказ от {{ client }} на сумму {{ amount }} ₽\",\n \"template_engine\": \"liquid\",\n \"challenge_key\": \"challenge\",\n \"link_preview_enabled\": true,\n \"ignore_self_messages\": false,\n \"events_history_enabled\": false,\n \"single_chat\": false,\n \"can_edit\": [\n \"admin\"\n ],\n \"who_can_add\": \"creator\",\n \"kind\": \"simple\",\n \"unfurl_domains\": [],\n \"last_request_at\": null\n },\n \"oauth_client_enabled\": true,\n \"oauth_client\": {\n \"client_id\": \"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY\",\n \"client_secret_preview\": \"dGhpc19p...ZWNy\",\n \"confidential\": true,\n \"redirect_uris\": [\n \"https://example.com/oauth/callback\"\n ],\n \"scopes\": [\n \"messages:read\",\n \"messages:create\"\n ]\n },\n \"promo\": {\n \"description\": null,\n \"published\": false,\n \"promo_images\": []\n },\n \"permissions\": {\n \"update_oauth_client\": true,\n \"recreate_token\": true,\n \"destroy\": true\n },\n \"client_secret\": \"dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA\",\n \"access_token\": \"bm90X2FfcmVhbF90b2tlbg\"\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n"},{"method":"GET","path":"/bots/{id}","summary":"Информация о боте","scope":"bots:read","plan":null,"auth":true,"paginated":false,"command":"pachca bots get","docLink":"https://dev.pachca.com/api/bots/get","describe":"# GET /bots/{id} — Информация о боте\n\n> **Скоуп:** `bots:read`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор бота\n\n## Эквивалентная команда\n\n```bash\npachca bots get 1738816 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/bots/get\nПолная справка: `pachca api GET /bots/{id} --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/bots/{id}","description":"Информация о боте\n\nНастройки бота. Токен в ответе не приходит — его показывают один раз при создании бота и при вызове метода [Ротация токена бота](POST /bots/{id}/recreate_token). Токены бота отдаёт [Список токенов бота](GET /bots/{id}/tokens).\n\nМетод отдаёт только тех ботов, которых вызывающий вправе настраивать: своих, а также чужих, если настройки бота открывают доступ администраторам пространства или руководителям чатов, где бот состоит. На остальных метод ответит `403`.\n\nПеречень всех ботов пространства, включая чужих, доступен владельцу на тарифе «Корпорация» — [Список ботов пространства](GET /company/bots).","parameters":[{"name":"id","in":"path","description":"Идентификатор бота","required":true,"schema":{"type":"integer","format":"int32","example":1738816},"example":1738816}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Параметры бота","required":["id","name","nickname","avatar_url","creator_id","created_at","authorized_users_count","last_used_at","webhook","oauth_client_enabled","oauth_client","promo","permissions"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор бота (совпадает с `user_id` бота)","example":1738816},"name":{"type":"string","description":"Имя бота","example":"Бот задач"},"nickname":{"type":"string","description":"Никнейм бота","example":"tasks_bot"},"avatar_url":{"type":"string","description":"Ссылка на аватар бота. `null`, если аватар не задан.","example":"https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg","nullable":true},"creator_id":{"type":"integer","format":"int32","description":"Идентификатор сотрудника, создавшего бота. `null`, если создатель не записан.","example":12,"nullable":true},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2025-05-15T14:30:00.000Z"},"authorized_users_count":{"type":"integer","format":"int32","description":"Сколько сотрудников авторизовали бота","example":3},"last_used_at":{"type":"string","format":"date-time","description":"Дата и время, когда бот последний раз работал (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ: запрос на входящий вебхук или вызов API любым токеном бота, включая токены сотрудников. `null`, если такого не было. Использование токена учитывается не чаще раза в час.","example":"2025-05-15T14:30:00.000Z","nullable":true},"webhook":{"description":"Объект параметров вебхука","allOf":[{"type":"object","description":"Параметры вебхука бота","required":["name","nickname","outgoing_url","events","trigger_on","commands","scopes","template","template_engine","challenge_key","link_preview_enabled","ignore_self_messages","events_history_enabled","single_chat","can_edit","who_can_add","kind","unfurl_domains","last_request_at"],"properties":{"name":{"type":"string","description":"Имя бота","example":"Бот задач","maxLength":255},"nickname":{"type":"string","description":"Никнейм бота","example":"tasks_bot","maxLength":255},"outgoing_url":{"type":"string","description":"URL исходящего вебхука. `null`, если исходящий вебхук у бота не настроен.","example":"https://www.website.com/tasks/new","nullable":true},"events":{"type":"array","description":"События, на которые подписан бот","example":["message_new"],"items":{"type":"string","description":"Событие исходящего вебхука бота","enum":["message_new","message_update","message_delete","reaction_new","reaction_delete","button_click","message_link_shared","chat_member_add","chat_member_remove","company_member_invite","company_member_confirm","company_member_suspend","company_member_activate","company_member_delete","company_member_update","video_call_started","video_call_finished","video_call_recording_ready"],"x-enum-descriptions":{"message_new":"Новое сообщение","message_update":"Сообщение отредактировано","message_delete":"Сообщение удалено","reaction_new":"Добавлена реакция","reaction_delete":"Реакция удалена","button_click":"Нажата кнопка","message_link_shared":"В сообщении отправлена ссылка (для unfurl)","chat_member_add":"Участник добавлен в чат","chat_member_remove":"Участник удалён из чата","company_member_invite":"Сотрудник приглашён в компанию","company_member_confirm":"Сотрудник подтвердил приглашение","company_member_suspend":"Сотрудник деактивирован","company_member_activate":"Сотрудник активирован","company_member_delete":"Сотрудник удалён из компании","company_member_update":"Данные сотрудника изменены","video_call_started":"Видеозвонок начался","video_call_finished":"Видеозвонок завершился","video_call_recording_ready":"Запись видеозвонка готова"},"$ref":"#/components/schemas/BotEventName"}},"trigger_on":{"description":"Условие срабатывания исходящего вебхука","example":"commands","allOf":[{"type":"string","description":"Условие срабатывания исходящего вебхука бота","enum":["commands","all_messages","unfurl"],"x-enum-descriptions":{"commands":"Только на команды (триггер-слова) из commands","all_messages":"На все сообщения в чатах, где есть бот","unfurl":"На развёртывание ссылок (link previews)"},"$ref":"#/components/schemas/BotTriggerOn"}]},"commands":{"type":"array","description":"Команды бота (триггер-слова)","example":["/task"],"items":{"type":"string"}},"scopes":{"type":"array","description":"Скоупы (права доступа) токена бота. Набор по умолчанию шире того, что можно назначить явно, поэтому здесь могут встречаться значения, недоступные для явной установки.","example":["messages:create"],"items":{"type":"string"}},"template":{"type":"string","description":"Шаблон форматирования входящего вебхука. `null`, если не задан.","example":"Заказ от {{ client }} на сумму {{ amount }} ₽","nullable":true},"template_engine":{"description":"Шаблонизатор для обработки шаблона входящего вебхука","example":"liquid","allOf":[{"type":"string","description":"Шаблонизатор для форматирования входящих вебхуков","enum":["liquid","mustache"],"x-enum-descriptions":{"liquid":"Liquid — условия, циклы и фильтры","mustache":"Mustache — простая подстановка без логики"},"$ref":"#/components/schemas/BotTemplateEngine"}]},"challenge_key":{"type":"string","description":"Название поля проверки для верификации входящего вебхука. `null`, если не задано.","example":"challenge","nullable":true},"link_preview_enabled":{"type":"boolean","description":"Показывать превью ссылок в сообщениях входящего вебхука","example":true},"ignore_self_messages":{"type":"boolean","description":"Игнорировать входящие сообщения, отправленные самим ботом","example":false},"events_history_enabled":{"type":"boolean","description":"Сохранять историю событий бота для последующего получения через метод истории событий","example":false},"single_chat":{"type":"boolean","description":"Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят.","example":false},"can_edit":{"type":"array","description":"Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель.","example":["admin"],"items":{"type":"string","description":"Роль, которой разрешено редактировать настройки бота","enum":["admin","chat_owners"],"x-enum-descriptions":{"admin":"Администраторы компании","chat_owners":"Владельцы чатов, в которые добавлен бот"},"$ref":"#/components/schemas/BotCanEdit"}},"who_can_add":{"description":"Кто может добавлять бота в чаты","example":"creator","allOf":[{"type":"string","description":"Кто может добавлять бота в чаты","enum":["creator","creator_admin","creator_admin_user","anyone"],"x-enum-descriptions":{"creator":"Только создатель бота","creator_admin":"Создатель и администраторы компании","creator_admin_user":"Создатель, администраторы и участники компании","anyone":"Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей"},"$ref":"#/components/schemas/BotWhoCanAdd"}]},"kind":{"description":"Источник входящего вебхука. `null`, если входящий вебхук у бота выключен.","example":"simple","nullable":true,"allOf":[{"type":"string","description":"Источник входящего вебхука бота","enum":["simple","gitlab","grafana"],"x-enum-descriptions":{"simple":"Свой формат: сообщение собирается из тела запроса по шаблону бота","gitlab":"GitLab: Пачка сама разбирает запрос и собирает сообщение","grafana":"Grafana: Пачка сама разбирает запрос и собирает сообщение"},"$ref":"#/components/schemas/BotWebhookKind"}]},"unfurl_domains":{"type":"array","description":"Домены, ссылки на которые бот разворачивает","example":["example.com"],"items":{"type":"string"}},"last_request_at":{"type":"string","format":"date-time","description":"Дата и время последнего запроса на входящий вебхук бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если запросов не было.","example":"2025-05-15T14:30:00.000Z","nullable":true}},"$ref":"#/components/schemas/BotWebhook"}]},"oauth_client_enabled":{"type":"boolean","description":"Включена ли у бота авторизация от имени сотрудника","example":true},"oauth_client":{"type":"object","description":"Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией, поэтому включена ли она, смотрите в `oauth_client_enabled`. У бота без токенов может прийти `null`.","nullable":true,"allOf":[{"type":"object","description":"Авторизация от имени сотрудника","required":["client_id","client_secret_preview","confidential","redirect_uris","scopes"],"properties":{"client_id":{"type":"string","description":"Идентификатор клиента для ссылки авторизации","example":"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY"},"client_secret_preview":{"type":"string","description":"Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета.","example":"cH5kR9mN...x7Qp"},"confidential":{"type":"boolean","description":"Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE","example":true},"redirect_uris":{"type":"array","description":"Адреса возврата после согласия","example":["https://example.com/oauth/callback"],"items":{"type":"string"}},"scopes":{"type":"array","description":"Права, которые бот запрашивает у сотрудника на экране согласия","example":["messages:read","messages:create"],"items":{"type":"string"}}},"$ref":"#/components/schemas/BotOAuthClient"}]},"promo":{"type":"object","description":"Страница бота в витрине. `null`, если авторизация у бота выключена.","nullable":true,"allOf":[{"type":"object","description":"Страница бота в витрине","required":["description","published","promo_images"],"properties":{"description":{"type":"string","description":"Описание бота. `null`, если не задано.","example":"Собирает сводку по задачам Jira и присылает её в чат","nullable":true},"published":{"type":"boolean","description":"Опубликован ли бот в витрине","example":true},"promo_images":{"type":"array","description":"Скриншоты страницы бота","items":{"type":"object","description":"Скриншот страницы бота в витрине","required":["key","url"],"properties":{"key":{"type":"string","description":"Ключ изображения","example":"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"},"url":{"type":"string","description":"Ссылка на изображение","example":"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"}},"$ref":"#/components/schemas/BotPromoImage"}}},"$ref":"#/components/schemas/BotPromo"}]},"permissions":{"description":"Что вы можете делать с этим ботом","allOf":[{"type":"object","description":"Что текущий пользователь может делать с ботом","required":["update_oauth_client","recreate_token","destroy"],"properties":{"update_oauth_client":{"type":"boolean","description":"Менять авторизацию от имени сотрудника, страницу в витрине и имя бота","example":true},"recreate_token":{"type":"boolean","description":"Выпускать, менять и удалять токены бота и обновлять секрет клиента","example":true},"destroy":{"type":"boolean","description":"Удалить бота","example":true}},"$ref":"#/components/schemas/BotPermissions"}]},"client_secret":{"type":"string","description":"Секрет клиента. Приходит один раз: при включении серверного клиента, при переходе на него и при ротации секрета.","example":"dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA"}},"$ref":"#/components/schemas/BotResponse"}}},"example":{"data":{"id":1738816,"name":"Бот задач","nickname":"tasks_bot","avatar_url":null,"creator_id":12,"created_at":"2025-05-15T14:30:00.000Z","authorized_users_count":3,"last_used_at":"2025-05-20T09:15:00.000Z","webhook":{"name":"Бот задач","nickname":"tasks_bot","outgoing_url":"https://www.website.com/tasks/new","events":["message_new"],"trigger_on":"commands","commands":["/task"],"scopes":["messages:create"],"template":"Заказ от {{ client }} на сумму {{ amount }} ₽","template_engine":"liquid","challenge_key":"challenge","link_preview_enabled":true,"ignore_self_messages":false,"events_history_enabled":false,"single_chat":false,"can_edit":["admin"],"who_can_add":"creator","kind":"simple","unfurl_domains":[],"last_request_at":"2025-05-20T09:15:00.000Z"},"oauth_client_enabled":true,"oauth_client":{"client_id":"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY","client_secret_preview":"dGhpc19p...ZWNy","confidential":true,"redirect_uris":["https://example.com/oauth/callback"],"scopes":["messages:read","messages:create"]},"promo":{"description":"Собирает сводку по задачам и присылает её в чат","published":true,"promo_images":[]},"permissions":{"update_oauth_client":true,"recreate_token":true,"destroy":true}}}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"bots:read","scopeRoles":["owner","admin","user"]},"paginated":false},"docs":"# Информация о боте\n\n**Метод**: `GET`\n\n**Путь**: `/bots/{id}`\n\n> **Скоуп:** `bots:read`\n\nНастройки бота. Токен в ответе не приходит — его показывают один раз при создании бота и при вызове метода [Ротация токена бота](POST /bots/{id}/recreate_token). Токены бота отдаёт [Список токенов бота](GET /bots/{id}/tokens).\n\nМетод отдаёт только тех ботов, которых вызывающий вправе настраивать: своих, а также чужих, если настройки бота открывают доступ администраторам пространства или руководителям чатов, где бот состоит. На остальных метод ответит `403`.\n\nПеречень всех ботов пространства, включая чужих, доступен владельцу на тарифе «Корпорация» — [Список ботов пространства](GET /company/bots).\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор бота\n\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/bots/1738816\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Параметры бота\n - `id: integer, int32` (required) — Идентификатор бота (совпадает с `user_id` бота). Пример: `1738816`\n - `name: string` (required) — Имя бота. Пример: `\"Бот задач\"`\n - `nickname: string` (required) — Никнейм бота. Пример: `\"tasks_bot\"`\n - `avatar_url: string` (required, nullable) — Ссылка на аватар бота. `null`, если аватар не задан. Пример: `\"https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg\"`\n - `creator_id: integer, int32` (required, nullable) — Идентификатор сотрудника, создавшего бота. `null`, если создатель не записан. Пример: `12`\n - `created_at: date-time` (required) — Дата и время создания бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2025-05-15T14:30:00.000Z\"`\n - `authorized_users_count: integer, int32` (required) — Сколько сотрудников авторизовали бота. Пример: `3`\n - `last_used_at: date-time` (required, nullable) — Дата и время, когда бот последний раз работал (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ: запрос на входящий вебхук или вызов API любым токеном бота, включая токены сотрудников. `null`, если такого не было. Использование токена учитывается не чаще раза в час. Пример: `\"2025-05-15T14:30:00.000Z\"`\n - `webhook: object` (required) — Объект параметров вебхука\n - `name: string` (required, max length: 255) — Имя бота. Пример: `\"Бот задач\"`\n - `nickname: string` (required, max length: 255) — Никнейм бота. Пример: `\"tasks_bot\"`\n - `outgoing_url: string` (required, nullable) — URL исходящего вебхука. `null`, если исходящий вебхук у бота не настроен. Пример: `\"https://www.website.com/tasks/new\"`\n - `events: array of string` (required) — События, на которые подписан бот. Пример: `[\"message_new\"]`\n - `trigger_on: string` (required) — Условие срабатывания исходящего вебхука\n Значения: `commands` — Только на команды (триггер-слова) из commands, `all_messages` — На все сообщения в чатах, где есть бот, `unfurl` — На развёртывание ссылок (link previews)\n - `commands: array of string` (required) — Команды бота (триггер-слова). Пример: `[\"/task\"]`\n - `scopes: array of string` (required) — Скоупы (права доступа) токена бота. Набор по умолчанию шире того, что можно назначить явно, поэтому здесь могут встречаться значения, недоступные для явной установки. Пример: `[\"messages:create\"]`\n - `template: string` (required, nullable) — Шаблон форматирования входящего вебхука. `null`, если не задан. Пример: `\"Заказ от {{ client }} на сумму {{ amount }} ₽\"`\n - `template_engine: string` (required) — Шаблонизатор для обработки шаблона входящего вебхука\n Значения: `liquid` — Liquid — условия, циклы и фильтры, `mustache` — Mustache — простая подстановка без логики\n - `challenge_key: string` (required, nullable) — Название поля проверки для верификации входящего вебхука. `null`, если не задано. Пример: `\"challenge\"`\n - `link_preview_enabled: boolean` (required) — Показывать превью ссылок в сообщениях входящего вебхука. Пример: `true`\n - `ignore_self_messages: boolean` (required) — Игнорировать входящие сообщения, отправленные самим ботом. Пример: `false`\n - `events_history_enabled: boolean` (required) — Сохранять историю событий бота для последующего получения через метод истории событий. Пример: `false`\n - `single_chat: boolean` (required) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false`\n - `can_edit: array of string` (required) — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `[\"admin\"]`\n - `who_can_add: string` (required) — Кто может добавлять бота в чаты\n Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей\n - `kind: string` (required) — Источник входящего вебхука. `null`, если входящий вебхук у бота выключен.\n Значения: `simple` — Свой формат: сообщение собирается из тела запроса по шаблону бота, `gitlab` — GitLab: Пачка сама разбирает запрос и собирает сообщение, `grafana` — Grafana: Пачка сама разбирает запрос и собирает сообщение\n - `unfurl_domains: array of string` (required) — Домены, ссылки на которые бот разворачивает. Пример: `[\"example.com\"]`\n - `last_request_at: date-time` (required, nullable) — Дата и время последнего запроса на входящий вебхук бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если запросов не было. Пример: `\"2025-05-15T14:30:00.000Z\"`\n - `oauth_client_enabled: boolean` (required) — Включена ли у бота авторизация от имени сотрудника. Пример: `true`\n - `oauth_client: object` (required) — Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией, поэтому включена ли она, смотрите в `oauth_client_enabled`. У бота без токенов может прийти `null`.\n - `client_id: string` (required) — Идентификатор клиента для ссылки авторизации. Пример: `\"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY\"`\n - `client_secret_preview: string` (required) — Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета. Пример: `\"cH5kR9mN...x7Qp\"`\n - `confidential: boolean` (required) — Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE. Пример: `true`\n - `redirect_uris: array of string` (required) — Адреса возврата после согласия. Пример: `[\"https://example.com/oauth/callback\"]`\n - `scopes: array of string` (required) — Права, которые бот запрашивает у сотрудника на экране согласия. Пример: `[\"messages:read\",\"messages:create\"]`\n - `promo: object` (required) — Страница бота в витрине. `null`, если авторизация у бота выключена.\n - `description: string` (required, nullable) — Описание бота. `null`, если не задано. Пример: `\"Собирает сводку по задачам Jira и присылает её в чат\"`\n - `published: boolean` (required) — Опубликован ли бот в витрине. Пример: `true`\n - `promo_images: array of object` (required) — Скриншоты страницы бота\n - `key: string` (required) — Ключ изображения. Пример: `\"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png\"`\n - `url: string` (required) — Ссылка на изображение. Пример: `\"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png\"`\n - `permissions: object` (required) — Что вы можете делать с этим ботом\n - `update_oauth_client: boolean` (required) — Менять авторизацию от имени сотрудника, страницу в витрине и имя бота. Пример: `true`\n - `recreate_token: boolean` (required) — Выпускать, менять и удалять токены бота и обновлять секрет клиента. Пример: `true`\n - `destroy: boolean` (required) — Удалить бота. Пример: `true`\n - `client_secret: string` — Секрет клиента. Приходит один раз: при включении серверного клиента, при переходе на него и при ротации секрета. Пример: `\"dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 1738816,\n \"name\": \"Бот задач\",\n \"nickname\": \"tasks_bot\",\n \"avatar_url\": null,\n \"creator_id\": 12,\n \"created_at\": \"2025-05-15T14:30:00.000Z\",\n \"authorized_users_count\": 3,\n \"last_used_at\": \"2025-05-20T09:15:00.000Z\",\n \"webhook\": {\n \"name\": \"Бот задач\",\n \"nickname\": \"tasks_bot\",\n \"outgoing_url\": \"https://www.website.com/tasks/new\",\n \"events\": [\n \"message_new\"\n ],\n \"trigger_on\": \"commands\",\n \"commands\": [\n \"/task\"\n ],\n \"scopes\": [\n \"messages:create\"\n ],\n \"template\": \"Заказ от {{ client }} на сумму {{ amount }} ₽\",\n \"template_engine\": \"liquid\",\n \"challenge_key\": \"challenge\",\n \"link_preview_enabled\": true,\n \"ignore_self_messages\": false,\n \"events_history_enabled\": false,\n \"single_chat\": false,\n \"can_edit\": [\n \"admin\"\n ],\n \"who_can_add\": \"creator\",\n \"kind\": \"simple\",\n \"unfurl_domains\": [],\n \"last_request_at\": \"2025-05-20T09:15:00.000Z\"\n },\n \"oauth_client_enabled\": true,\n \"oauth_client\": {\n \"client_id\": \"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY\",\n \"client_secret_preview\": \"dGhpc19p...ZWNy\",\n \"confidential\": true,\n \"redirect_uris\": [\n \"https://example.com/oauth/callback\"\n ],\n \"scopes\": [\n \"messages:read\",\n \"messages:create\"\n ]\n },\n \"promo\": {\n \"description\": \"Собирает сводку по задачам и присылает её в чат\",\n \"published\": true,\n \"promo_images\": []\n },\n \"permissions\": {\n \"update_oauth_client\": true,\n \"recreate_token\": true,\n \"destroy\": true\n }\n }\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"PUT","path":"/bots/{id}","summary":"Редактирование бота","scope":"bots:write","plan":null,"auth":true,"paginated":false,"command":"pachca bots update","docLink":"https://dev.pachca.com/api/bots/update","describe":"# PUT /bots/{id} — Редактирование бота\n\n> **Скоуп:** `bots:write`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор бота\n\n## Тело запроса\n\n- `webhook: object` — Объект параметров вебхука редактируемого бота\n - `name: string` (max length: 255) — Имя бота\n - `nickname: string` (max length: 255) — Никнейм бота. Должен заканчиваться на `_bot`.\n - `outgoing_url: string` — URL исходящего вебхука\n - `events: array of string` — События, на которые подписан бот\n - `trigger_on: string` — Условие срабатывания исходящего вебхука\n Значения: `commands` — Только на команды (триггер-слова) из commands, `all_messages` — На все сообщения в чатах, где есть бот, `unfurl` — На развёртывание ссылок (link previews)\n - `commands: array of string` — Команды бота (триггер-слова), на которые он реагирует при trigger_on = commands. Суммарная длина команд, объединённых через запятую, не должна превышать 255 символов.\n - `scopes: array of string` — Скоупы (права доступа) токена бота. Если не указано, бот получает набор по умолчанию. Боту доступны не все скоупы: часть из них разрешена только пользовательским ролям, и попытка назначить такой скоуп возвращает `400`. Служебные значения `bot` и `all` назначать нельзя.\n - `template: string` — Шаблон форматирования входящего вебхука\n - `template_engine: string` — Шаблонизатор для обработки шаблона входящего вебхука\n Значения: `liquid` — Liquid — условия, циклы и фильтры, `mustache` — Mustache — простая подстановка без логики\n - `challenge_key: string` — Название поля проверки для верификации входящего вебхука\n - `link_preview_enabled: boolean` (default: true) — Показывать превью ссылок в сообщениях входящего вебхука\n - `ignore_self_messages: boolean` (default: false) — Игнорировать входящие сообщения, отправленные самим ботом\n - `events_history_enabled: boolean` (default: false) — Сохранять историю событий бота для последующего получения через метод истории событий\n - `who_can_add: string` — Кто может добавлять бота в чаты\n Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей\n - `can_edit: array of string` — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель.\n - `single_chat: boolean` — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят.\n - `kind: string` — Источник входящего вебхука. Если у бота входящего вебхука не было, он включается.\n Значения: `simple` — Свой формат: сообщение собирается из тела запроса по шаблону бота, `gitlab` — GitLab: Пачка сама разбирает запрос и собирает сообщение, `grafana` — Grafana: Пачка сама разбирает запрос и собирает сообщение\n - `unfurl_domains: array of string` — Домены, ссылки на которые бот разворачивает, не больше 5. Работают вместе с событием `message_link_shared`.\n- `oauth_client: object` — Настройки авторизации от имени сотрудника. Если авторизация выключена, объект её включает, а `null` выключает: выданные сотрудниками авторизации отзываются, страница в витрине удаляется.\n - `confidential: boolean` — Где хранится секрет: `true` — серверное приложение хранит `client_secret` и обменивает код у себя, `false` — приложение без секрета (браузер, мобильное, CLI) обменивает код по PKCE. Если не передать, значение не меняется, а у нового клиента — `true`.\n - `redirect_uris: array of string` — Адреса возврата после согласия. HTTPS обязателен, кроме адресов на этом же компьютере (`localhost`, `127.0.0.1`). Адрес в ссылке авторизации должен совпадать с одним из списка точно, у `localhost` и `127.0.0.1` порт не сравнивается. При включении передайте хотя бы один адрес. Список заменяется целиком.\n - `scopes: array of string` — Права, которые бот запрашивает у сотрудника на экране согласия. Доступны только права, которые можно выдать самому боту. Если при включении поле не передать, запрашиваются все права бота. Список заменяется целиком.\n- `promo: object` — Страница бота в витрине. Доступна, только когда у бота включена авторизация.\n - `description: string` — Описание: чем бот занимается и зачем его подключать. Без описания бота нельзя опубликовать.\n - `published: boolean` — Опубликовать бота в витрине: он появится карточкой на вкладке «Обзор». Публикация требует описания.\n - `promo_images: array of string` — Скриншоты страницы бота, не больше 5: ключи загруженных изображений (`key` из [Получение подписи, ключа и других параметров](POST /uploads)). Список заменяется целиком, порядок сохраняется.\n\n## Эквивалентная команда\n\n```bash\npachca bots update 1738816 \\\n --name='Бот задач' \\\n --nickname=tasks_bot \\\n --outgoing-url=https://www.website.com/tasks/new \\\n --events='[\"message_new\"]' \\\n --commands='[\"/task\",\"/help\"]' \\\n --scopes='[\"messages:create\"]' \\\n --template='Заказ от {{ client }} на сумму {{ amount }} ₽' \\\n --challenge-key=challenge \\\n --can-edit='[\"admin\"]' \\\n --no-single-chat \\\n --kind=simple \\\n --unfurl-domains='[\"example.com\"]' \\\n --oauth-client='{\"confidential\":true,\"redirect_uris\":[\"https://example.com/oauth/callback\"],\"scopes\":[\"messages:read\",\"messages:create\"]}' \\\n --promo='{\"description\":\"Собирает сводку по задачам Jira и присылает её в чат\",\"published\":true,\"promo_images\":[\"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png\"]}' \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/bots/update\nПолная справка: `pachca api PUT /bots/{id} --docs` · схема: `--spec`\n","spec":{"method":"PUT","path":"/bots/{id}","description":"Редактирование бота\n\nМеняет настройки бота: перезаписываются только переданные поля.\n\nНик обязан заканчиваться на `_bot` и быть свободным в пространстве, иначе метод отвечает ошибкой валидации. Команды и скоупы заменяются переданным списком целиком. Скоупы относятся к основному токену бота — тому, что без имени, а если такого нет, к самому старому — и применяются к нему сразу, перевыпускать его не нужно. Права отдельного токена меняет [Изменение токена бота](PUT /bots/{id}/tokens/{token_id}).\n\nОбъект `oauth_client` включает авторизацию от имени сотрудника или меняет её настройки, а `null` её выключает: авторизации, выданные сотрудниками, отзываются, страница в витрине удаляется, собственные токены бота продолжают работать. Когда клиент становится серверным, его секрет приходит в `client_secret` один раз. Страницу в витрине задаёт `promo`, пока авторизация включена.\n\nВключать событие `message_link_shared`, а у бота с ним менять домены, адрес вебхука и историю событий может только администратор или владелец пространства.\n\nИмя бота, авторизацию от имени сотрудника и страницу в витрине меняют только его создатель и администратор пространства, если настройки бота открывают администраторам доступ к редактированию. Остальные настройки нельзя менять у бота, настройки которого вам недоступны (поле «Кто может редактировать настройки бота» находится во вкладке «Основное» в настройках бота).","parameters":[{"name":"id","in":"path","description":"Идентификатор бота","required":true,"schema":{"type":"integer","format":"int32","example":1738816},"example":1738816}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на обновление бота","properties":{"webhook":{"type":"object","description":"Объект параметров вебхука редактируемого бота","properties":{"name":{"type":"string","description":"Имя бота","example":"Бот задач","maxLength":255},"nickname":{"type":"string","description":"Никнейм бота. Должен заканчиваться на `_bot`.","example":"tasks_bot","maxLength":255},"outgoing_url":{"type":"string","description":"URL исходящего вебхука","example":"https://www.website.com/tasks/new"},"events":{"type":"array","description":"События, на которые подписан бот","example":["message_new"],"items":{"type":"string","description":"Событие исходящего вебхука бота","enum":["message_new","message_update","message_delete","reaction_new","reaction_delete","button_click","message_link_shared","chat_member_add","chat_member_remove","company_member_invite","company_member_confirm","company_member_suspend","company_member_activate","company_member_delete","company_member_update","video_call_started","video_call_finished","video_call_recording_ready"],"x-enum-descriptions":{"message_new":"Новое сообщение","message_update":"Сообщение отредактировано","message_delete":"Сообщение удалено","reaction_new":"Добавлена реакция","reaction_delete":"Реакция удалена","button_click":"Нажата кнопка","message_link_shared":"В сообщении отправлена ссылка (для unfurl)","chat_member_add":"Участник добавлен в чат","chat_member_remove":"Участник удалён из чата","company_member_invite":"Сотрудник приглашён в компанию","company_member_confirm":"Сотрудник подтвердил приглашение","company_member_suspend":"Сотрудник деактивирован","company_member_activate":"Сотрудник активирован","company_member_delete":"Сотрудник удалён из компании","company_member_update":"Данные сотрудника изменены","video_call_started":"Видеозвонок начался","video_call_finished":"Видеозвонок завершился","video_call_recording_ready":"Запись видеозвонка готова"},"$ref":"#/components/schemas/BotEventName"}},"trigger_on":{"description":"Условие срабатывания исходящего вебхука","default":"commands","example":"commands","allOf":[{"type":"string","description":"Условие срабатывания исходящего вебхука бота","enum":["commands","all_messages","unfurl"],"x-enum-descriptions":{"commands":"Только на команды (триггер-слова) из commands","all_messages":"На все сообщения в чатах, где есть бот","unfurl":"На развёртывание ссылок (link previews)"},"$ref":"#/components/schemas/BotTriggerOn"}]},"commands":{"type":"array","description":"Команды бота (триггер-слова), на которые он реагирует при trigger_on = commands. Суммарная длина команд, объединённых через запятую, не должна превышать 255 символов.","example":["/task","/help"],"items":{"type":"string"}},"scopes":{"type":"array","description":"Скоупы (права доступа) токена бота. Если не указано, бот получает набор по умолчанию. Боту доступны не все скоупы: часть из них разрешена только пользовательским ролям, и попытка назначить такой скоуп возвращает `400`. Служебные значения `bot` и `all` назначать нельзя.","example":["messages:create"],"items":{"type":"string"}},"template":{"type":"string","description":"Шаблон форматирования входящего вебхука","example":"Заказ от {{ client }} на сумму {{ amount }} ₽"},"template_engine":{"description":"Шаблонизатор для обработки шаблона входящего вебхука","default":"liquid","example":"liquid","allOf":[{"type":"string","description":"Шаблонизатор для форматирования входящих вебхуков","enum":["liquid","mustache"],"x-enum-descriptions":{"liquid":"Liquid — условия, циклы и фильтры","mustache":"Mustache — простая подстановка без логики"},"$ref":"#/components/schemas/BotTemplateEngine"}]},"challenge_key":{"type":"string","description":"Название поля проверки для верификации входящего вебхука","example":"challenge"},"link_preview_enabled":{"type":"boolean","description":"Показывать превью ссылок в сообщениях входящего вебхука","default":true,"example":true},"ignore_self_messages":{"type":"boolean","description":"Игнорировать входящие сообщения, отправленные самим ботом","default":false,"example":false},"events_history_enabled":{"type":"boolean","description":"Сохранять историю событий бота для последующего получения через метод истории событий","default":false,"example":false},"who_can_add":{"description":"Кто может добавлять бота в чаты","default":"creator","example":"creator","allOf":[{"type":"string","description":"Кто может добавлять бота в чаты","enum":["creator","creator_admin","creator_admin_user","anyone"],"x-enum-descriptions":{"creator":"Только создатель бота","creator_admin":"Создатель и администраторы компании","creator_admin_user":"Создатель, администраторы и участники компании","anyone":"Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей"},"$ref":"#/components/schemas/BotWhoCanAdd"}]},"can_edit":{"type":"array","description":"Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель.","example":["admin"],"items":{"type":"string","description":"Роль, которой разрешено редактировать настройки бота","enum":["admin","chat_owners"],"x-enum-descriptions":{"admin":"Администраторы компании","chat_owners":"Владельцы чатов, в которые добавлен бот"},"$ref":"#/components/schemas/BotCanEdit"}},"single_chat":{"type":"boolean","description":"Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят.","example":false},"kind":{"description":"Источник входящего вебхука. Если у бота входящего вебхука не было, он включается.","example":"simple","allOf":[{"type":"string","description":"Источник входящего вебхука бота","enum":["simple","gitlab","grafana"],"x-enum-descriptions":{"simple":"Свой формат: сообщение собирается из тела запроса по шаблону бота","gitlab":"GitLab: Пачка сама разбирает запрос и собирает сообщение","grafana":"Grafana: Пачка сама разбирает запрос и собирает сообщение"},"$ref":"#/components/schemas/BotWebhookKind"}]},"unfurl_domains":{"type":"array","description":"Домены, ссылки на которые бот разворачивает, не больше 5. Работают вместе с событием `message_link_shared`.","example":["example.com"],"items":{"type":"string"}}}},"oauth_client":{"type":"object","description":"Настройки авторизации от имени сотрудника. Если авторизация выключена, объект её включает, а `null` выключает: выданные сотрудниками авторизации отзываются, страница в витрине удаляется.","nullable":true,"allOf":[{"type":"object","description":"Настройки авторизации от имени сотрудника","properties":{"confidential":{"type":"boolean","description":"Где хранится секрет: `true` — серверное приложение хранит `client_secret` и обменивает код у себя, `false` — приложение без секрета (браузер, мобильное, CLI) обменивает код по PKCE. Если не передать, значение не меняется, а у нового клиента — `true`.","example":true},"redirect_uris":{"type":"array","description":"Адреса возврата после согласия. HTTPS обязателен, кроме адресов на этом же компьютере (`localhost`, `127.0.0.1`). Адрес в ссылке авторизации должен совпадать с одним из списка точно, у `localhost` и `127.0.0.1` порт не сравнивается. При включении передайте хотя бы один адрес. Список заменяется целиком.","example":["https://example.com/oauth/callback"],"items":{"type":"string"}},"scopes":{"type":"array","description":"Права, которые бот запрашивает у сотрудника на экране согласия. Доступны только права, которые можно выдать самому боту. Если при включении поле не передать, запрашиваются все права бота. Список заменяется целиком.","example":["messages:read","messages:create"],"items":{"type":"string"}}},"$ref":"#/components/schemas/BotOAuthClientRequest"}]},"promo":{"description":"Страница бота в витрине. Доступна, только когда у бота включена авторизация.","allOf":[{"type":"object","description":"Страница бота в витрине","properties":{"description":{"type":"string","description":"Описание: чем бот занимается и зачем его подключать. Без описания бота нельзя опубликовать.","example":"Собирает сводку по задачам Jira и присылает её в чат"},"published":{"type":"boolean","description":"Опубликовать бота в витрине: он появится карточкой на вкладке «Обзор». Публикация требует описания.","example":true},"promo_images":{"type":"array","description":"Скриншоты страницы бота, не больше 5: ключи загруженных изображений (`key` из [Получение подписи, ключа и других параметров](POST /uploads)). Список заменяется целиком, порядок сохраняется.","example":["attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"],"items":{"type":"string"}}},"$ref":"#/components/schemas/BotPromoRequest"}]}},"$ref":"#/components/schemas/BotUpdateRequest"}}}},"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Параметры бота","required":["id","name","nickname","avatar_url","creator_id","created_at","authorized_users_count","last_used_at","webhook","oauth_client_enabled","oauth_client","promo","permissions"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор бота (совпадает с `user_id` бота)","example":1738816},"name":{"type":"string","description":"Имя бота","example":"Бот задач"},"nickname":{"type":"string","description":"Никнейм бота","example":"tasks_bot"},"avatar_url":{"type":"string","description":"Ссылка на аватар бота. `null`, если аватар не задан.","example":"https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg","nullable":true},"creator_id":{"type":"integer","format":"int32","description":"Идентификатор сотрудника, создавшего бота. `null`, если создатель не записан.","example":12,"nullable":true},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2025-05-15T14:30:00.000Z"},"authorized_users_count":{"type":"integer","format":"int32","description":"Сколько сотрудников авторизовали бота","example":3},"last_used_at":{"type":"string","format":"date-time","description":"Дата и время, когда бот последний раз работал (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ: запрос на входящий вебхук или вызов API любым токеном бота, включая токены сотрудников. `null`, если такого не было. Использование токена учитывается не чаще раза в час.","example":"2025-05-15T14:30:00.000Z","nullable":true},"webhook":{"description":"Объект параметров вебхука","allOf":[{"type":"object","description":"Параметры вебхука бота","required":["name","nickname","outgoing_url","events","trigger_on","commands","scopes","template","template_engine","challenge_key","link_preview_enabled","ignore_self_messages","events_history_enabled","single_chat","can_edit","who_can_add","kind","unfurl_domains","last_request_at"],"properties":{"name":{"type":"string","description":"Имя бота","example":"Бот задач","maxLength":255},"nickname":{"type":"string","description":"Никнейм бота","example":"tasks_bot","maxLength":255},"outgoing_url":{"type":"string","description":"URL исходящего вебхука. `null`, если исходящий вебхук у бота не настроен.","example":"https://www.website.com/tasks/new","nullable":true},"events":{"type":"array","description":"События, на которые подписан бот","example":["message_new"],"items":{"type":"string","description":"Событие исходящего вебхука бота","enum":["message_new","message_update","message_delete","reaction_new","reaction_delete","button_click","message_link_shared","chat_member_add","chat_member_remove","company_member_invite","company_member_confirm","company_member_suspend","company_member_activate","company_member_delete","company_member_update","video_call_started","video_call_finished","video_call_recording_ready"],"x-enum-descriptions":{"message_new":"Новое сообщение","message_update":"Сообщение отредактировано","message_delete":"Сообщение удалено","reaction_new":"Добавлена реакция","reaction_delete":"Реакция удалена","button_click":"Нажата кнопка","message_link_shared":"В сообщении отправлена ссылка (для unfurl)","chat_member_add":"Участник добавлен в чат","chat_member_remove":"Участник удалён из чата","company_member_invite":"Сотрудник приглашён в компанию","company_member_confirm":"Сотрудник подтвердил приглашение","company_member_suspend":"Сотрудник деактивирован","company_member_activate":"Сотрудник активирован","company_member_delete":"Сотрудник удалён из компании","company_member_update":"Данные сотрудника изменены","video_call_started":"Видеозвонок начался","video_call_finished":"Видеозвонок завершился","video_call_recording_ready":"Запись видеозвонка готова"},"$ref":"#/components/schemas/BotEventName"}},"trigger_on":{"description":"Условие срабатывания исходящего вебхука","example":"commands","allOf":[{"type":"string","description":"Условие срабатывания исходящего вебхука бота","enum":["commands","all_messages","unfurl"],"x-enum-descriptions":{"commands":"Только на команды (триггер-слова) из commands","all_messages":"На все сообщения в чатах, где есть бот","unfurl":"На развёртывание ссылок (link previews)"},"$ref":"#/components/schemas/BotTriggerOn"}]},"commands":{"type":"array","description":"Команды бота (триггер-слова)","example":["/task"],"items":{"type":"string"}},"scopes":{"type":"array","description":"Скоупы (права доступа) токена бота. Набор по умолчанию шире того, что можно назначить явно, поэтому здесь могут встречаться значения, недоступные для явной установки.","example":["messages:create"],"items":{"type":"string"}},"template":{"type":"string","description":"Шаблон форматирования входящего вебхука. `null`, если не задан.","example":"Заказ от {{ client }} на сумму {{ amount }} ₽","nullable":true},"template_engine":{"description":"Шаблонизатор для обработки шаблона входящего вебхука","example":"liquid","allOf":[{"type":"string","description":"Шаблонизатор для форматирования входящих вебхуков","enum":["liquid","mustache"],"x-enum-descriptions":{"liquid":"Liquid — условия, циклы и фильтры","mustache":"Mustache — простая подстановка без логики"},"$ref":"#/components/schemas/BotTemplateEngine"}]},"challenge_key":{"type":"string","description":"Название поля проверки для верификации входящего вебхука. `null`, если не задано.","example":"challenge","nullable":true},"link_preview_enabled":{"type":"boolean","description":"Показывать превью ссылок в сообщениях входящего вебхука","example":true},"ignore_self_messages":{"type":"boolean","description":"Игнорировать входящие сообщения, отправленные самим ботом","example":false},"events_history_enabled":{"type":"boolean","description":"Сохранять историю событий бота для последующего получения через метод истории событий","example":false},"single_chat":{"type":"boolean","description":"Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят.","example":false},"can_edit":{"type":"array","description":"Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель.","example":["admin"],"items":{"type":"string","description":"Роль, которой разрешено редактировать настройки бота","enum":["admin","chat_owners"],"x-enum-descriptions":{"admin":"Администраторы компании","chat_owners":"Владельцы чатов, в которые добавлен бот"},"$ref":"#/components/schemas/BotCanEdit"}},"who_can_add":{"description":"Кто может добавлять бота в чаты","example":"creator","allOf":[{"type":"string","description":"Кто может добавлять бота в чаты","enum":["creator","creator_admin","creator_admin_user","anyone"],"x-enum-descriptions":{"creator":"Только создатель бота","creator_admin":"Создатель и администраторы компании","creator_admin_user":"Создатель, администраторы и участники компании","anyone":"Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей"},"$ref":"#/components/schemas/BotWhoCanAdd"}]},"kind":{"description":"Источник входящего вебхука. `null`, если входящий вебхук у бота выключен.","example":"simple","nullable":true,"allOf":[{"type":"string","description":"Источник входящего вебхука бота","enum":["simple","gitlab","grafana"],"x-enum-descriptions":{"simple":"Свой формат: сообщение собирается из тела запроса по шаблону бота","gitlab":"GitLab: Пачка сама разбирает запрос и собирает сообщение","grafana":"Grafana: Пачка сама разбирает запрос и собирает сообщение"},"$ref":"#/components/schemas/BotWebhookKind"}]},"unfurl_domains":{"type":"array","description":"Домены, ссылки на которые бот разворачивает","example":["example.com"],"items":{"type":"string"}},"last_request_at":{"type":"string","format":"date-time","description":"Дата и время последнего запроса на входящий вебхук бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если запросов не было.","example":"2025-05-15T14:30:00.000Z","nullable":true}},"$ref":"#/components/schemas/BotWebhook"}]},"oauth_client_enabled":{"type":"boolean","description":"Включена ли у бота авторизация от имени сотрудника","example":true},"oauth_client":{"type":"object","description":"Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией, поэтому включена ли она, смотрите в `oauth_client_enabled`. У бота без токенов может прийти `null`.","nullable":true,"allOf":[{"type":"object","description":"Авторизация от имени сотрудника","required":["client_id","client_secret_preview","confidential","redirect_uris","scopes"],"properties":{"client_id":{"type":"string","description":"Идентификатор клиента для ссылки авторизации","example":"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY"},"client_secret_preview":{"type":"string","description":"Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета.","example":"cH5kR9mN...x7Qp"},"confidential":{"type":"boolean","description":"Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE","example":true},"redirect_uris":{"type":"array","description":"Адреса возврата после согласия","example":["https://example.com/oauth/callback"],"items":{"type":"string"}},"scopes":{"type":"array","description":"Права, которые бот запрашивает у сотрудника на экране согласия","example":["messages:read","messages:create"],"items":{"type":"string"}}},"$ref":"#/components/schemas/BotOAuthClient"}]},"promo":{"type":"object","description":"Страница бота в витрине. `null`, если авторизация у бота выключена.","nullable":true,"allOf":[{"type":"object","description":"Страница бота в витрине","required":["description","published","promo_images"],"properties":{"description":{"type":"string","description":"Описание бота. `null`, если не задано.","example":"Собирает сводку по задачам Jira и присылает её в чат","nullable":true},"published":{"type":"boolean","description":"Опубликован ли бот в витрине","example":true},"promo_images":{"type":"array","description":"Скриншоты страницы бота","items":{"type":"object","description":"Скриншот страницы бота в витрине","required":["key","url"],"properties":{"key":{"type":"string","description":"Ключ изображения","example":"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"},"url":{"type":"string","description":"Ссылка на изображение","example":"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"}},"$ref":"#/components/schemas/BotPromoImage"}}},"$ref":"#/components/schemas/BotPromo"}]},"permissions":{"description":"Что вы можете делать с этим ботом","allOf":[{"type":"object","description":"Что текущий пользователь может делать с ботом","required":["update_oauth_client","recreate_token","destroy"],"properties":{"update_oauth_client":{"type":"boolean","description":"Менять авторизацию от имени сотрудника, страницу в витрине и имя бота","example":true},"recreate_token":{"type":"boolean","description":"Выпускать, менять и удалять токены бота и обновлять секрет клиента","example":true},"destroy":{"type":"boolean","description":"Удалить бота","example":true}},"$ref":"#/components/schemas/BotPermissions"}]},"client_secret":{"type":"string","description":"Секрет клиента. Приходит один раз: при включении серверного клиента, при переходе на него и при ротации секрета.","example":"dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA"}},"$ref":"#/components/schemas/BotResponse"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"},{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}]}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"bots:write","scopeRoles":["owner","admin","user"]},"paginated":false},"docs":"# Редактирование бота\n\n**Метод**: `PUT`\n\n**Путь**: `/bots/{id}`\n\n> **Скоуп:** `bots:write`\n\nМеняет настройки бота: перезаписываются только переданные поля.\n\nНик обязан заканчиваться на `_bot` и быть свободным в пространстве, иначе метод отвечает ошибкой валидации. Команды и скоупы заменяются переданным списком целиком. Скоупы относятся к основному токену бота — тому, что без имени, а если такого нет, к самому старому — и применяются к нему сразу, перевыпускать его не нужно. Права отдельного токена меняет [Изменение токена бота](PUT /bots/{id}/tokens/{token_id}).\n\nОбъект `oauth_client` включает авторизацию от имени сотрудника или меняет её настройки, а `null` её выключает: авторизации, выданные сотрудниками, отзываются, страница в витрине удаляется, собственные токены бота продолжают работать. Когда клиент становится серверным, его секрет приходит в `client_secret` один раз. Страницу в витрине задаёт `promo`, пока авторизация включена.\n\nВключать событие `message_link_shared`, а у бота с ним менять домены, адрес вебхука и историю событий может только администратор или владелец пространства.\n\nИмя бота, авторизацию от имени сотрудника и страницу в витрине меняют только его создатель и администратор пространства, если настройки бота открывают администраторам доступ к редактированию. Остальные настройки нельзя менять у бота, настройки которого вам недоступны (поле «Кто может редактировать настройки бота» находится во вкладке «Основное» в настройках бота).\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор бота\n\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `webhook: object` — Объект параметров вебхука редактируемого бота\n - `name: string` (max length: 255) — Имя бота. Пример: `\"Бот задач\"`\n - `nickname: string` (max length: 255) — Никнейм бота. Должен заканчиваться на `_bot`. Пример: `\"tasks_bot\"`\n - `outgoing_url: string` — URL исходящего вебхука. Пример: `\"https://www.website.com/tasks/new\"`\n - `events: array of string` — События, на которые подписан бот. Пример: `[\"message_new\"]`\n - `trigger_on: string` — Условие срабатывания исходящего вебхука\n Значения: `commands` — Только на команды (триггер-слова) из commands, `all_messages` — На все сообщения в чатах, где есть бот, `unfurl` — На развёртывание ссылок (link previews)\n - `commands: array of string` — Команды бота (триггер-слова), на которые он реагирует при trigger_on = commands. Суммарная длина команд, объединённых через запятую, не должна превышать 255 символов. Пример: `[\"/task\",\"/help\"]`\n - `scopes: array of string` — Скоупы (права доступа) токена бота. Если не указано, бот получает набор по умолчанию. Боту доступны не все скоупы: часть из них разрешена только пользовательским ролям, и попытка назначить такой скоуп возвращает `400`. Служебные значения `bot` и `all` назначать нельзя. Пример: `[\"messages:create\"]`\n - `template: string` — Шаблон форматирования входящего вебхука. Пример: `\"Заказ от {{ client }} на сумму {{ amount }} ₽\"`\n - `template_engine: string` — Шаблонизатор для обработки шаблона входящего вебхука\n Значения: `liquid` — Liquid — условия, циклы и фильтры, `mustache` — Mustache — простая подстановка без логики\n - `challenge_key: string` — Название поля проверки для верификации входящего вебхука. Пример: `\"challenge\"`\n - `link_preview_enabled: boolean` (default: true) — Показывать превью ссылок в сообщениях входящего вебхука. Пример: `true`\n - `ignore_self_messages: boolean` (default: false) — Игнорировать входящие сообщения, отправленные самим ботом. Пример: `false`\n - `events_history_enabled: boolean` (default: false) — Сохранять историю событий бота для последующего получения через метод истории событий. Пример: `false`\n - `who_can_add: string` — Кто может добавлять бота в чаты\n Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей\n - `can_edit: array of string` — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `[\"admin\"]`\n - `single_chat: boolean` — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false`\n - `kind: string` — Источник входящего вебхука. Если у бота входящего вебхука не было, он включается.\n Значения: `simple` — Свой формат: сообщение собирается из тела запроса по шаблону бота, `gitlab` — GitLab: Пачка сама разбирает запрос и собирает сообщение, `grafana` — Grafana: Пачка сама разбирает запрос и собирает сообщение\n - `unfurl_domains: array of string` — Домены, ссылки на которые бот разворачивает, не больше 5. Работают вместе с событием `message_link_shared`. Пример: `[\"example.com\"]`\n- `oauth_client: object` — Настройки авторизации от имени сотрудника. Если авторизация выключена, объект её включает, а `null` выключает: выданные сотрудниками авторизации отзываются, страница в витрине удаляется.\n - `confidential: boolean` — Где хранится секрет: `true` — серверное приложение хранит `client_secret` и обменивает код у себя, `false` — приложение без секрета (браузер, мобильное, CLI) обменивает код по PKCE. Если не передать, значение не меняется, а у нового клиента — `true`. Пример: `true`\n - `redirect_uris: array of string` — Адреса возврата после согласия. HTTPS обязателен, кроме адресов на этом же компьютере (`localhost`, `127.0.0.1`). Адрес в ссылке авторизации должен совпадать с одним из списка точно, у `localhost` и `127.0.0.1` порт не сравнивается. При включении передайте хотя бы один адрес. Список заменяется целиком. Пример: `[\"https://example.com/oauth/callback\"]`\n - `scopes: array of string` — Права, которые бот запрашивает у сотрудника на экране согласия. Доступны только права, которые можно выдать самому боту. Если при включении поле не передать, запрашиваются все права бота. Список заменяется целиком. Пример: `[\"messages:read\",\"messages:create\"]`\n- `promo: object` — Страница бота в витрине. Доступна, только когда у бота включена авторизация.\n - `description: string` — Описание: чем бот занимается и зачем его подключать. Без описания бота нельзя опубликовать. Пример: `\"Собирает сводку по задачам Jira и присылает её в чат\"`\n - `published: boolean` — Опубликовать бота в витрине: он появится карточкой на вкладке «Обзор». Публикация требует описания. Пример: `true`\n - `promo_images: array of string` — Скриншоты страницы бота, не больше 5: ключи загруженных изображений (`key` из [Получение подписи, ключа и других параметров](POST /uploads)). Список заменяется целиком, порядок сохраняется. Пример: `[\"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png\"]`\n\n### Пример\n\n```json\n{\n \"webhook\": {\n \"name\": \"Бот задач\",\n \"nickname\": \"tasks_bot\",\n \"outgoing_url\": \"https://www.website.com/tasks/new\",\n \"events\": [\n \"message_new\"\n ],\n \"commands\": [\n \"/task\",\n \"/help\"\n ],\n \"scopes\": [\n \"messages:create\"\n ],\n \"template\": \"Заказ от {{ client }} на сумму {{ amount }} ₽\",\n \"challenge_key\": \"challenge\",\n \"can_edit\": [\n \"admin\"\n ],\n \"single_chat\": false,\n \"kind\": \"simple\",\n \"unfurl_domains\": [\n \"example.com\"\n ]\n },\n \"oauth_client\": {\n \"confidential\": true,\n \"redirect_uris\": [\n \"https://example.com/oauth/callback\"\n ],\n \"scopes\": [\n \"messages:read\",\n \"messages:create\"\n ]\n },\n \"promo\": {\n \"description\": \"Собирает сводку по задачам Jira и присылает её в чат\",\n \"published\": true,\n \"promo_images\": [\n \"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png\"\n ]\n }\n}\n```\n\n## Пример запроса\n\n```bash\ncurl -X PUT \"https://api.pachca.com/api/shared/v1/bots/1738816\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"webhook\": {\n \"name\": \"Бот задач\",\n \"nickname\": \"tasks_bot\",\n \"outgoing_url\": \"https://www.website.com/tasks/new\",\n \"events\": [\n \"message_new\"\n ],\n \"commands\": [\n \"/task\",\n \"/help\"\n ],\n \"scopes\": [\n \"messages:create\"\n ],\n \"template\": \"Заказ от {{ client }} на сумму {{ amount }} ₽\",\n \"challenge_key\": \"challenge\",\n \"can_edit\": [\n \"admin\"\n ],\n \"single_chat\": false,\n \"kind\": \"simple\",\n \"unfurl_domains\": [\n \"example.com\"\n ]\n },\n \"oauth_client\": {\n \"confidential\": true,\n \"redirect_uris\": [\n \"https://example.com/oauth/callback\"\n ],\n \"scopes\": [\n \"messages:read\",\n \"messages:create\"\n ]\n },\n \"promo\": {\n \"description\": \"Собирает сводку по задачам Jira и присылает её в чат\",\n \"published\": true,\n \"promo_images\": [\n \"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png\"\n ]\n }\n}'\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Параметры бота\n - `id: integer, int32` (required) — Идентификатор бота (совпадает с `user_id` бота). Пример: `1738816`\n - `name: string` (required) — Имя бота. Пример: `\"Бот задач\"`\n - `nickname: string` (required) — Никнейм бота. Пример: `\"tasks_bot\"`\n - `avatar_url: string` (required, nullable) — Ссылка на аватар бота. `null`, если аватар не задан. Пример: `\"https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg\"`\n - `creator_id: integer, int32` (required, nullable) — Идентификатор сотрудника, создавшего бота. `null`, если создатель не записан. Пример: `12`\n - `created_at: date-time` (required) — Дата и время создания бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2025-05-15T14:30:00.000Z\"`\n - `authorized_users_count: integer, int32` (required) — Сколько сотрудников авторизовали бота. Пример: `3`\n - `last_used_at: date-time` (required, nullable) — Дата и время, когда бот последний раз работал (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ: запрос на входящий вебхук или вызов API любым токеном бота, включая токены сотрудников. `null`, если такого не было. Использование токена учитывается не чаще раза в час. Пример: `\"2025-05-15T14:30:00.000Z\"`\n - `webhook: object` (required) — Объект параметров вебхука\n - `name: string` (required, max length: 255) — Имя бота. Пример: `\"Бот задач\"`\n - `nickname: string` (required, max length: 255) — Никнейм бота. Пример: `\"tasks_bot\"`\n - `outgoing_url: string` (required, nullable) — URL исходящего вебхука. `null`, если исходящий вебхук у бота не настроен. Пример: `\"https://www.website.com/tasks/new\"`\n - `events: array of string` (required) — События, на которые подписан бот. Пример: `[\"message_new\"]`\n - `trigger_on: string` (required) — Условие срабатывания исходящего вебхука\n Значения: `commands` — Только на команды (триггер-слова) из commands, `all_messages` — На все сообщения в чатах, где есть бот, `unfurl` — На развёртывание ссылок (link previews)\n - `commands: array of string` (required) — Команды бота (триггер-слова). Пример: `[\"/task\"]`\n - `scopes: array of string` (required) — Скоупы (права доступа) токена бота. Набор по умолчанию шире того, что можно назначить явно, поэтому здесь могут встречаться значения, недоступные для явной установки. Пример: `[\"messages:create\"]`\n - `template: string` (required, nullable) — Шаблон форматирования входящего вебхука. `null`, если не задан. Пример: `\"Заказ от {{ client }} на сумму {{ amount }} ₽\"`\n - `template_engine: string` (required) — Шаблонизатор для обработки шаблона входящего вебхука\n Значения: `liquid` — Liquid — условия, циклы и фильтры, `mustache` — Mustache — простая подстановка без логики\n - `challenge_key: string` (required, nullable) — Название поля проверки для верификации входящего вебхука. `null`, если не задано. Пример: `\"challenge\"`\n - `link_preview_enabled: boolean` (required) — Показывать превью ссылок в сообщениях входящего вебхука. Пример: `true`\n - `ignore_self_messages: boolean` (required) — Игнорировать входящие сообщения, отправленные самим ботом. Пример: `false`\n - `events_history_enabled: boolean` (required) — Сохранять историю событий бота для последующего получения через метод истории событий. Пример: `false`\n - `single_chat: boolean` (required) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false`\n - `can_edit: array of string` (required) — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `[\"admin\"]`\n - `who_can_add: string` (required) — Кто может добавлять бота в чаты\n Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей\n - `kind: string` (required) — Источник входящего вебхука. `null`, если входящий вебхук у бота выключен.\n Значения: `simple` — Свой формат: сообщение собирается из тела запроса по шаблону бота, `gitlab` — GitLab: Пачка сама разбирает запрос и собирает сообщение, `grafana` — Grafana: Пачка сама разбирает запрос и собирает сообщение\n - `unfurl_domains: array of string` (required) — Домены, ссылки на которые бот разворачивает. Пример: `[\"example.com\"]`\n - `last_request_at: date-time` (required, nullable) — Дата и время последнего запроса на входящий вебхук бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если запросов не было. Пример: `\"2025-05-15T14:30:00.000Z\"`\n - `oauth_client_enabled: boolean` (required) — Включена ли у бота авторизация от имени сотрудника. Пример: `true`\n - `oauth_client: object` (required) — Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией, поэтому включена ли она, смотрите в `oauth_client_enabled`. У бота без токенов может прийти `null`.\n - `client_id: string` (required) — Идентификатор клиента для ссылки авторизации. Пример: `\"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY\"`\n - `client_secret_preview: string` (required) — Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета. Пример: `\"cH5kR9mN...x7Qp\"`\n - `confidential: boolean` (required) — Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE. Пример: `true`\n - `redirect_uris: array of string` (required) — Адреса возврата после согласия. Пример: `[\"https://example.com/oauth/callback\"]`\n - `scopes: array of string` (required) — Права, которые бот запрашивает у сотрудника на экране согласия. Пример: `[\"messages:read\",\"messages:create\"]`\n - `promo: object` (required) — Страница бота в витрине. `null`, если авторизация у бота выключена.\n - `description: string` (required, nullable) — Описание бота. `null`, если не задано. Пример: `\"Собирает сводку по задачам Jira и присылает её в чат\"`\n - `published: boolean` (required) — Опубликован ли бот в витрине. Пример: `true`\n - `promo_images: array of object` (required) — Скриншоты страницы бота\n - `key: string` (required) — Ключ изображения. Пример: `\"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png\"`\n - `url: string` (required) — Ссылка на изображение. Пример: `\"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png\"`\n - `permissions: object` (required) — Что вы можете делать с этим ботом\n - `update_oauth_client: boolean` (required) — Менять авторизацию от имени сотрудника, страницу в витрине и имя бота. Пример: `true`\n - `recreate_token: boolean` (required) — Выпускать, менять и удалять токены бота и обновлять секрет клиента. Пример: `true`\n - `destroy: boolean` (required) — Удалить бота. Пример: `true`\n - `client_secret: string` — Секрет клиента. Приходит один раз: при включении серверного клиента, при переходе на него и при ротации секрета. Пример: `\"dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 1738816,\n \"name\": \"Бот задач\",\n \"nickname\": \"tasks_bot\",\n \"avatar_url\": \"https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg\",\n \"creator_id\": 12,\n \"created_at\": \"2025-05-15T14:30:00.000Z\",\n \"authorized_users_count\": 3,\n \"last_used_at\": \"2025-05-15T14:30:00.000Z\",\n \"webhook\": {\n \"name\": \"Бот задач\",\n \"nickname\": \"tasks_bot\",\n \"outgoing_url\": \"https://www.website.com/tasks/new\",\n \"events\": [\n \"message_new\"\n ],\n \"trigger_on\": \"commands\",\n \"commands\": [\n \"/task\"\n ],\n \"scopes\": [\n \"messages:create\"\n ],\n \"template\": \"Заказ от {{ client }} на сумму {{ amount }} ₽\",\n \"template_engine\": \"liquid\",\n \"challenge_key\": \"challenge\",\n \"link_preview_enabled\": true,\n \"ignore_self_messages\": false,\n \"events_history_enabled\": false,\n \"single_chat\": false,\n \"can_edit\": [\n \"admin\"\n ],\n \"who_can_add\": \"creator\",\n \"kind\": \"simple\",\n \"unfurl_domains\": [\n \"example.com\"\n ],\n \"last_request_at\": \"2025-05-15T14:30:00.000Z\"\n },\n \"oauth_client_enabled\": true,\n \"oauth_client\": {\n \"client_id\": \"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY\",\n \"client_secret_preview\": \"cH5kR9mN...x7Qp\",\n \"confidential\": true,\n \"redirect_uris\": [\n \"https://example.com/oauth/callback\"\n ],\n \"scopes\": [\n \"messages:read\",\n \"messages:create\"\n ]\n },\n \"promo\": {\n \"description\": \"Собирает сводку по задачам Jira и присылает её в чат\",\n \"published\": true,\n \"promo_images\": [\n {\n \"key\": \"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png\",\n \"url\": \"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png\"\n }\n ]\n },\n \"permissions\": {\n \"update_oauth_client\": true,\n \"recreate_token\": true,\n \"destroy\": true\n },\n \"client_secret\": \"dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA\"\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n**anyOf** - один из вариантов:\n\n- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)\n - `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403)\n - `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n - `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"DELETE","path":"/bots/{id}","summary":"Удаление бота","scope":"bots:write","plan":null,"auth":true,"paginated":false,"command":"pachca bots delete","docLink":"https://dev.pachca.com/api/bots/delete","describe":"# DELETE /bots/{id} — Удаление бота\n\n> **Скоуп:** `bots:write`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор бота\n\n## Эквивалентная команда\n\n```bash\npachca bots delete 1738816 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/bots/delete\nПолная справка: `pachca api DELETE /bots/{id} --docs` · схема: `--spec`\n","spec":{"method":"DELETE","path":"/bots/{id}","description":"Удаление бота\n\nУбирает бота из пространства насовсем. Все токены бота сразу перестают работать, как и авторизации, выданные ему сотрудниками. Бот исключается из всех чатов, его вебхуки удаляются, страница в витрине тоже.\n\nУдаление доступно создателю бота, а также администратору пространства, если настройки бота открывают администраторам доступ к редактированию. Владельцы и администраторы чатов удалять бота не могут, даже если им разрешено его редактировать.","parameters":[{"name":"id","in":"path","description":"Идентификатор бота","required":true,"schema":{"type":"integer","format":"int32","example":1738816},"example":1738816}],"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"bots:write","scopeRoles":["owner","admin","user"]},"paginated":false},"docs":"# Удаление бота\n\n**Метод**: `DELETE`\n\n**Путь**: `/bots/{id}`\n\n> **Скоуп:** `bots:write`\n\nУбирает бота из пространства насовсем. Все токены бота сразу перестают работать, как и авторизации, выданные ему сотрудниками. Бот исключается из всех чатов, его вебхуки удаляются, страница в витрине тоже.\n\nУдаление доступно создателю бота, а также администратору пространства, если настройки бота открывают администраторам доступ к редактированию. Владельцы и администраторы чатов удалять бота не могут, даже если им разрешено его редактировать.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор бота\n\n\n## Пример запроса\n\n```bash\ncurl -X DELETE \"https://api.pachca.com/api/shared/v1/bots/1738816\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"POST","path":"/bots/{id}/recreate_token","summary":"Ротация токена бота","scope":"bots:write","plan":null,"auth":true,"paginated":false,"command":"pachca bots recreate-token","docLink":"https://dev.pachca.com/api/bots/recreate-token","describe":"# POST /bots/{id}/recreate_token — Ротация токена бота\n\n> **Скоуп:** `bots:write`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор бота\n\n## Эквивалентная команда\n\n```bash\npachca bots recreate-token 1738816 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/bots/recreate-token\nПолная справка: `pachca api POST /bots/{id}/recreate_token --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/bots/{id}/recreate_token","description":"Ротация токена бота\n\nМетод генерирует боту новый `access_token` и сразу инвалидирует прежний. Используйте его при компрометации токена или плановой ротации секрета в `CI`.\n\nПеревыпускается основной токен бота — тот, что без имени, а если такого нет, самый старый. Отдельный токен перевыпускает [Перевыпуск токена бота](POST /bots/{id}/tokens/{token_id}/reissue).\n\nНовый токен возвращается в ответе только один раз — сохраните его сразу. Права у него те же: скоупы переносятся с прежнего токена.\n\nРотация доступна создателю бота, а также администратору пространства, если настройки бота открывают администраторам доступ к редактированию. Владелец чата, где состоит бот, ротировать токен не может, даже когда остальные настройки бота ему открыты.","parameters":[{"name":"id","in":"path","description":"Идентификатор бота","required":true,"schema":{"type":"integer","format":"int32","example":1738816},"example":1738816}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Параметры созданного бота","required":["id","name","nickname","avatar_url","creator_id","created_at","authorized_users_count","last_used_at","webhook","oauth_client_enabled","oauth_client","promo","permissions"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор бота (совпадает с `user_id` бота)","example":1738816},"name":{"type":"string","description":"Имя бота","example":"Бот задач"},"nickname":{"type":"string","description":"Никнейм бота","example":"tasks_bot"},"avatar_url":{"type":"string","description":"Ссылка на аватар бота. `null`, если аватар не задан.","example":"https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg","nullable":true},"creator_id":{"type":"integer","format":"int32","description":"Идентификатор сотрудника, создавшего бота. `null`, если создатель не записан.","example":12,"nullable":true},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2025-05-15T14:30:00.000Z"},"authorized_users_count":{"type":"integer","format":"int32","description":"Сколько сотрудников авторизовали бота","example":3},"last_used_at":{"type":"string","format":"date-time","description":"Дата и время, когда бот последний раз работал (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ: запрос на входящий вебхук или вызов API любым токеном бота, включая токены сотрудников. `null`, если такого не было. Использование токена учитывается не чаще раза в час.","example":"2025-05-15T14:30:00.000Z","nullable":true},"webhook":{"description":"Объект параметров вебхука","allOf":[{"type":"object","description":"Параметры вебхука бота","required":["name","nickname","outgoing_url","events","trigger_on","commands","scopes","template","template_engine","challenge_key","link_preview_enabled","ignore_self_messages","events_history_enabled","single_chat","can_edit","who_can_add","kind","unfurl_domains","last_request_at"],"properties":{"name":{"type":"string","description":"Имя бота","example":"Бот задач","maxLength":255},"nickname":{"type":"string","description":"Никнейм бота","example":"tasks_bot","maxLength":255},"outgoing_url":{"type":"string","description":"URL исходящего вебхука. `null`, если исходящий вебхук у бота не настроен.","example":"https://www.website.com/tasks/new","nullable":true},"events":{"type":"array","description":"События, на которые подписан бот","example":["message_new"],"items":{"type":"string","description":"Событие исходящего вебхука бота","enum":["message_new","message_update","message_delete","reaction_new","reaction_delete","button_click","message_link_shared","chat_member_add","chat_member_remove","company_member_invite","company_member_confirm","company_member_suspend","company_member_activate","company_member_delete","company_member_update","video_call_started","video_call_finished","video_call_recording_ready"],"x-enum-descriptions":{"message_new":"Новое сообщение","message_update":"Сообщение отредактировано","message_delete":"Сообщение удалено","reaction_new":"Добавлена реакция","reaction_delete":"Реакция удалена","button_click":"Нажата кнопка","message_link_shared":"В сообщении отправлена ссылка (для unfurl)","chat_member_add":"Участник добавлен в чат","chat_member_remove":"Участник удалён из чата","company_member_invite":"Сотрудник приглашён в компанию","company_member_confirm":"Сотрудник подтвердил приглашение","company_member_suspend":"Сотрудник деактивирован","company_member_activate":"Сотрудник активирован","company_member_delete":"Сотрудник удалён из компании","company_member_update":"Данные сотрудника изменены","video_call_started":"Видеозвонок начался","video_call_finished":"Видеозвонок завершился","video_call_recording_ready":"Запись видеозвонка готова"},"$ref":"#/components/schemas/BotEventName"}},"trigger_on":{"description":"Условие срабатывания исходящего вебхука","example":"commands","allOf":[{"type":"string","description":"Условие срабатывания исходящего вебхука бота","enum":["commands","all_messages","unfurl"],"x-enum-descriptions":{"commands":"Только на команды (триггер-слова) из commands","all_messages":"На все сообщения в чатах, где есть бот","unfurl":"На развёртывание ссылок (link previews)"},"$ref":"#/components/schemas/BotTriggerOn"}]},"commands":{"type":"array","description":"Команды бота (триггер-слова)","example":["/task"],"items":{"type":"string"}},"scopes":{"type":"array","description":"Скоупы (права доступа) токена бота. Набор по умолчанию шире того, что можно назначить явно, поэтому здесь могут встречаться значения, недоступные для явной установки.","example":["messages:create"],"items":{"type":"string"}},"template":{"type":"string","description":"Шаблон форматирования входящего вебхука. `null`, если не задан.","example":"Заказ от {{ client }} на сумму {{ amount }} ₽","nullable":true},"template_engine":{"description":"Шаблонизатор для обработки шаблона входящего вебхука","example":"liquid","allOf":[{"type":"string","description":"Шаблонизатор для форматирования входящих вебхуков","enum":["liquid","mustache"],"x-enum-descriptions":{"liquid":"Liquid — условия, циклы и фильтры","mustache":"Mustache — простая подстановка без логики"},"$ref":"#/components/schemas/BotTemplateEngine"}]},"challenge_key":{"type":"string","description":"Название поля проверки для верификации входящего вебхука. `null`, если не задано.","example":"challenge","nullable":true},"link_preview_enabled":{"type":"boolean","description":"Показывать превью ссылок в сообщениях входящего вебхука","example":true},"ignore_self_messages":{"type":"boolean","description":"Игнорировать входящие сообщения, отправленные самим ботом","example":false},"events_history_enabled":{"type":"boolean","description":"Сохранять историю событий бота для последующего получения через метод истории событий","example":false},"single_chat":{"type":"boolean","description":"Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят.","example":false},"can_edit":{"type":"array","description":"Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель.","example":["admin"],"items":{"type":"string","description":"Роль, которой разрешено редактировать настройки бота","enum":["admin","chat_owners"],"x-enum-descriptions":{"admin":"Администраторы компании","chat_owners":"Владельцы чатов, в которые добавлен бот"},"$ref":"#/components/schemas/BotCanEdit"}},"who_can_add":{"description":"Кто может добавлять бота в чаты","example":"creator","allOf":[{"type":"string","description":"Кто может добавлять бота в чаты","enum":["creator","creator_admin","creator_admin_user","anyone"],"x-enum-descriptions":{"creator":"Только создатель бота","creator_admin":"Создатель и администраторы компании","creator_admin_user":"Создатель, администраторы и участники компании","anyone":"Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей"},"$ref":"#/components/schemas/BotWhoCanAdd"}]},"kind":{"description":"Источник входящего вебхука. `null`, если входящий вебхук у бота выключен.","example":"simple","nullable":true,"allOf":[{"type":"string","description":"Источник входящего вебхука бота","enum":["simple","gitlab","grafana"],"x-enum-descriptions":{"simple":"Свой формат: сообщение собирается из тела запроса по шаблону бота","gitlab":"GitLab: Пачка сама разбирает запрос и собирает сообщение","grafana":"Grafana: Пачка сама разбирает запрос и собирает сообщение"},"$ref":"#/components/schemas/BotWebhookKind"}]},"unfurl_domains":{"type":"array","description":"Домены, ссылки на которые бот разворачивает","example":["example.com"],"items":{"type":"string"}},"last_request_at":{"type":"string","format":"date-time","description":"Дата и время последнего запроса на входящий вебхук бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если запросов не было.","example":"2025-05-15T14:30:00.000Z","nullable":true}},"$ref":"#/components/schemas/BotWebhook"}]},"oauth_client_enabled":{"type":"boolean","description":"Включена ли у бота авторизация от имени сотрудника","example":true},"oauth_client":{"type":"object","description":"Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией, поэтому включена ли она, смотрите в `oauth_client_enabled`. У бота без токенов может прийти `null`.","nullable":true,"allOf":[{"type":"object","description":"Авторизация от имени сотрудника","required":["client_id","client_secret_preview","confidential","redirect_uris","scopes"],"properties":{"client_id":{"type":"string","description":"Идентификатор клиента для ссылки авторизации","example":"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY"},"client_secret_preview":{"type":"string","description":"Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета.","example":"cH5kR9mN...x7Qp"},"confidential":{"type":"boolean","description":"Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE","example":true},"redirect_uris":{"type":"array","description":"Адреса возврата после согласия","example":["https://example.com/oauth/callback"],"items":{"type":"string"}},"scopes":{"type":"array","description":"Права, которые бот запрашивает у сотрудника на экране согласия","example":["messages:read","messages:create"],"items":{"type":"string"}}},"$ref":"#/components/schemas/BotOAuthClient"}]},"promo":{"type":"object","description":"Страница бота в витрине. `null`, если авторизация у бота выключена.","nullable":true,"allOf":[{"type":"object","description":"Страница бота в витрине","required":["description","published","promo_images"],"properties":{"description":{"type":"string","description":"Описание бота. `null`, если не задано.","example":"Собирает сводку по задачам Jira и присылает её в чат","nullable":true},"published":{"type":"boolean","description":"Опубликован ли бот в витрине","example":true},"promo_images":{"type":"array","description":"Скриншоты страницы бота","items":{"type":"object","description":"Скриншот страницы бота в витрине","required":["key","url"],"properties":{"key":{"type":"string","description":"Ключ изображения","example":"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"},"url":{"type":"string","description":"Ссылка на изображение","example":"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"}},"$ref":"#/components/schemas/BotPromoImage"}}},"$ref":"#/components/schemas/BotPromo"}]},"permissions":{"description":"Что вы можете делать с этим ботом","allOf":[{"type":"object","description":"Что текущий пользователь может делать с ботом","required":["update_oauth_client","recreate_token","destroy"],"properties":{"update_oauth_client":{"type":"boolean","description":"Менять авторизацию от имени сотрудника, страницу в витрине и имя бота","example":true},"recreate_token":{"type":"boolean","description":"Выпускать, менять и удалять токены бота и обновлять секрет клиента","example":true},"destroy":{"type":"boolean","description":"Удалить бота","example":true}},"$ref":"#/components/schemas/BotPermissions"}]},"client_secret":{"type":"string","description":"Секрет клиента. Приходит один раз: при включении серверного клиента, при переходе на него и при ротации секрета.","example":"dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA"},"access_token":{"type":"string","description":"Токен доступа бота. Возвращается при создании бота и при ротации токена. Не приходит, если бот создан с `empty: true`.","example":"bm90X2FfcmVhbF90b2tlbg"}},"$ref":"#/components/schemas/BotCreateResponse"}}},"example":{"data":{"id":1738816,"name":"Бот задач","nickname":"tasks_bot","avatar_url":null,"creator_id":12,"created_at":"2025-05-15T14:30:00.000Z","authorized_users_count":3,"last_used_at":"2025-05-20T09:15:00.000Z","webhook":{"name":"Бот задач","nickname":"tasks_bot","outgoing_url":"https://www.website.com/tasks/new","events":["message_new"],"trigger_on":"commands","commands":["/task"],"scopes":["messages:create"],"template":"Заказ от {{ client }} на сумму {{ amount }} ₽","template_engine":"liquid","challenge_key":"challenge","link_preview_enabled":true,"ignore_self_messages":false,"events_history_enabled":false,"single_chat":false,"can_edit":["admin"],"who_can_add":"creator","kind":"simple","unfurl_domains":[],"last_request_at":"2025-05-20T09:15:00.000Z"},"oauth_client_enabled":true,"oauth_client":{"client_id":"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY","client_secret_preview":"dGhpc19p...ZWNy","confidential":true,"redirect_uris":["https://example.com/oauth/callback"],"scopes":["messages:read","messages:create"]},"promo":{"description":"Собирает сводку по задачам и присылает её в чат","published":true,"promo_images":[]},"permissions":{"update_oauth_client":true,"recreate_token":true,"destroy":true},"access_token":"bm90X2FfcmVhbF90b2tlbg"}}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"bots:write","scopeRoles":["owner","admin","user"]},"paginated":false},"docs":"# Ротация токена бота\n\n**Метод**: `POST`\n\n**Путь**: `/bots/{id}/recreate_token`\n\n> **Скоуп:** `bots:write`\n\nМетод генерирует боту новый `access_token` и сразу инвалидирует прежний. Используйте его при компрометации токена или плановой ротации секрета в `CI`.\n\nПеревыпускается основной токен бота — тот, что без имени, а если такого нет, самый старый. Отдельный токен перевыпускает [Перевыпуск токена бота](POST /bots/{id}/tokens/{token_id}/reissue).\n\nНовый токен возвращается в ответе только один раз — сохраните его сразу. Права у него те же: скоупы переносятся с прежнего токена.\n\nРотация доступна создателю бота, а также администратору пространства, если настройки бота открывают администраторам доступ к редактированию. Владелец чата, где состоит бот, ротировать токен не может, даже когда остальные настройки бота ему открыты.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор бота\n\n\n## Пример запроса\n\n```bash\ncurl -X POST \"https://api.pachca.com/api/shared/v1/bots/1738816/recreate_token\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Параметры созданного бота\n - `id: integer, int32` (required) — Идентификатор бота (совпадает с `user_id` бота). Пример: `1738816`\n - `name: string` (required) — Имя бота. Пример: `\"Бот задач\"`\n - `nickname: string` (required) — Никнейм бота. Пример: `\"tasks_bot\"`\n - `avatar_url: string` (required, nullable) — Ссылка на аватар бота. `null`, если аватар не задан. Пример: `\"https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg\"`\n - `creator_id: integer, int32` (required, nullable) — Идентификатор сотрудника, создавшего бота. `null`, если создатель не записан. Пример: `12`\n - `created_at: date-time` (required) — Дата и время создания бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2025-05-15T14:30:00.000Z\"`\n - `authorized_users_count: integer, int32` (required) — Сколько сотрудников авторизовали бота. Пример: `3`\n - `last_used_at: date-time` (required, nullable) — Дата и время, когда бот последний раз работал (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ: запрос на входящий вебхук или вызов API любым токеном бота, включая токены сотрудников. `null`, если такого не было. Использование токена учитывается не чаще раза в час. Пример: `\"2025-05-15T14:30:00.000Z\"`\n - `webhook: object` (required) — Объект параметров вебхука\n - `name: string` (required, max length: 255) — Имя бота. Пример: `\"Бот задач\"`\n - `nickname: string` (required, max length: 255) — Никнейм бота. Пример: `\"tasks_bot\"`\n - `outgoing_url: string` (required, nullable) — URL исходящего вебхука. `null`, если исходящий вебхук у бота не настроен. Пример: `\"https://www.website.com/tasks/new\"`\n - `events: array of string` (required) — События, на которые подписан бот. Пример: `[\"message_new\"]`\n - `trigger_on: string` (required) — Условие срабатывания исходящего вебхука\n Значения: `commands` — Только на команды (триггер-слова) из commands, `all_messages` — На все сообщения в чатах, где есть бот, `unfurl` — На развёртывание ссылок (link previews)\n - `commands: array of string` (required) — Команды бота (триггер-слова). Пример: `[\"/task\"]`\n - `scopes: array of string` (required) — Скоупы (права доступа) токена бота. Набор по умолчанию шире того, что можно назначить явно, поэтому здесь могут встречаться значения, недоступные для явной установки. Пример: `[\"messages:create\"]`\n - `template: string` (required, nullable) — Шаблон форматирования входящего вебхука. `null`, если не задан. Пример: `\"Заказ от {{ client }} на сумму {{ amount }} ₽\"`\n - `template_engine: string` (required) — Шаблонизатор для обработки шаблона входящего вебхука\n Значения: `liquid` — Liquid — условия, циклы и фильтры, `mustache` — Mustache — простая подстановка без логики\n - `challenge_key: string` (required, nullable) — Название поля проверки для верификации входящего вебхука. `null`, если не задано. Пример: `\"challenge\"`\n - `link_preview_enabled: boolean` (required) — Показывать превью ссылок в сообщениях входящего вебхука. Пример: `true`\n - `ignore_self_messages: boolean` (required) — Игнорировать входящие сообщения, отправленные самим ботом. Пример: `false`\n - `events_history_enabled: boolean` (required) — Сохранять историю событий бота для последующего получения через метод истории событий. Пример: `false`\n - `single_chat: boolean` (required) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false`\n - `can_edit: array of string` (required) — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `[\"admin\"]`\n - `who_can_add: string` (required) — Кто может добавлять бота в чаты\n Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей\n - `kind: string` (required) — Источник входящего вебхука. `null`, если входящий вебхук у бота выключен.\n Значения: `simple` — Свой формат: сообщение собирается из тела запроса по шаблону бота, `gitlab` — GitLab: Пачка сама разбирает запрос и собирает сообщение, `grafana` — Grafana: Пачка сама разбирает запрос и собирает сообщение\n - `unfurl_domains: array of string` (required) — Домены, ссылки на которые бот разворачивает. Пример: `[\"example.com\"]`\n - `last_request_at: date-time` (required, nullable) — Дата и время последнего запроса на входящий вебхук бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если запросов не было. Пример: `\"2025-05-15T14:30:00.000Z\"`\n - `oauth_client_enabled: boolean` (required) — Включена ли у бота авторизация от имени сотрудника. Пример: `true`\n - `oauth_client: object` (required) — Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией, поэтому включена ли она, смотрите в `oauth_client_enabled`. У бота без токенов может прийти `null`.\n - `client_id: string` (required) — Идентификатор клиента для ссылки авторизации. Пример: `\"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY\"`\n - `client_secret_preview: string` (required) — Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета. Пример: `\"cH5kR9mN...x7Qp\"`\n - `confidential: boolean` (required) — Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE. Пример: `true`\n - `redirect_uris: array of string` (required) — Адреса возврата после согласия. Пример: `[\"https://example.com/oauth/callback\"]`\n - `scopes: array of string` (required) — Права, которые бот запрашивает у сотрудника на экране согласия. Пример: `[\"messages:read\",\"messages:create\"]`\n - `promo: object` (required) — Страница бота в витрине. `null`, если авторизация у бота выключена.\n - `description: string` (required, nullable) — Описание бота. `null`, если не задано. Пример: `\"Собирает сводку по задачам Jira и присылает её в чат\"`\n - `published: boolean` (required) — Опубликован ли бот в витрине. Пример: `true`\n - `promo_images: array of object` (required) — Скриншоты страницы бота\n - `key: string` (required) — Ключ изображения. Пример: `\"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png\"`\n - `url: string` (required) — Ссылка на изображение. Пример: `\"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png\"`\n - `permissions: object` (required) — Что вы можете делать с этим ботом\n - `update_oauth_client: boolean` (required) — Менять авторизацию от имени сотрудника, страницу в витрине и имя бота. Пример: `true`\n - `recreate_token: boolean` (required) — Выпускать, менять и удалять токены бота и обновлять секрет клиента. Пример: `true`\n - `destroy: boolean` (required) — Удалить бота. Пример: `true`\n - `client_secret: string` — Секрет клиента. Приходит один раз: при включении серверного клиента, при переходе на него и при ротации секрета. Пример: `\"dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA\"`\n - `access_token: string` — Токен доступа бота. Возвращается при создании бота и при ротации токена. Не приходит, если бот создан с `empty: true`. Пример: `\"bm90X2FfcmVhbF90b2tlbg\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 1738816,\n \"name\": \"Бот задач\",\n \"nickname\": \"tasks_bot\",\n \"avatar_url\": null,\n \"creator_id\": 12,\n \"created_at\": \"2025-05-15T14:30:00.000Z\",\n \"authorized_users_count\": 3,\n \"last_used_at\": \"2025-05-20T09:15:00.000Z\",\n \"webhook\": {\n \"name\": \"Бот задач\",\n \"nickname\": \"tasks_bot\",\n \"outgoing_url\": \"https://www.website.com/tasks/new\",\n \"events\": [\n \"message_new\"\n ],\n \"trigger_on\": \"commands\",\n \"commands\": [\n \"/task\"\n ],\n \"scopes\": [\n \"messages:create\"\n ],\n \"template\": \"Заказ от {{ client }} на сумму {{ amount }} ₽\",\n \"template_engine\": \"liquid\",\n \"challenge_key\": \"challenge\",\n \"link_preview_enabled\": true,\n \"ignore_self_messages\": false,\n \"events_history_enabled\": false,\n \"single_chat\": false,\n \"can_edit\": [\n \"admin\"\n ],\n \"who_can_add\": \"creator\",\n \"kind\": \"simple\",\n \"unfurl_domains\": [],\n \"last_request_at\": \"2025-05-20T09:15:00.000Z\"\n },\n \"oauth_client_enabled\": true,\n \"oauth_client\": {\n \"client_id\": \"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY\",\n \"client_secret_preview\": \"dGhpc19p...ZWNy\",\n \"confidential\": true,\n \"redirect_uris\": [\n \"https://example.com/oauth/callback\"\n ],\n \"scopes\": [\n \"messages:read\",\n \"messages:create\"\n ]\n },\n \"promo\": {\n \"description\": \"Собирает сводку по задачам и присылает её в чат\",\n \"published\": true,\n \"promo_images\": []\n },\n \"permissions\": {\n \"update_oauth_client\": true,\n \"recreate_token\": true,\n \"destroy\": true\n },\n \"access_token\": \"bm90X2FfcmVhbF90b2tlbg\"\n }\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"POST","path":"/bots/{id}/rotate_client_secret","summary":"Ротация секрета клиента","scope":"bots:write","plan":null,"auth":true,"paginated":false,"command":"pachca bots rotate-client-secret","docLink":"https://dev.pachca.com/api/bots/rotate-client-secret","describe":"# POST /bots/{id}/rotate_client_secret — Ротация секрета клиента\n\n> **Скоуп:** `bots:write`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор бота\n\n## Эквивалентная команда\n\n```bash\npachca bots rotate-client-secret 1738816 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/bots/rotate-client-secret\nПолная справка: `pachca api POST /bots/{id}/rotate_client_secret --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/bots/{id}/rotate_client_secret","description":"Ротация секрета клиента\n\nВыпускает новый `client_secret` для авторизации от имени сотрудника. Прежний секрет перестаёт работать сразу, поэтому сначала подготовьте бота к замене. Уже выданные авторизации и полученные токены продолжают работать.\n\nНовый секрет приходит в `client_secret` один раз. Метод работает только у бота с включённой авторизацией и серверным клиентом (`confidential: true`), иначе отвечает `400`.\n\nРотация доступна создателю бота, а также администратору пространства, если настройки бота открывают администраторам доступ к редактированию.","parameters":[{"name":"id","in":"path","description":"Идентификатор бота","required":true,"schema":{"type":"integer","format":"int32","example":1738816},"example":1738816}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Параметры бота","required":["id","name","nickname","avatar_url","creator_id","created_at","authorized_users_count","last_used_at","webhook","oauth_client_enabled","oauth_client","promo","permissions"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор бота (совпадает с `user_id` бота)","example":1738816},"name":{"type":"string","description":"Имя бота","example":"Бот задач"},"nickname":{"type":"string","description":"Никнейм бота","example":"tasks_bot"},"avatar_url":{"type":"string","description":"Ссылка на аватар бота. `null`, если аватар не задан.","example":"https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg","nullable":true},"creator_id":{"type":"integer","format":"int32","description":"Идентификатор сотрудника, создавшего бота. `null`, если создатель не записан.","example":12,"nullable":true},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2025-05-15T14:30:00.000Z"},"authorized_users_count":{"type":"integer","format":"int32","description":"Сколько сотрудников авторизовали бота","example":3},"last_used_at":{"type":"string","format":"date-time","description":"Дата и время, когда бот последний раз работал (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ: запрос на входящий вебхук или вызов API любым токеном бота, включая токены сотрудников. `null`, если такого не было. Использование токена учитывается не чаще раза в час.","example":"2025-05-15T14:30:00.000Z","nullable":true},"webhook":{"description":"Объект параметров вебхука","allOf":[{"type":"object","description":"Параметры вебхука бота","required":["name","nickname","outgoing_url","events","trigger_on","commands","scopes","template","template_engine","challenge_key","link_preview_enabled","ignore_self_messages","events_history_enabled","single_chat","can_edit","who_can_add","kind","unfurl_domains","last_request_at"],"properties":{"name":{"type":"string","description":"Имя бота","example":"Бот задач","maxLength":255},"nickname":{"type":"string","description":"Никнейм бота","example":"tasks_bot","maxLength":255},"outgoing_url":{"type":"string","description":"URL исходящего вебхука. `null`, если исходящий вебхук у бота не настроен.","example":"https://www.website.com/tasks/new","nullable":true},"events":{"type":"array","description":"События, на которые подписан бот","example":["message_new"],"items":{"type":"string","description":"Событие исходящего вебхука бота","enum":["message_new","message_update","message_delete","reaction_new","reaction_delete","button_click","message_link_shared","chat_member_add","chat_member_remove","company_member_invite","company_member_confirm","company_member_suspend","company_member_activate","company_member_delete","company_member_update","video_call_started","video_call_finished","video_call_recording_ready"],"x-enum-descriptions":{"message_new":"Новое сообщение","message_update":"Сообщение отредактировано","message_delete":"Сообщение удалено","reaction_new":"Добавлена реакция","reaction_delete":"Реакция удалена","button_click":"Нажата кнопка","message_link_shared":"В сообщении отправлена ссылка (для unfurl)","chat_member_add":"Участник добавлен в чат","chat_member_remove":"Участник удалён из чата","company_member_invite":"Сотрудник приглашён в компанию","company_member_confirm":"Сотрудник подтвердил приглашение","company_member_suspend":"Сотрудник деактивирован","company_member_activate":"Сотрудник активирован","company_member_delete":"Сотрудник удалён из компании","company_member_update":"Данные сотрудника изменены","video_call_started":"Видеозвонок начался","video_call_finished":"Видеозвонок завершился","video_call_recording_ready":"Запись видеозвонка готова"},"$ref":"#/components/schemas/BotEventName"}},"trigger_on":{"description":"Условие срабатывания исходящего вебхука","example":"commands","allOf":[{"type":"string","description":"Условие срабатывания исходящего вебхука бота","enum":["commands","all_messages","unfurl"],"x-enum-descriptions":{"commands":"Только на команды (триггер-слова) из commands","all_messages":"На все сообщения в чатах, где есть бот","unfurl":"На развёртывание ссылок (link previews)"},"$ref":"#/components/schemas/BotTriggerOn"}]},"commands":{"type":"array","description":"Команды бота (триггер-слова)","example":["/task"],"items":{"type":"string"}},"scopes":{"type":"array","description":"Скоупы (права доступа) токена бота. Набор по умолчанию шире того, что можно назначить явно, поэтому здесь могут встречаться значения, недоступные для явной установки.","example":["messages:create"],"items":{"type":"string"}},"template":{"type":"string","description":"Шаблон форматирования входящего вебхука. `null`, если не задан.","example":"Заказ от {{ client }} на сумму {{ amount }} ₽","nullable":true},"template_engine":{"description":"Шаблонизатор для обработки шаблона входящего вебхука","example":"liquid","allOf":[{"type":"string","description":"Шаблонизатор для форматирования входящих вебхуков","enum":["liquid","mustache"],"x-enum-descriptions":{"liquid":"Liquid — условия, циклы и фильтры","mustache":"Mustache — простая подстановка без логики"},"$ref":"#/components/schemas/BotTemplateEngine"}]},"challenge_key":{"type":"string","description":"Название поля проверки для верификации входящего вебхука. `null`, если не задано.","example":"challenge","nullable":true},"link_preview_enabled":{"type":"boolean","description":"Показывать превью ссылок в сообщениях входящего вебхука","example":true},"ignore_self_messages":{"type":"boolean","description":"Игнорировать входящие сообщения, отправленные самим ботом","example":false},"events_history_enabled":{"type":"boolean","description":"Сохранять историю событий бота для последующего получения через метод истории событий","example":false},"single_chat":{"type":"boolean","description":"Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят.","example":false},"can_edit":{"type":"array","description":"Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель.","example":["admin"],"items":{"type":"string","description":"Роль, которой разрешено редактировать настройки бота","enum":["admin","chat_owners"],"x-enum-descriptions":{"admin":"Администраторы компании","chat_owners":"Владельцы чатов, в которые добавлен бот"},"$ref":"#/components/schemas/BotCanEdit"}},"who_can_add":{"description":"Кто может добавлять бота в чаты","example":"creator","allOf":[{"type":"string","description":"Кто может добавлять бота в чаты","enum":["creator","creator_admin","creator_admin_user","anyone"],"x-enum-descriptions":{"creator":"Только создатель бота","creator_admin":"Создатель и администраторы компании","creator_admin_user":"Создатель, администраторы и участники компании","anyone":"Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей"},"$ref":"#/components/schemas/BotWhoCanAdd"}]},"kind":{"description":"Источник входящего вебхука. `null`, если входящий вебхук у бота выключен.","example":"simple","nullable":true,"allOf":[{"type":"string","description":"Источник входящего вебхука бота","enum":["simple","gitlab","grafana"],"x-enum-descriptions":{"simple":"Свой формат: сообщение собирается из тела запроса по шаблону бота","gitlab":"GitLab: Пачка сама разбирает запрос и собирает сообщение","grafana":"Grafana: Пачка сама разбирает запрос и собирает сообщение"},"$ref":"#/components/schemas/BotWebhookKind"}]},"unfurl_domains":{"type":"array","description":"Домены, ссылки на которые бот разворачивает","example":["example.com"],"items":{"type":"string"}},"last_request_at":{"type":"string","format":"date-time","description":"Дата и время последнего запроса на входящий вебхук бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если запросов не было.","example":"2025-05-15T14:30:00.000Z","nullable":true}},"$ref":"#/components/schemas/BotWebhook"}]},"oauth_client_enabled":{"type":"boolean","description":"Включена ли у бота авторизация от имени сотрудника","example":true},"oauth_client":{"type":"object","description":"Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией, поэтому включена ли она, смотрите в `oauth_client_enabled`. У бота без токенов может прийти `null`.","nullable":true,"allOf":[{"type":"object","description":"Авторизация от имени сотрудника","required":["client_id","client_secret_preview","confidential","redirect_uris","scopes"],"properties":{"client_id":{"type":"string","description":"Идентификатор клиента для ссылки авторизации","example":"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY"},"client_secret_preview":{"type":"string","description":"Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета.","example":"cH5kR9mN...x7Qp"},"confidential":{"type":"boolean","description":"Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE","example":true},"redirect_uris":{"type":"array","description":"Адреса возврата после согласия","example":["https://example.com/oauth/callback"],"items":{"type":"string"}},"scopes":{"type":"array","description":"Права, которые бот запрашивает у сотрудника на экране согласия","example":["messages:read","messages:create"],"items":{"type":"string"}}},"$ref":"#/components/schemas/BotOAuthClient"}]},"promo":{"type":"object","description":"Страница бота в витрине. `null`, если авторизация у бота выключена.","nullable":true,"allOf":[{"type":"object","description":"Страница бота в витрине","required":["description","published","promo_images"],"properties":{"description":{"type":"string","description":"Описание бота. `null`, если не задано.","example":"Собирает сводку по задачам Jira и присылает её в чат","nullable":true},"published":{"type":"boolean","description":"Опубликован ли бот в витрине","example":true},"promo_images":{"type":"array","description":"Скриншоты страницы бота","items":{"type":"object","description":"Скриншот страницы бота в витрине","required":["key","url"],"properties":{"key":{"type":"string","description":"Ключ изображения","example":"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"},"url":{"type":"string","description":"Ссылка на изображение","example":"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"}},"$ref":"#/components/schemas/BotPromoImage"}}},"$ref":"#/components/schemas/BotPromo"}]},"permissions":{"description":"Что вы можете делать с этим ботом","allOf":[{"type":"object","description":"Что текущий пользователь может делать с ботом","required":["update_oauth_client","recreate_token","destroy"],"properties":{"update_oauth_client":{"type":"boolean","description":"Менять авторизацию от имени сотрудника, страницу в витрине и имя бота","example":true},"recreate_token":{"type":"boolean","description":"Выпускать, менять и удалять токены бота и обновлять секрет клиента","example":true},"destroy":{"type":"boolean","description":"Удалить бота","example":true}},"$ref":"#/components/schemas/BotPermissions"}]},"client_secret":{"type":"string","description":"Секрет клиента. Приходит один раз: при включении серверного клиента, при переходе на него и при ротации секрета.","example":"dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA"}},"$ref":"#/components/schemas/BotResponse"}}},"example":{"data":{"id":1738816,"name":"Бот задач","nickname":"tasks_bot","avatar_url":null,"creator_id":12,"created_at":"2025-05-15T14:30:00.000Z","authorized_users_count":3,"last_used_at":"2025-05-20T09:15:00.000Z","webhook":{"name":"Бот задач","nickname":"tasks_bot","outgoing_url":"https://www.website.com/tasks/new","events":["message_new"],"trigger_on":"commands","commands":["/task"],"scopes":["messages:create"],"template":"Заказ от {{ client }} на сумму {{ amount }} ₽","template_engine":"liquid","challenge_key":"challenge","link_preview_enabled":true,"ignore_self_messages":false,"events_history_enabled":false,"single_chat":false,"can_edit":["admin"],"who_can_add":"creator","kind":"simple","unfurl_domains":[],"last_request_at":"2025-05-20T09:15:00.000Z"},"oauth_client_enabled":true,"oauth_client":{"client_id":"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY","client_secret_preview":"dGhpc19p...ZWNy","confidential":true,"redirect_uris":["https://example.com/oauth/callback"],"scopes":["messages:read","messages:create"]},"promo":{"description":"Собирает сводку по задачам и присылает её в чат","published":true,"promo_images":[]},"permissions":{"update_oauth_client":true,"recreate_token":true,"destroy":true},"client_secret":"dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA"}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"},{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}]}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"bots:write","scopeRoles":["owner","admin","user"]},"paginated":false},"docs":"# Ротация секрета клиента\n\n**Метод**: `POST`\n\n**Путь**: `/bots/{id}/rotate_client_secret`\n\n> **Скоуп:** `bots:write`\n\nВыпускает новый `client_secret` для авторизации от имени сотрудника. Прежний секрет перестаёт работать сразу, поэтому сначала подготовьте бота к замене. Уже выданные авторизации и полученные токены продолжают работать.\n\nНовый секрет приходит в `client_secret` один раз. Метод работает только у бота с включённой авторизацией и серверным клиентом (`confidential: true`), иначе отвечает `400`.\n\nРотация доступна создателю бота, а также администратору пространства, если настройки бота открывают администраторам доступ к редактированию.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор бота\n\n\n## Пример запроса\n\n```bash\ncurl -X POST \"https://api.pachca.com/api/shared/v1/bots/1738816/rotate_client_secret\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Параметры бота\n - `id: integer, int32` (required) — Идентификатор бота (совпадает с `user_id` бота). Пример: `1738816`\n - `name: string` (required) — Имя бота. Пример: `\"Бот задач\"`\n - `nickname: string` (required) — Никнейм бота. Пример: `\"tasks_bot\"`\n - `avatar_url: string` (required, nullable) — Ссылка на аватар бота. `null`, если аватар не задан. Пример: `\"https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg\"`\n - `creator_id: integer, int32` (required, nullable) — Идентификатор сотрудника, создавшего бота. `null`, если создатель не записан. Пример: `12`\n - `created_at: date-time` (required) — Дата и время создания бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2025-05-15T14:30:00.000Z\"`\n - `authorized_users_count: integer, int32` (required) — Сколько сотрудников авторизовали бота. Пример: `3`\n - `last_used_at: date-time` (required, nullable) — Дата и время, когда бот последний раз работал (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ: запрос на входящий вебхук или вызов API любым токеном бота, включая токены сотрудников. `null`, если такого не было. Использование токена учитывается не чаще раза в час. Пример: `\"2025-05-15T14:30:00.000Z\"`\n - `webhook: object` (required) — Объект параметров вебхука\n - `name: string` (required, max length: 255) — Имя бота. Пример: `\"Бот задач\"`\n - `nickname: string` (required, max length: 255) — Никнейм бота. Пример: `\"tasks_bot\"`\n - `outgoing_url: string` (required, nullable) — URL исходящего вебхука. `null`, если исходящий вебхук у бота не настроен. Пример: `\"https://www.website.com/tasks/new\"`\n - `events: array of string` (required) — События, на которые подписан бот. Пример: `[\"message_new\"]`\n - `trigger_on: string` (required) — Условие срабатывания исходящего вебхука\n Значения: `commands` — Только на команды (триггер-слова) из commands, `all_messages` — На все сообщения в чатах, где есть бот, `unfurl` — На развёртывание ссылок (link previews)\n - `commands: array of string` (required) — Команды бота (триггер-слова). Пример: `[\"/task\"]`\n - `scopes: array of string` (required) — Скоупы (права доступа) токена бота. Набор по умолчанию шире того, что можно назначить явно, поэтому здесь могут встречаться значения, недоступные для явной установки. Пример: `[\"messages:create\"]`\n - `template: string` (required, nullable) — Шаблон форматирования входящего вебхука. `null`, если не задан. Пример: `\"Заказ от {{ client }} на сумму {{ amount }} ₽\"`\n - `template_engine: string` (required) — Шаблонизатор для обработки шаблона входящего вебхука\n Значения: `liquid` — Liquid — условия, циклы и фильтры, `mustache` — Mustache — простая подстановка без логики\n - `challenge_key: string` (required, nullable) — Название поля проверки для верификации входящего вебхука. `null`, если не задано. Пример: `\"challenge\"`\n - `link_preview_enabled: boolean` (required) — Показывать превью ссылок в сообщениях входящего вебхука. Пример: `true`\n - `ignore_self_messages: boolean` (required) — Игнорировать входящие сообщения, отправленные самим ботом. Пример: `false`\n - `events_history_enabled: boolean` (required) — Сохранять историю событий бота для последующего получения через метод истории событий. Пример: `false`\n - `single_chat: boolean` (required) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false`\n - `can_edit: array of string` (required) — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `[\"admin\"]`\n - `who_can_add: string` (required) — Кто может добавлять бота в чаты\n Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей\n - `kind: string` (required) — Источник входящего вебхука. `null`, если входящий вебхук у бота выключен.\n Значения: `simple` — Свой формат: сообщение собирается из тела запроса по шаблону бота, `gitlab` — GitLab: Пачка сама разбирает запрос и собирает сообщение, `grafana` — Grafana: Пачка сама разбирает запрос и собирает сообщение\n - `unfurl_domains: array of string` (required) — Домены, ссылки на которые бот разворачивает. Пример: `[\"example.com\"]`\n - `last_request_at: date-time` (required, nullable) — Дата и время последнего запроса на входящий вебхук бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если запросов не было. Пример: `\"2025-05-15T14:30:00.000Z\"`\n - `oauth_client_enabled: boolean` (required) — Включена ли у бота авторизация от имени сотрудника. Пример: `true`\n - `oauth_client: object` (required) — Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией, поэтому включена ли она, смотрите в `oauth_client_enabled`. У бота без токенов может прийти `null`.\n - `client_id: string` (required) — Идентификатор клиента для ссылки авторизации. Пример: `\"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY\"`\n - `client_secret_preview: string` (required) — Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета. Пример: `\"cH5kR9mN...x7Qp\"`\n - `confidential: boolean` (required) — Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE. Пример: `true`\n - `redirect_uris: array of string` (required) — Адреса возврата после согласия. Пример: `[\"https://example.com/oauth/callback\"]`\n - `scopes: array of string` (required) — Права, которые бот запрашивает у сотрудника на экране согласия. Пример: `[\"messages:read\",\"messages:create\"]`\n - `promo: object` (required) — Страница бота в витрине. `null`, если авторизация у бота выключена.\n - `description: string` (required, nullable) — Описание бота. `null`, если не задано. Пример: `\"Собирает сводку по задачам Jira и присылает её в чат\"`\n - `published: boolean` (required) — Опубликован ли бот в витрине. Пример: `true`\n - `promo_images: array of object` (required) — Скриншоты страницы бота\n - `key: string` (required) — Ключ изображения. Пример: `\"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png\"`\n - `url: string` (required) — Ссылка на изображение. Пример: `\"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png\"`\n - `permissions: object` (required) — Что вы можете делать с этим ботом\n - `update_oauth_client: boolean` (required) — Менять авторизацию от имени сотрудника, страницу в витрине и имя бота. Пример: `true`\n - `recreate_token: boolean` (required) — Выпускать, менять и удалять токены бота и обновлять секрет клиента. Пример: `true`\n - `destroy: boolean` (required) — Удалить бота. Пример: `true`\n - `client_secret: string` — Секрет клиента. Приходит один раз: при включении серверного клиента, при переходе на него и при ротации секрета. Пример: `\"dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 1738816,\n \"name\": \"Бот задач\",\n \"nickname\": \"tasks_bot\",\n \"avatar_url\": null,\n \"creator_id\": 12,\n \"created_at\": \"2025-05-15T14:30:00.000Z\",\n \"authorized_users_count\": 3,\n \"last_used_at\": \"2025-05-20T09:15:00.000Z\",\n \"webhook\": {\n \"name\": \"Бот задач\",\n \"nickname\": \"tasks_bot\",\n \"outgoing_url\": \"https://www.website.com/tasks/new\",\n \"events\": [\n \"message_new\"\n ],\n \"trigger_on\": \"commands\",\n \"commands\": [\n \"/task\"\n ],\n \"scopes\": [\n \"messages:create\"\n ],\n \"template\": \"Заказ от {{ client }} на сумму {{ amount }} ₽\",\n \"template_engine\": \"liquid\",\n \"challenge_key\": \"challenge\",\n \"link_preview_enabled\": true,\n \"ignore_self_messages\": false,\n \"events_history_enabled\": false,\n \"single_chat\": false,\n \"can_edit\": [\n \"admin\"\n ],\n \"who_can_add\": \"creator\",\n \"kind\": \"simple\",\n \"unfurl_domains\": [],\n \"last_request_at\": \"2025-05-20T09:15:00.000Z\"\n },\n \"oauth_client_enabled\": true,\n \"oauth_client\": {\n \"client_id\": \"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY\",\n \"client_secret_preview\": \"dGhpc19p...ZWNy\",\n \"confidential\": true,\n \"redirect_uris\": [\n \"https://example.com/oauth/callback\"\n ],\n \"scopes\": [\n \"messages:read\",\n \"messages:create\"\n ]\n },\n \"promo\": {\n \"description\": \"Собирает сводку по задачам и присылает её в чат\",\n \"published\": true,\n \"promo_images\": []\n },\n \"permissions\": {\n \"update_oauth_client\": true,\n \"recreate_token\": true,\n \"destroy\": true\n },\n \"client_secret\": \"dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA\"\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n**anyOf** - один из вариантов:\n\n- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)\n - `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403)\n - `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n - `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/bots/{id}/scopes","summary":"Каталог прав бота","scope":"bots:read","plan":null,"auth":true,"paginated":false,"command":"pachca bots list-scopes","docLink":"https://dev.pachca.com/api/bots/list-scopes","describe":"# GET /bots/{id}/scopes — Каталог прав бота\n\n> **Скоуп:** `bots:read`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор бота\n\n## Эквивалентная команда\n\n```bash\npachca bots list-scopes 1738816 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/bots/list-scopes\nПолная справка: `pachca api GET /bots/{id}/scopes --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/bots/{id}/scopes","description":"Каталог прав бота\n\nПрава, которые можно выдать этому боту: его токенам и авторизации от имени сотрудника. У каждого права есть описание, категория и готовые наборы, в которые оно входит, как при выборе прав в интерфейсе.\n\nКаталог доступен тем же, кто видит токены бота: создателю бота, а также администратору пространства, если настройки бота открывают администраторам доступ к редактированию.","parameters":[{"name":"id","in":"path","description":"Идентификатор бота","required":true,"schema":{"type":"integer","format":"int32","example":1738816},"example":1738816}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Каталог прав, которые можно выдать боту","required":["scopes","groups","presets"],"properties":{"scopes":{"type":"array","description":"Права, доступные боту","items":{"type":"object","description":"Право в каталоге прав бота","required":["id","title","group","preset"],"properties":{"id":{"type":"string","description":"Право","example":"messages:create"},"title":{"type":"string","description":"Описание права","example":"Отправка сообщений"},"group":{"type":"string","description":"Категория права, `id` из `groups`","example":"messages"},"preset":{"type":"array","description":"Наборы, в которые входит право, `id` из `presets`","example":["admin"],"items":{"type":"string"}}},"$ref":"#/components/schemas/BotScopeCatalogItem"}},"groups":{"type":"array","description":"Категории прав","items":{"type":"object","description":"Категория прав","required":["id","title","description"],"properties":{"id":{"type":"string","description":"Идентификатор категории","example":"messages"},"title":{"type":"string","description":"Название категории","example":"Сообщения"},"description":{"type":"string","description":"Описание категории","example":"Работа с сообщениями"}},"$ref":"#/components/schemas/BotScopeCatalogGroup"}},"presets":{"type":"array","description":"Готовые наборы прав","items":{"type":"object","description":"Готовый набор прав","required":["id","title"],"properties":{"id":{"type":"string","description":"Идентификатор набора: `read-only` или `admin`","example":"read-only"},"title":{"type":"string","description":"Название набора","example":"Только чтение"}},"$ref":"#/components/schemas/BotScopeCatalogPreset"}}},"$ref":"#/components/schemas/BotScopeCatalog"},"example":{"scopes":[{"id":"messages:create","title":"Отправка сообщений","group":"messages","preset":["admin"]}],"groups":[{"id":"messages","title":"Сообщения","description":"Работа с сообщениями"}],"presets":[{"id":"read-only","title":"Только чтение"},{"id":"admin","title":"Администратор"}]}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"},{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}]}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"bots:read","scopeRoles":["owner","admin","user"]},"paginated":false},"docs":"# Каталог прав бота\n\n**Метод**: `GET`\n\n**Путь**: `/bots/{id}/scopes`\n\n> **Скоуп:** `bots:read`\n\nПрава, которые можно выдать этому боту: его токенам и авторизации от имени сотрудника. У каждого права есть описание, категория и готовые наборы, в которые оно входит, как при выборе прав в интерфейсе.\n\nКаталог доступен тем же, кто видит токены бота: создателю бота, а также администратору пространства, если настройки бота открывают администраторам доступ к редактированию.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор бота\n\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/bots/1738816/scopes\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `scopes: array of object` (required) — Права, доступные боту\n - `id: string` (required) — Право. Пример: `\"messages:create\"`\n - `title: string` (required) — Описание права. Пример: `\"Отправка сообщений\"`\n - `group: string` (required) — Категория права, `id` из `groups`. Пример: `\"messages\"`\n - `preset: array of string` (required) — Наборы, в которые входит право, `id` из `presets`. Пример: `[\"admin\"]`\n- `groups: array of object` (required) — Категории прав\n - `id: string` (required) — Идентификатор категории. Пример: `\"messages\"`\n - `title: string` (required) — Название категории. Пример: `\"Сообщения\"`\n - `description: string` (required) — Описание категории. Пример: `\"Работа с сообщениями\"`\n- `presets: array of object` (required) — Готовые наборы прав\n - `id: string` (required) — Идентификатор набора: `read-only` или `admin`. Пример: `\"read-only\"`\n - `title: string` (required) — Название набора. Пример: `\"Только чтение\"`\n\n**Пример ответа:**\n\n```json\n{\n \"scopes\": [\n {\n \"id\": \"messages:create\",\n \"title\": \"Отправка сообщений\",\n \"group\": \"messages\",\n \"preset\": [\n \"admin\"\n ]\n }\n ],\n \"groups\": [\n {\n \"id\": \"messages\",\n \"title\": \"Сообщения\",\n \"description\": \"Работа с сообщениями\"\n }\n ],\n \"presets\": [\n {\n \"id\": \"read-only\",\n \"title\": \"Только чтение\"\n },\n {\n \"id\": \"admin\",\n \"title\": \"Администратор\"\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n**anyOf** - один из вариантов:\n\n- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)\n - `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403)\n - `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n - `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/bots/{id}/tokens","summary":"Список токенов бота","scope":"bots:read","plan":null,"auth":true,"paginated":true,"command":"pachca bots list-tokens","docLink":"https://dev.pachca.com/api/bots/list-tokens","describe":"# GET /bots/{id}/tokens — Список токенов бота\n\n> **Скоуп:** `bots:read`\n\n> Пагинация: добавьте `--all` для автоматического обхода страниц\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор бота\n- `limit` — query: Количество возвращаемых сущностей за один запрос\n- `cursor` — query: Курсор для пагинации (из `meta.paginate.next_page`)\n\n## Эквивалентная команда\n\n```bash\n# Добавьте --all для автоматической пагинации\npachca bots list-tokens 1738816 \\\n --limit=1 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/bots/list-tokens\nПолная справка: `pachca api GET /bots/{id}/tokens --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/bots/{id}/tokens","description":"Список токенов бота\n\nДействующие токены бота: основной, выпущенный вместе с ботом, и отдельные — со своим именем и правами. Значение токена здесь замаскировано: полностью его показывают один раз, при выпуске и перевыпуске.\n\nРаботать с токенами бота могут только его создатель и администратор пространства, если настройки бота открывают администраторам доступ к редактированию. Владельцу чата с ботом метод отвечает `403`, даже когда остальные настройки бота ему открыты.","parameters":[{"name":"id","in":"path","description":"Идентификатор бота","required":true,"schema":{"type":"integer","format":"int32","example":1738816},"example":1738816},{"name":"limit","in":"query","description":"Количество возвращаемых сущностей за один запрос","required":false,"schema":{"type":"integer","format":"int32","default":50,"example":1,"minimum":1,"maximum":50},"example":1,"explode":false},{"name":"cursor","in":"query","description":"Курсор для пагинации (из `meta.paginate.next_page`)","required":false,"schema":{"type":"string","example":"eyJpZCI6NDgyN30"},"example":"eyJpZCI6NDgyN30","explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными и пагинацией","required":["data","meta"],"properties":{"data":{"type":"array","items":{"type":"object","description":"Токен бота","required":["id","token","name","user_id","scopes","created_at","revoked_at","expires_in","last_used_at","authorized_at"],"properties":{"id":{"type":"integer","format":"int64","description":"Идентификатор токена","example":4827},"token":{"type":"string","description":"Токен в маскированном виде (видны первые 8 и последние 4 символа). Полное значение приходит один раз: при выпуске и перевыпуске токена.","example":"cH5kR9mN...x7Qp"},"name":{"type":"string","description":"Имя токена. `null` у токена, выпущенного без имени.","example":"Сервер уведомлений","nullable":true},"user_id":{"type":"integer","format":"int64","description":"Идентификатор бота, которому принадлежит токен","example":1738816},"scopes":{"type":"array","description":"Права токена","example":["messages:create","chats:read"],"items":{"type":"string"}},"created_at":{"type":"string","format":"date-time","description":"Дата и время выпуска токена (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2025-01-15T10:30:00.000Z"},"revoked_at":{"type":"string","format":"date-time","description":"Дата отзыва токена. Всегда `null`: отозванные токены в ответ не попадают.","example":null,"nullable":true},"expires_in":{"type":"integer","format":"int32","description":"Время жизни токена в секундах. У токенов бота `null`: они бессрочные.","example":null,"nullable":true},"last_used_at":{"type":"string","format":"date-time","description":"Дата последнего использования токена. `null`, пока по токену не было ни одного запроса. Обновляется не чаще раза в час, поэтому может отставать.","example":"2025-02-24T14:20:00.000Z","nullable":true},"authorized_at":{"type":"string","format":"date-time","description":"Дата авторизации. У токенов бота `null`.","example":null,"nullable":true}},"$ref":"#/components/schemas/BotAccessToken"}},"meta":{"type":"object","description":"Метаданные пагинации","required":["paginate"],"properties":{"paginate":{"type":"object","description":"Вспомогательная информация","required":["next_page"],"properties":{"next_page":{"type":"string","description":"Курсор пагинации следующей страницы","example":"eyJxZCO2MiwiZGlyIjomSNYjIn3"},"prev_page":{"type":"string","description":"Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка.","example":"eyJxZCO2MiwiZGlyIjoiYXNjIn0"},"has_next":{"type":"boolean","description":"Есть ли ещё данные на следующей странице. На последней странице — `false`.","example":true},"has_prev":{"type":"boolean","description":"Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`.","example":false}}}},"$ref":"#/components/schemas/PaginationMeta"}}},"example":{"data":[{"id":4827,"token":"cH5kR9mN...x7Qp","name":"Сервер уведомлений","user_id":1738816,"scopes":["messages:create","chats:read"],"created_at":"2025-01-15T10:30:00.000Z","revoked_at":null,"expires_in":null,"last_used_at":"2025-02-24T14:20:00.000Z","authorized_at":null}],"meta":{"paginate":{"next_page":"eyJpZCI6NDgyN30"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"},{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}]}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"bots:read","scopeRoles":["owner","admin","user"]},"paginated":true},"docs":"# Список токенов бота\n\n**Метод**: `GET`\n\n**Путь**: `/bots/{id}/tokens`\n\n> **Скоуп:** `bots:read`\n\nДействующие токены бота: основной, выпущенный вместе с ботом, и отдельные — со своим именем и правами. Значение токена здесь замаскировано: полностью его показывают один раз, при выпуске и перевыпуске.\n\nРаботать с токенами бота могут только его создатель и администратор пространства, если настройки бота открывают администраторам доступ к редактированию. Владельцу чата с ботом метод отвечает `403`, даже когда остальные настройки бота ему открыты.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор бота\n\n### Query параметры\n\n- `limit: integer, int32` (default: 50) — Количество возвращаемых сущностей за один запрос\n- `cursor: string` — Курсор для пагинации (из `meta.paginate.next_page`)\n\n\n## Пример запроса\n\n```bash\n# Для получения следующей страницы используйте cursor из meta.paginate.next_page\ncurl \"https://api.pachca.com/api/shared/v1/bots/1738816/tokens?limit=1\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: array of object` (required)\n - `id: integer, int64` (required) — Идентификатор токена. Пример: `4827`\n - `token: string` (required) — Токен в маскированном виде (видны первые 8 и последние 4 символа). Полное значение приходит один раз: при выпуске и перевыпуске токена. Пример: `\"cH5kR9mN...x7Qp\"`\n - `name: string` (required, nullable) — Имя токена. `null` у токена, выпущенного без имени. Пример: `\"Сервер уведомлений\"`\n - `user_id: integer, int64` (required) — Идентификатор бота, которому принадлежит токен. Пример: `1738816`\n - `scopes: array of string` (required) — Права токена. Пример: `[\"messages:create\",\"chats:read\"]`\n - `created_at: date-time` (required) — Дата и время выпуска токена (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2025-01-15T10:30:00.000Z\"`\n - `revoked_at: date-time` (required, nullable) — Дата отзыва токена. Всегда `null`: отозванные токены в ответ не попадают. Пример: `null`\n - `expires_in: integer, int32` (required, nullable) — Время жизни токена в секундах. У токенов бота `null`: они бессрочные. Пример: `null`\n - `last_used_at: date-time` (required, nullable) — Дата последнего использования токена. `null`, пока по токену не было ни одного запроса. Обновляется не чаще раза в час, поэтому может отставать. Пример: `\"2025-02-24T14:20:00.000Z\"`\n - `authorized_at: date-time` (required, nullable) — Дата авторизации. У токенов бота `null`. Пример: `null`\n- `meta: object` (required) — Метаданные пагинации\n - `paginate: object` (required) — Вспомогательная информация\n - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `\"eyJxZCO2MiwiZGlyIjomSNYjIn3\"`\n - `prev_page: string` — Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка. Пример: `\"eyJxZCO2MiwiZGlyIjoiYXNjIn0\"`\n - `has_next: boolean` — Есть ли ещё данные на следующей странице. На последней странице — `false`. Пример: `true`\n - `has_prev: boolean` — Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`. Пример: `false`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": [\n {\n \"id\": 4827,\n \"token\": \"cH5kR9mN...x7Qp\",\n \"name\": \"Сервер уведомлений\",\n \"user_id\": 1738816,\n \"scopes\": [\n \"messages:create\",\n \"chats:read\"\n ],\n \"created_at\": \"2025-01-15T10:30:00.000Z\",\n \"revoked_at\": null,\n \"expires_in\": null,\n \"last_used_at\": \"2025-02-24T14:20:00.000Z\",\n \"authorized_at\": null\n }\n ],\n \"meta\": {\n \"paginate\": {\n \"next_page\": \"eyJpZCI6NDgyN30\"\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n**anyOf** - один из вариантов:\n\n- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)\n - `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403)\n - `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n - `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"POST","path":"/bots/{id}/tokens","summary":"Новый токен бота","scope":"bots:write","plan":null,"auth":true,"paginated":false,"command":"pachca bots create-token","docLink":"https://dev.pachca.com/api/bots/create-token","describe":"# POST /bots/{id}/tokens — Новый токен бота\n\n> **Скоуп:** `bots:write`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор бота\n\n## Тело запроса\n\n- `name: string` (required, max length: 255) — Имя токена: по нему токены различают в списке\n- `scopes: array of string` — Права токена. Доступны только права, которые можно выдать боту. Если не передать, токен выпускается без прав.\n\n## Эквивалентная команда\n\n```bash\npachca bots create-token 1738816 \\\n --name='Сервер уведомлений' \\\n --scopes='[\"messages:create\",\"chats:read\"]' \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/bots/create-token\nПолная справка: `pachca api POST /bots/{id}/tokens --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/bots/{id}/tokens","description":"Новый токен бота\n\nВыпускает боту ещё один токен со своим именем и правами. Токенов у бота может быть несколько: например, отдельный на каждый сервис, чтобы отзывать их по одному.\n\nЗначение токена приходит в ответе один раз — сохраните его сразу. Токен бессрочный и работает, пока его не удалят.\n\nПрава выбирают из тех, что можно выдать боту: их перечисляет [Каталог прав бота](GET /bots/{id}/scopes). На право не из каталога метод отвечает `400`. Без `scopes` токен выпускается без прав.\n\nРаботать с токенами бота могут только его создатель и администратор пространства, если настройки бота открывают администраторам доступ к редактированию. Владельцу чата с ботом метод отвечает `403`, даже когда остальные настройки бота ему открыты.","parameters":[{"name":"id","in":"path","description":"Идентификатор бота","required":true,"schema":{"type":"integer","format":"int32","example":1738816},"example":1738816}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на выпуск токена бота","required":["name"],"properties":{"name":{"type":"string","description":"Имя токена: по нему токены различают в списке","example":"Сервер уведомлений","maxLength":255},"scopes":{"type":"array","description":"Права токена. Доступны только права, которые можно выдать боту. Если не передать, токен выпускается без прав.","example":["messages:create","chats:read"],"items":{"type":"string"}}},"$ref":"#/components/schemas/BotTokenCreateRequest"},"example":{"name":"Сервер уведомлений","scopes":["messages:create","chats:read"]}}}},"responses":{"201":{"description":"The request has succeeded and a new resource has been created as a result.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Токен бота","required":["id","token","name","user_id","scopes","created_at","revoked_at","expires_in","last_used_at","authorized_at"],"properties":{"id":{"type":"integer","format":"int64","description":"Идентификатор токена","example":4827},"token":{"type":"string","description":"Токен в маскированном виде (видны первые 8 и последние 4 символа). Полное значение приходит один раз: при выпуске и перевыпуске токена.","example":"cH5kR9mN...x7Qp"},"name":{"type":"string","description":"Имя токена. `null` у токена, выпущенного без имени.","example":"Сервер уведомлений","nullable":true},"user_id":{"type":"integer","format":"int64","description":"Идентификатор бота, которому принадлежит токен","example":1738816},"scopes":{"type":"array","description":"Права токена","example":["messages:create","chats:read"],"items":{"type":"string"}},"created_at":{"type":"string","format":"date-time","description":"Дата и время выпуска токена (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2025-01-15T10:30:00.000Z"},"revoked_at":{"type":"string","format":"date-time","description":"Дата отзыва токена. Всегда `null`: отозванные токены в ответ не попадают.","example":null,"nullable":true},"expires_in":{"type":"integer","format":"int32","description":"Время жизни токена в секундах. У токенов бота `null`: они бессрочные.","example":null,"nullable":true},"last_used_at":{"type":"string","format":"date-time","description":"Дата последнего использования токена. `null`, пока по токену не было ни одного запроса. Обновляется не чаще раза в час, поэтому может отставать.","example":"2025-02-24T14:20:00.000Z","nullable":true},"authorized_at":{"type":"string","format":"date-time","description":"Дата авторизации. У токенов бота `null`.","example":null,"nullable":true}},"$ref":"#/components/schemas/BotAccessToken"}}},"example":{"data":{"id":4827,"token":"bm90X2FfcmVhbF90b2tlbg","name":"Сервер уведомлений","user_id":1738816,"scopes":["messages:create","chats:read"],"created_at":"2025-01-15T10:30:00.000Z","revoked_at":null,"expires_in":null,"last_used_at":null,"authorized_at":null}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"},{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}]}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"bots:write","scopeRoles":["owner","admin","user"]},"paginated":false},"docs":"# Новый токен бота\n\n**Метод**: `POST`\n\n**Путь**: `/bots/{id}/tokens`\n\n> **Скоуп:** `bots:write`\n\nВыпускает боту ещё один токен со своим именем и правами. Токенов у бота может быть несколько: например, отдельный на каждый сервис, чтобы отзывать их по одному.\n\nЗначение токена приходит в ответе один раз — сохраните его сразу. Токен бессрочный и работает, пока его не удалят.\n\nПрава выбирают из тех, что можно выдать боту: их перечисляет [Каталог прав бота](GET /bots/{id}/scopes). На право не из каталога метод отвечает `400`. Без `scopes` токен выпускается без прав.\n\nРаботать с токенами бота могут только его создатель и администратор пространства, если настройки бота открывают администраторам доступ к редактированию. Владельцу чата с ботом метод отвечает `403`, даже когда остальные настройки бота ему открыты.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор бота\n\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `name: string` (required, max length: 255) — Имя токена: по нему токены различают в списке. Пример: `\"Сервер уведомлений\"`\n- `scopes: array of string` — Права токена. Доступны только права, которые можно выдать боту. Если не передать, токен выпускается без прав. Пример: `[\"messages:create\",\"chats:read\"]`\n\n### Пример\n\n```json\n{\n \"name\": \"Сервер уведомлений\",\n \"scopes\": [\n \"messages:create\",\n \"chats:read\"\n ]\n}\n```\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/bots/1738816/tokens\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"name\": \"Сервер уведомлений\",\n \"scopes\": [\n \"messages:create\",\n \"chats:read\"\n ]\n}'\n```\n\n## Ответы\n\n### 201: The request has succeeded and a new resource has been created as a result.\n\n**Схема ответа:**\n\n- `data: object` (required) — Токен бота\n - `id: integer, int64` (required) — Идентификатор токена. Пример: `4827`\n - `token: string` (required) — Токен в маскированном виде (видны первые 8 и последние 4 символа). Полное значение приходит один раз: при выпуске и перевыпуске токена. Пример: `\"cH5kR9mN...x7Qp\"`\n - `name: string` (required, nullable) — Имя токена. `null` у токена, выпущенного без имени. Пример: `\"Сервер уведомлений\"`\n - `user_id: integer, int64` (required) — Идентификатор бота, которому принадлежит токен. Пример: `1738816`\n - `scopes: array of string` (required) — Права токена. Пример: `[\"messages:create\",\"chats:read\"]`\n - `created_at: date-time` (required) — Дата и время выпуска токена (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2025-01-15T10:30:00.000Z\"`\n - `revoked_at: date-time` (required, nullable) — Дата отзыва токена. Всегда `null`: отозванные токены в ответ не попадают. Пример: `null`\n - `expires_in: integer, int32` (required, nullable) — Время жизни токена в секундах. У токенов бота `null`: они бессрочные. Пример: `null`\n - `last_used_at: date-time` (required, nullable) — Дата последнего использования токена. `null`, пока по токену не было ни одного запроса. Обновляется не чаще раза в час, поэтому может отставать. Пример: `\"2025-02-24T14:20:00.000Z\"`\n - `authorized_at: date-time` (required, nullable) — Дата авторизации. У токенов бота `null`. Пример: `null`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 4827,\n \"token\": \"bm90X2FfcmVhbF90b2tlbg\",\n \"name\": \"Сервер уведомлений\",\n \"user_id\": 1738816,\n \"scopes\": [\n \"messages:create\",\n \"chats:read\"\n ],\n \"created_at\": \"2025-01-15T10:30:00.000Z\",\n \"revoked_at\": null,\n \"expires_in\": null,\n \"last_used_at\": null,\n \"authorized_at\": null\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n**anyOf** - один из вариантов:\n\n- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)\n - `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403)\n - `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n - `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"PUT","path":"/bots/{id}/tokens/{token_id}","summary":"Изменение токена бота","scope":"bots:write","plan":null,"auth":true,"paginated":false,"command":"pachca bots update-token","docLink":"https://dev.pachca.com/api/bots/update-token","describe":"# PUT /bots/{id}/tokens/{token_id} — Изменение токена бота\n\n> **Скоуп:** `bots:write`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор бота\n- `token_id` — путь (обязательный): Идентификатор токена\n\n## Тело запроса\n\n- `name: string` (max length: 255) — Новое имя токена\n- `scopes: array of string` — Новые права токена. Список заменяется целиком и действует сразу, перевыпускать токен не нужно.\n\n## Эквивалентная команда\n\n```bash\npachca bots update-token 1738816 4827 \\\n --name='Сервер уведомлений' \\\n --scopes='[\"messages:create\",\"chats:read\"]' \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/bots/update-token\nПолная справка: `pachca api PUT /bots/{id}/tokens/{token_id} --docs` · схема: `--spec`\n","spec":{"method":"PUT","path":"/bots/{id}/tokens/{token_id}","description":"Изменение токена бота\n\nМеняет имя или права токена. Новые права действуют сразу: перевыпускать токен не нужно, его значение остаётся прежним. Права заменяются переданным списком целиком.\n\nРаботать с токенами бота могут только его создатель и администратор пространства, если настройки бота открывают администраторам доступ к редактированию. Владельцу чата с ботом метод отвечает `403`, даже когда остальные настройки бота ему открыты.","parameters":[{"name":"id","in":"path","description":"Идентификатор бота","required":true,"schema":{"type":"integer","format":"int32","example":1738816},"example":1738816},{"name":"token_id","in":"path","description":"Идентификатор токена","required":true,"schema":{"type":"integer","format":"int64","example":4827},"example":4827}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на изменение токена бота","properties":{"name":{"type":"string","description":"Новое имя токена","example":"Сервер уведомлений","maxLength":255},"scopes":{"type":"array","description":"Новые права токена. Список заменяется целиком и действует сразу, перевыпускать токен не нужно.","example":["messages:create","chats:read"],"items":{"type":"string"}}},"$ref":"#/components/schemas/BotTokenUpdateRequest"},"example":{"name":"Сервер уведомлений","scopes":["messages:create","chats:read"]}}}},"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Токен бота","required":["id","token","name","user_id","scopes","created_at","revoked_at","expires_in","last_used_at","authorized_at"],"properties":{"id":{"type":"integer","format":"int64","description":"Идентификатор токена","example":4827},"token":{"type":"string","description":"Токен в маскированном виде (видны первые 8 и последние 4 символа). Полное значение приходит один раз: при выпуске и перевыпуске токена.","example":"cH5kR9mN...x7Qp"},"name":{"type":"string","description":"Имя токена. `null` у токена, выпущенного без имени.","example":"Сервер уведомлений","nullable":true},"user_id":{"type":"integer","format":"int64","description":"Идентификатор бота, которому принадлежит токен","example":1738816},"scopes":{"type":"array","description":"Права токена","example":["messages:create","chats:read"],"items":{"type":"string"}},"created_at":{"type":"string","format":"date-time","description":"Дата и время выпуска токена (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2025-01-15T10:30:00.000Z"},"revoked_at":{"type":"string","format":"date-time","description":"Дата отзыва токена. Всегда `null`: отозванные токены в ответ не попадают.","example":null,"nullable":true},"expires_in":{"type":"integer","format":"int32","description":"Время жизни токена в секундах. У токенов бота `null`: они бессрочные.","example":null,"nullable":true},"last_used_at":{"type":"string","format":"date-time","description":"Дата последнего использования токена. `null`, пока по токену не было ни одного запроса. Обновляется не чаще раза в час, поэтому может отставать.","example":"2025-02-24T14:20:00.000Z","nullable":true},"authorized_at":{"type":"string","format":"date-time","description":"Дата авторизации. У токенов бота `null`.","example":null,"nullable":true}},"$ref":"#/components/schemas/BotAccessToken"}}},"example":{"data":{"id":4827,"token":"cH5kR9mN...x7Qp","name":"Сервер уведомлений","user_id":1738816,"scopes":["messages:create","chats:read"],"created_at":"2025-01-15T10:30:00.000Z","revoked_at":null,"expires_in":null,"last_used_at":"2025-02-24T14:20:00.000Z","authorized_at":null}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"},{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}]}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"bots:write","scopeRoles":["owner","admin","user"]},"paginated":false},"docs":"# Изменение токена бота\n\n**Метод**: `PUT`\n\n**Путь**: `/bots/{id}/tokens/{token_id}`\n\n> **Скоуп:** `bots:write`\n\nМеняет имя или права токена. Новые права действуют сразу: перевыпускать токен не нужно, его значение остаётся прежним. Права заменяются переданным списком целиком.\n\nРаботать с токенами бота могут только его создатель и администратор пространства, если настройки бота открывают администраторам доступ к редактированию. Владельцу чата с ботом метод отвечает `403`, даже когда остальные настройки бота ему открыты.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор бота\n- `token_id: integer, int64` (required) — Идентификатор токена\n\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `name: string` (max length: 255) — Новое имя токена. Пример: `\"Сервер уведомлений\"`\n- `scopes: array of string` — Новые права токена. Список заменяется целиком и действует сразу, перевыпускать токен не нужно. Пример: `[\"messages:create\",\"chats:read\"]`\n\n### Пример\n\n```json\n{\n \"name\": \"Сервер уведомлений\",\n \"scopes\": [\n \"messages:create\",\n \"chats:read\"\n ]\n}\n```\n\n## Пример запроса\n\n```bash\ncurl -X PUT \"https://api.pachca.com/api/shared/v1/bots/1738816/tokens/4827\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"name\": \"Сервер уведомлений\",\n \"scopes\": [\n \"messages:create\",\n \"chats:read\"\n ]\n}'\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Токен бота\n - `id: integer, int64` (required) — Идентификатор токена. Пример: `4827`\n - `token: string` (required) — Токен в маскированном виде (видны первые 8 и последние 4 символа). Полное значение приходит один раз: при выпуске и перевыпуске токена. Пример: `\"cH5kR9mN...x7Qp\"`\n - `name: string` (required, nullable) — Имя токена. `null` у токена, выпущенного без имени. Пример: `\"Сервер уведомлений\"`\n - `user_id: integer, int64` (required) — Идентификатор бота, которому принадлежит токен. Пример: `1738816`\n - `scopes: array of string` (required) — Права токена. Пример: `[\"messages:create\",\"chats:read\"]`\n - `created_at: date-time` (required) — Дата и время выпуска токена (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2025-01-15T10:30:00.000Z\"`\n - `revoked_at: date-time` (required, nullable) — Дата отзыва токена. Всегда `null`: отозванные токены в ответ не попадают. Пример: `null`\n - `expires_in: integer, int32` (required, nullable) — Время жизни токена в секундах. У токенов бота `null`: они бессрочные. Пример: `null`\n - `last_used_at: date-time` (required, nullable) — Дата последнего использования токена. `null`, пока по токену не было ни одного запроса. Обновляется не чаще раза в час, поэтому может отставать. Пример: `\"2025-02-24T14:20:00.000Z\"`\n - `authorized_at: date-time` (required, nullable) — Дата авторизации. У токенов бота `null`. Пример: `null`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 4827,\n \"token\": \"cH5kR9mN...x7Qp\",\n \"name\": \"Сервер уведомлений\",\n \"user_id\": 1738816,\n \"scopes\": [\n \"messages:create\",\n \"chats:read\"\n ],\n \"created_at\": \"2025-01-15T10:30:00.000Z\",\n \"revoked_at\": null,\n \"expires_in\": null,\n \"last_used_at\": \"2025-02-24T14:20:00.000Z\",\n \"authorized_at\": null\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n**anyOf** - один из вариантов:\n\n- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)\n - `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403)\n - `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n - `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"DELETE","path":"/bots/{id}/tokens/{token_id}","summary":"Удаление токена бота","scope":"bots:write","plan":null,"auth":true,"paginated":false,"command":"pachca bots delete-token","docLink":"https://dev.pachca.com/api/bots/delete-token","describe":"# DELETE /bots/{id}/tokens/{token_id} — Удаление токена бота\n\n> **Скоуп:** `bots:write`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор бота\n- `token_id` — путь (обязательный): Идентификатор токена\n\n## Эквивалентная команда\n\n```bash\npachca bots delete-token 1738816 4827 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/bots/delete-token\nПолная справка: `pachca api DELETE /bots/{id}/tokens/{token_id} --docs` · схема: `--spec`\n","spec":{"method":"DELETE","path":"/bots/{id}/tokens/{token_id}","description":"Удаление токена бота\n\nУдаляет токен: запросы с ним сразу перестают проходить. Остальные токены бота продолжают работать.\n\nРаботать с токенами бота могут только его создатель и администратор пространства, если настройки бота открывают администраторам доступ к редактированию. Владельцу чата с ботом метод отвечает `403`, даже когда остальные настройки бота ему открыты.","parameters":[{"name":"id","in":"path","description":"Идентификатор бота","required":true,"schema":{"type":"integer","format":"int32","example":1738816},"example":1738816},{"name":"token_id","in":"path","description":"Идентификатор токена","required":true,"schema":{"type":"integer","format":"int64","example":4827},"example":4827}],"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"},{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}]}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"bots:write","scopeRoles":["owner","admin","user"]},"paginated":false},"docs":"# Удаление токена бота\n\n**Метод**: `DELETE`\n\n**Путь**: `/bots/{id}/tokens/{token_id}`\n\n> **Скоуп:** `bots:write`\n\nУдаляет токен: запросы с ним сразу перестают проходить. Остальные токены бота продолжают работать.\n\nРаботать с токенами бота могут только его создатель и администратор пространства, если настройки бота открывают администраторам доступ к редактированию. Владельцу чата с ботом метод отвечает `403`, даже когда остальные настройки бота ему открыты.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор бота\n- `token_id: integer, int64` (required) — Идентификатор токена\n\n\n## Пример запроса\n\n```bash\ncurl -X DELETE \"https://api.pachca.com/api/shared/v1/bots/1738816/tokens/4827\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n**anyOf** - один из вариантов:\n\n- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)\n - `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403)\n - `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n - `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"POST","path":"/bots/{id}/tokens/{token_id}/reissue","summary":"Перевыпуск токена бота","scope":"bots:write","plan":null,"auth":true,"paginated":false,"command":"pachca bots reissue-token","docLink":"https://dev.pachca.com/api/bots/reissue-token","describe":"# POST /bots/{id}/tokens/{token_id}/reissue — Перевыпуск токена бота\n\n> **Скоуп:** `bots:write`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор бота\n- `token_id` — путь (обязательный): Идентификатор токена\n\n## Эквивалентная команда\n\n```bash\npachca bots reissue-token 1738816 4827 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/bots/reissue-token\nПолная справка: `pachca api POST /bots/{id}/tokens/{token_id}/reissue --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/bots/{id}/tokens/{token_id}/reissue","description":"Перевыпуск токена бота\n\nЗаменяет значение токена новым: прежнее сразу перестаёт работать, имя и права остаются. Новое значение приходит в ответе один раз — сохраните его сразу.\n\nМетод нужен, когда токен утёк или его меняют по плану. Основной токен бота перевыпускает и [Ротация токена бота](POST /bots/{id}/recreate_token).\n\nРаботать с токенами бота могут только его создатель и администратор пространства, если настройки бота открывают администраторам доступ к редактированию. Владельцу чата с ботом метод отвечает `403`, даже когда остальные настройки бота ему открыты.","parameters":[{"name":"id","in":"path","description":"Идентификатор бота","required":true,"schema":{"type":"integer","format":"int32","example":1738816},"example":1738816},{"name":"token_id","in":"path","description":"Идентификатор токена","required":true,"schema":{"type":"integer","format":"int64","example":4827},"example":4827}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Токен бота","required":["id","token","name","user_id","scopes","created_at","revoked_at","expires_in","last_used_at","authorized_at"],"properties":{"id":{"type":"integer","format":"int64","description":"Идентификатор токена","example":4827},"token":{"type":"string","description":"Токен в маскированном виде (видны первые 8 и последние 4 символа). Полное значение приходит один раз: при выпуске и перевыпуске токена.","example":"cH5kR9mN...x7Qp"},"name":{"type":"string","description":"Имя токена. `null` у токена, выпущенного без имени.","example":"Сервер уведомлений","nullable":true},"user_id":{"type":"integer","format":"int64","description":"Идентификатор бота, которому принадлежит токен","example":1738816},"scopes":{"type":"array","description":"Права токена","example":["messages:create","chats:read"],"items":{"type":"string"}},"created_at":{"type":"string","format":"date-time","description":"Дата и время выпуска токена (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2025-01-15T10:30:00.000Z"},"revoked_at":{"type":"string","format":"date-time","description":"Дата отзыва токена. Всегда `null`: отозванные токены в ответ не попадают.","example":null,"nullable":true},"expires_in":{"type":"integer","format":"int32","description":"Время жизни токена в секундах. У токенов бота `null`: они бессрочные.","example":null,"nullable":true},"last_used_at":{"type":"string","format":"date-time","description":"Дата последнего использования токена. `null`, пока по токену не было ни одного запроса. Обновляется не чаще раза в час, поэтому может отставать.","example":"2025-02-24T14:20:00.000Z","nullable":true},"authorized_at":{"type":"string","format":"date-time","description":"Дата авторизации. У токенов бота `null`.","example":null,"nullable":true}},"$ref":"#/components/schemas/BotAccessToken"}}},"example":{"data":{"id":4827,"token":"bm90X2FfcmVhbF90b2tlbg","name":"Сервер уведомлений","user_id":1738816,"scopes":["messages:create","chats:read"],"created_at":"2025-01-15T10:30:00.000Z","revoked_at":null,"expires_in":null,"last_used_at":"2025-02-24T14:20:00.000Z","authorized_at":null}}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"},{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}]}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"bots:write","scopeRoles":["owner","admin","user"]},"paginated":false},"docs":"# Перевыпуск токена бота\n\n**Метод**: `POST`\n\n**Путь**: `/bots/{id}/tokens/{token_id}/reissue`\n\n> **Скоуп:** `bots:write`\n\nЗаменяет значение токена новым: прежнее сразу перестаёт работать, имя и права остаются. Новое значение приходит в ответе один раз — сохраните его сразу.\n\nМетод нужен, когда токен утёк или его меняют по плану. Основной токен бота перевыпускает и [Ротация токена бота](POST /bots/{id}/recreate_token).\n\nРаботать с токенами бота могут только его создатель и администратор пространства, если настройки бота открывают администраторам доступ к редактированию. Владельцу чата с ботом метод отвечает `403`, даже когда остальные настройки бота ему открыты.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор бота\n- `token_id: integer, int64` (required) — Идентификатор токена\n\n\n## Пример запроса\n\n```bash\ncurl -X POST \"https://api.pachca.com/api/shared/v1/bots/1738816/tokens/4827/reissue\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Токен бота\n - `id: integer, int64` (required) — Идентификатор токена. Пример: `4827`\n - `token: string` (required) — Токен в маскированном виде (видны первые 8 и последние 4 символа). Полное значение приходит один раз: при выпуске и перевыпуске токена. Пример: `\"cH5kR9mN...x7Qp\"`\n - `name: string` (required, nullable) — Имя токена. `null` у токена, выпущенного без имени. Пример: `\"Сервер уведомлений\"`\n - `user_id: integer, int64` (required) — Идентификатор бота, которому принадлежит токен. Пример: `1738816`\n - `scopes: array of string` (required) — Права токена. Пример: `[\"messages:create\",\"chats:read\"]`\n - `created_at: date-time` (required) — Дата и время выпуска токена (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2025-01-15T10:30:00.000Z\"`\n - `revoked_at: date-time` (required, nullable) — Дата отзыва токена. Всегда `null`: отозванные токены в ответ не попадают. Пример: `null`\n - `expires_in: integer, int32` (required, nullable) — Время жизни токена в секундах. У токенов бота `null`: они бессрочные. Пример: `null`\n - `last_used_at: date-time` (required, nullable) — Дата последнего использования токена. `null`, пока по токену не было ни одного запроса. Обновляется не чаще раза в час, поэтому может отставать. Пример: `\"2025-02-24T14:20:00.000Z\"`\n - `authorized_at: date-time` (required, nullable) — Дата авторизации. У токенов бота `null`. Пример: `null`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 4827,\n \"token\": \"bm90X2FfcmVhbF90b2tlbg\",\n \"name\": \"Сервер уведомлений\",\n \"user_id\": 1738816,\n \"scopes\": [\n \"messages:create\",\n \"chats:read\"\n ],\n \"created_at\": \"2025-01-15T10:30:00.000Z\",\n \"revoked_at\": null,\n \"expires_in\": null,\n \"last_used_at\": \"2025-02-24T14:20:00.000Z\",\n \"authorized_at\": null\n }\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n**anyOf** - один из вариантов:\n\n- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)\n - `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403)\n - `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n - `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"POST","path":"/chats","summary":"Новый чат","scope":"chats:create","plan":null,"auth":true,"paginated":false,"command":"pachca chats create","docLink":"https://dev.pachca.com/api/chats/create","describe":"# POST /chats — Новый чат\n\n> **Скоуп:** `chats:create`\n\n## Тело запроса\n\n- `chat: object` (required) — Собранный объект параметров создаваемого чата\n - `name: string` (required, max length: 255) — Название\n - `member_ids: array of integer` — Массив идентификаторов пользователей, которые станут участниками\n - `group_tag_ids: array of integer` — Массив идентификаторов тегов, которые станут участниками\n - `channel: boolean` (default: false) — Является каналом\n - `public: boolean` (default: false) — Открытый доступ\n\n## Эквивалентная команда\n\n```bash\npachca chats create \\\n --name='🤿 aqua' \\\n --member-ids='[186,187]' \\\n --group-tag-ids='[86,18]' \\\n --channel \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/chats/create\nПолная справка: `pachca api POST /chats --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/chats","description":"Новый чат\n\nСоздаёт беседу или канал. Владелец токена становится владельцем чата, и роль эта в дальнейшем не передаётся.\n\nМульти-гость, как и в интерфейсе, создавать чаты не может: метод отвечает ему `403`.\n\nДля создания личной переписки 1 на 1 с пользователем пользуйтесь методом [Новое сообщение](POST /messages). Чтобы обсудить конкретное сообщение, чат заводить не нужно — под ним заводят тред методом [Новый тред](POST /messages/{id}/thread).\n\nУчастников можно передать сразу: `member_ids` добавляет поимённо, `group_tag_ids` приводит всех, кто состоит в теге, и дальше поддерживает состав сам. Идентификаторы, которых в пространстве нет, а также приостановленные и удалённые сотрудники молча отбрасываются — ответ приходит успешным, а сотрудника в чате не оказывается, поэтому сверяйте состав в ответе. С ботами строже: если настройка бота «Кто может добавлять бота в чаты» не разрешает вам его добавить, чат не создаётся, а метод отвечает `403` с кодом `bot_add_denied` и идентификаторами таких ботов в `value`.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на создание чата","required":["chat"],"properties":{"chat":{"type":"object","description":"Собранный объект параметров создаваемого чата","required":["name"],"properties":{"name":{"type":"string","description":"Название","example":"🤿 aqua","maxLength":255},"member_ids":{"type":"array","description":"Массив идентификаторов пользователей, которые станут участниками","example":[186,187],"items":{"type":"integer","format":"int32"}},"group_tag_ids":{"type":"array","description":"Массив идентификаторов тегов, которые станут участниками","example":[86,18],"items":{"type":"integer","format":"int32"}},"channel":{"type":"boolean","description":"Является каналом","default":false,"example":true},"public":{"type":"boolean","description":"Открытый доступ","default":false,"example":false}}}},"$ref":"#/components/schemas/ChatCreateRequest"}}}},"responses":{"201":{"description":"The request has succeeded and a new resource has been created as a result.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Чат","required":["id","name","created_at","owner_id","member_ids","group_tag_ids","channel","archived","personal","public","last_message_at","meet_room_url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор созданного чата","example":334},"name":{"type":"string","description":"Название","example":"🤿 aqua","maxLength":255},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания чата (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2021-08-28T15:56:53.000Z"},"owner_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, создавшего чат","example":185},"member_ids":{"type":"array","description":"Массив идентификаторов пользователей, участников","example":[185,186,187],"items":{"type":"integer","format":"int32"}},"group_tag_ids":{"type":"array","description":"Массив идентификаторов тегов, участников","example":[9111],"items":{"type":"integer","format":"int32"}},"channel":{"type":"boolean","description":"Является каналом","example":true},"archived":{"type":"boolean","description":"Находится в архиве","example":false},"personal":{"type":"boolean","description":"Является личным чатом","example":false},"public":{"type":"boolean","description":"Открытый доступ","example":false},"last_message_at":{"type":"string","format":"date-time","description":"Дата и время создания последнего сообщения в чате (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2021-08-28T15:56:53.000Z"},"meet_room_url":{"type":"string","description":"Ссылка на Видеочат","example":"https://meet.pachca.com/aqua-94bb21b5"}},"$ref":"#/components/schemas/Chat"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"},{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}]}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"chats:create","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Новый чат\n\n**Метод**: `POST`\n\n**Путь**: `/chats`\n\n> **Скоуп:** `chats:create`\n\nСоздаёт беседу или канал. Владелец токена становится владельцем чата, и роль эта в дальнейшем не передаётся.\n\nМульти-гость, как и в интерфейсе, создавать чаты не может: метод отвечает ему `403`.\n\nДля создания личной переписки 1 на 1 с пользователем пользуйтесь методом [Новое сообщение](POST /messages). Чтобы обсудить конкретное сообщение, чат заводить не нужно — под ним заводят тред методом [Новый тред](POST /messages/{id}/thread).\n\nУчастников можно передать сразу: `member_ids` добавляет поимённо, `group_tag_ids` приводит всех, кто состоит в теге, и дальше поддерживает состав сам. Идентификаторы, которых в пространстве нет, а также приостановленные и удалённые сотрудники молча отбрасываются — ответ приходит успешным, а сотрудника в чате не оказывается, поэтому сверяйте состав в ответе. С ботами строже: если настройка бота «Кто может добавлять бота в чаты» не разрешает вам его добавить, чат не создаётся, а метод отвечает `403` с кодом `bot_add_denied` и идентификаторами таких ботов в `value`.\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `chat: object` (required) — Собранный объект параметров создаваемого чата\n - `name: string` (required, max length: 255) — Название. Пример: `\"🤿 aqua\"`\n - `member_ids: array of integer` — Массив идентификаторов пользователей, которые станут участниками. Пример: `[186,187]`\n - `group_tag_ids: array of integer` — Массив идентификаторов тегов, которые станут участниками. Пример: `[86,18]`\n - `channel: boolean` (default: false) — Является каналом. Пример: `true`\n - `public: boolean` (default: false) — Открытый доступ. Пример: `false`\n\n### Пример\n\n```json\n{\n \"chat\": {\n \"name\": \"🤿 aqua\",\n \"member_ids\": [\n 186,\n 187\n ],\n \"group_tag_ids\": [\n 86,\n 18\n ],\n \"channel\": true\n }\n}\n```\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/chats\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"chat\": {\n \"name\": \"🤿 aqua\",\n \"member_ids\": [\n 186,\n 187\n ],\n \"group_tag_ids\": [\n 86,\n 18\n ],\n \"channel\": true\n }\n}'\n```\n\n## Ответы\n\n### 201: The request has succeeded and a new resource has been created as a result.\n\n**Схема ответа:**\n\n- `data: object` (required) — Чат\n - `id: integer, int32` (required) — Идентификатор созданного чата. Пример: `334`\n - `name: string` (required, max length: 255) — Название. Пример: `\"🤿 aqua\"`\n - `created_at: date-time` (required) — Дата и время создания чата (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2021-08-28T15:56:53.000Z\"`\n - `owner_id: integer, int32` (required) — Идентификатор пользователя, создавшего чат. Пример: `185`\n - `member_ids: array of integer` (required) — Массив идентификаторов пользователей, участников. Пример: `[185,186,187]`\n - `group_tag_ids: array of integer` (required) — Массив идентификаторов тегов, участников. Пример: `[9111]`\n - `channel: boolean` (required) — Является каналом. Пример: `true`\n - `archived: boolean` (required) — Находится в архиве. Пример: `false`\n - `personal: boolean` (required) — Является личным чатом. Пример: `false`\n - `public: boolean` (required) — Открытый доступ. Пример: `false`\n - `last_message_at: date-time` (required) — Дата и время создания последнего сообщения в чате (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2021-08-28T15:56:53.000Z\"`\n - `meet_room_url: string` (required) — Ссылка на Видеочат. Пример: `\"https://meet.pachca.com/aqua-94bb21b5\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 334,\n \"name\": \"🤿 aqua\",\n \"created_at\": \"2021-08-28T15:56:53.000Z\",\n \"owner_id\": 185,\n \"member_ids\": [\n 185,\n 186,\n 187\n ],\n \"group_tag_ids\": [\n 9111\n ],\n \"channel\": true,\n \"archived\": false,\n \"personal\": false,\n \"public\": false,\n \"last_message_at\": \"2021-08-28T15:56:53.000Z\",\n \"meet_room_url\": \"https://meet.pachca.com/aqua-94bb21b5\"\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n**anyOf** - один из вариантов:\n\n- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)\n - `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403)\n - `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n - `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/chats","summary":"Список чатов","scope":"chats:read","plan":null,"auth":true,"paginated":true,"command":"pachca chats list","docLink":"https://dev.pachca.com/api/chats/list","describe":"# GET /chats — Список чатов\n\n> **Скоуп:** `chats:read`\n\n> Пагинация: добавьте `--all` для автоматического обхода страниц\n\n## Параметры\n\n- `sort` — query: Поле сортировки\n- `order` — query: Направление сортировки\n- `availability` — query: Параметр, который отвечает за доступность и выборку чатов для пользователя\n- `archived` — query: Добавляет к выдаче архивные чаты. По умолчанию возвращаются только активные. Работает при любом значении `availability`.\n- `last_message_at_after` — query: Фильтрация по времени создания последнего сообщения: вернутся чаты, где оно позже указанного. Значение в ISO-8601, смещение вида `+03:00` учитывается, время без смещения считается UTC.\n- `last_message_at_before` — query: Фильтрация по времени создания последнего сообщения: вернутся чаты, где оно раньше указанного. Значение в ISO-8601, смещение вида `+03:00` учитывается, время без смещения считается UTC.\n- `personal` — query: Фильтрация по личным и групповым чатам. Если параметр не указан, возвращаются любые чаты.\n- `limit` — query: Количество возвращаемых сущностей за один запрос\n- `cursor` — query: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n## Эквивалентная команда\n\n```bash\n# Добавьте --all для автоматической пагинации\npachca chats list \\\n --sort=id \\\n --order=desc \\\n --availability=is_member \\\n --archived \\\n --last-message-at-after=2025-01-01T00:00:00.000Z \\\n --last-message-at-before=2025-02-01T00:00:00.000Z \\\n --no-personal \\\n --limit=1 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/chats/list\nПолная справка: `pachca api GET /chats --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/chats","description":"Список чатов\n\nПо умолчанию — беседы, каналы и личные переписки, где состоит владелец токена. С `availability=public` метод отдаёт вместо этого все открытые чаты пространства, включая те, куда вызывающий не вступал. Мульти-гостю — только открытые чаты, где он участник.\n\nТреды в списке не приходят никогда, для них есть [Список тредов](GET /threads).\n\n`archived=true` не переключает выдачу на архив, а добавляет архивные чаты к активным.","parameters":[{"name":"sort","in":"query","description":"Поле сортировки","required":false,"schema":{"default":"id","allOf":[{"type":"string","description":"Поле сортировки чатов","enum":["id","last_message_at"],"x-enum-descriptions":{"id":"По идентификатору чата","last_message_at":"По дате и времени создания последнего сообщения"},"$ref":"#/components/schemas/ChatSortField"}]},"example":"id","explode":false},{"name":"order","in":"query","description":"Направление сортировки","required":false,"schema":{"default":"desc","allOf":[{"type":"string","description":"Порядок сортировки","enum":["asc","desc"],"x-enum-descriptions":{"asc":"По возрастанию","desc":"По убыванию"},"$ref":"#/components/schemas/SortOrder"}]},"example":"desc","explode":false},{"name":"availability","in":"query","description":"Параметр, который отвечает за доступность и выборку чатов для пользователя","required":false,"schema":{"default":"is_member","allOf":[{"type":"string","description":"Доступность чатов для пользователя","enum":["is_member","public"],"x-enum-descriptions":{"is_member":"Чаты, где пользователь является участником","public":"Все открытые чаты компании, вне зависимости от участия в них пользователя"},"$ref":"#/components/schemas/ChatAvailability"}]},"example":"is_member","explode":false},{"name":"archived","in":"query","description":"Добавляет к выдаче архивные чаты. По умолчанию возвращаются только активные. Работает при любом значении `availability`.","required":false,"schema":{"type":"boolean","default":false,"example":true},"example":true,"explode":false},{"name":"last_message_at_after","in":"query","description":"Фильтрация по времени создания последнего сообщения: вернутся чаты, где оно позже указанного. Значение в ISO-8601, смещение вида `+03:00` учитывается, время без смещения считается UTC.","required":false,"schema":{"type":"string","format":"date-time","example":"2025-01-01T00:00:00.000Z"},"example":"2025-01-01T00:00:00.000Z","explode":false},{"name":"last_message_at_before","in":"query","description":"Фильтрация по времени создания последнего сообщения: вернутся чаты, где оно раньше указанного. Значение в ISO-8601, смещение вида `+03:00` учитывается, время без смещения считается UTC.","required":false,"schema":{"type":"string","format":"date-time","example":"2025-02-01T00:00:00.000Z"},"example":"2025-02-01T00:00:00.000Z","explode":false},{"name":"personal","in":"query","description":"Фильтрация по личным и групповым чатам. Если параметр не указан, возвращаются любые чаты.","required":false,"schema":{"type":"boolean","example":false},"example":false,"explode":false},{"name":"limit","in":"query","description":"Количество возвращаемых сущностей за один запрос","required":false,"schema":{"type":"integer","format":"int32","default":50,"example":1,"minimum":1,"maximum":50},"example":1,"explode":false},{"name":"cursor","in":"query","description":"Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)","required":false,"schema":{"type":"string","example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9"},"example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9","explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными и пагинацией","required":["data","meta"],"properties":{"data":{"type":"array","items":{"type":"object","description":"Чат","required":["id","name","created_at","owner_id","member_ids","group_tag_ids","channel","archived","personal","public","last_message_at","meet_room_url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор созданного чата","example":334},"name":{"type":"string","description":"Название","example":"🤿 aqua","maxLength":255},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания чата (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2021-08-28T15:56:53.000Z"},"owner_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, создавшего чат","example":185},"member_ids":{"type":"array","description":"Массив идентификаторов пользователей, участников","example":[185,186,187],"items":{"type":"integer","format":"int32"}},"group_tag_ids":{"type":"array","description":"Массив идентификаторов тегов, участников","example":[9111],"items":{"type":"integer","format":"int32"}},"channel":{"type":"boolean","description":"Является каналом","example":true},"archived":{"type":"boolean","description":"Находится в архиве","example":false},"personal":{"type":"boolean","description":"Является личным чатом","example":false},"public":{"type":"boolean","description":"Открытый доступ","example":false},"last_message_at":{"type":"string","format":"date-time","description":"Дата и время создания последнего сообщения в чате (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2021-08-28T15:56:53.000Z"},"meet_room_url":{"type":"string","description":"Ссылка на Видеочат","example":"https://meet.pachca.com/aqua-94bb21b5"}},"$ref":"#/components/schemas/Chat"}},"meta":{"type":"object","description":"Метаданные пагинации","required":["paginate"],"properties":{"paginate":{"type":"object","description":"Вспомогательная информация","required":["next_page"],"properties":{"next_page":{"type":"string","description":"Курсор пагинации следующей страницы","example":"eyJxZCO2MiwiZGlyIjomSNYjIn3"},"prev_page":{"type":"string","description":"Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка.","example":"eyJxZCO2MiwiZGlyIjoiYXNjIn0"},"has_next":{"type":"boolean","description":"Есть ли ещё данные на следующей странице. На последней странице — `false`.","example":true},"has_prev":{"type":"boolean","description":"Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`.","example":false}}}},"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"chats:read","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":true},"docs":"# Список чатов\n\n**Метод**: `GET`\n\n**Путь**: `/chats`\n\n> **Скоуп:** `chats:read`\n\nПо умолчанию — беседы, каналы и личные переписки, где состоит владелец токена. С `availability=public` метод отдаёт вместо этого все открытые чаты пространства, включая те, куда вызывающий не вступал. Мульти-гостю — только открытые чаты, где он участник.\n\nТреды в списке не приходят никогда, для них есть [Список тредов](GET /threads).\n\n`archived=true` не переключает выдачу на архив, а добавляет архивные чаты к активным.\n\n## Параметры\n\n### Query параметры\n\n- `sort: string` (default: id) — Поле сортировки\n- `order: string` (default: desc) — Направление сортировки\n- `availability: string` (default: is_member) — Параметр, который отвечает за доступность и выборку чатов для пользователя\n- `archived: boolean` (default: false) — Добавляет к выдаче архивные чаты. По умолчанию возвращаются только активные. Работает при любом значении `availability`.\n- `last_message_at_after: date-time` — Фильтрация по времени создания последнего сообщения: вернутся чаты, где оно позже указанного. Значение в ISO-8601, смещение вида `+03:00` учитывается, время без смещения считается UTC.\n- `last_message_at_before: date-time` — Фильтрация по времени создания последнего сообщения: вернутся чаты, где оно раньше указанного. Значение в ISO-8601, смещение вида `+03:00` учитывается, время без смещения считается UTC.\n- `personal: boolean` — Фильтрация по личным и групповым чатам. Если параметр не указан, возвращаются любые чаты.\n- `limit: integer, int32` (default: 50) — Количество возвращаемых сущностей за один запрос\n- `cursor: string` — Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n\n## Пример запроса\n\n```bash\n# Для получения следующей страницы используйте cursor из meta.paginate.next_page\ncurl \"https://api.pachca.com/api/shared/v1/chats?sort=id&order=desc&availability=is_member&archived=true&last_message_at_after=2025-01-01T00:00:00.000Z&last_message_at_before=2025-02-01T00:00:00.000Z&personal=false&limit=1\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: array of object` (required)\n - `id: integer, int32` (required) — Идентификатор созданного чата. Пример: `334`\n - `name: string` (required, max length: 255) — Название. Пример: `\"🤿 aqua\"`\n - `created_at: date-time` (required) — Дата и время создания чата (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2021-08-28T15:56:53.000Z\"`\n - `owner_id: integer, int32` (required) — Идентификатор пользователя, создавшего чат. Пример: `185`\n - `member_ids: array of integer` (required) — Массив идентификаторов пользователей, участников. Пример: `[185,186,187]`\n - `group_tag_ids: array of integer` (required) — Массив идентификаторов тегов, участников. Пример: `[9111]`\n - `channel: boolean` (required) — Является каналом. Пример: `true`\n - `archived: boolean` (required) — Находится в архиве. Пример: `false`\n - `personal: boolean` (required) — Является личным чатом. Пример: `false`\n - `public: boolean` (required) — Открытый доступ. Пример: `false`\n - `last_message_at: date-time` (required) — Дата и время создания последнего сообщения в чате (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2021-08-28T15:56:53.000Z\"`\n - `meet_room_url: string` (required) — Ссылка на Видеочат. Пример: `\"https://meet.pachca.com/aqua-94bb21b5\"`\n- `meta: object` (required) — Метаданные пагинации\n - `paginate: object` (required) — Вспомогательная информация\n - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `\"eyJxZCO2MiwiZGlyIjomSNYjIn3\"`\n - `prev_page: string` — Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка. Пример: `\"eyJxZCO2MiwiZGlyIjoiYXNjIn0\"`\n - `has_next: boolean` — Есть ли ещё данные на следующей странице. На последней странице — `false`. Пример: `true`\n - `has_prev: boolean` — Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`. Пример: `false`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": [\n {\n \"id\": 334,\n \"name\": \"🤿 aqua\",\n \"created_at\": \"2021-08-28T15:56:53.000Z\",\n \"owner_id\": 185,\n \"member_ids\": [\n 185,\n 186,\n 187\n ],\n \"group_tag_ids\": [\n 9111\n ],\n \"channel\": true,\n \"archived\": false,\n \"personal\": false,\n \"public\": false,\n \"last_message_at\": \"2021-08-28T15:56:53.000Z\",\n \"meet_room_url\": \"https://meet.pachca.com/aqua-94bb21b5\"\n }\n ],\n \"meta\": {\n \"paginate\": {\n \"next_page\": \"eyJxZCO2MiwiZGlyIjomSNYjIn3\",\n \"prev_page\": \"eyJxZCO2MiwiZGlyIjoiYXNjIn0\",\n \"has_next\": true,\n \"has_prev\": false\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"POST","path":"/chats/exports","summary":"Экспорт сообщений","scope":"chat_exports:write","plan":"corporation","auth":true,"paginated":false,"command":"pachca chats request-export","docLink":"https://dev.pachca.com/api/chats/request-export","describe":"# POST /chats/exports — Экспорт сообщений\n\n> **Скоуп:** `chat_exports:write`\n\n> **Тариф:** Корпорация\n\n## Тело запроса\n\n- `start_at: date` (required) — Дата начала для экспорта в формате YYYY-MM-DD. Если прислать дату со временем, время молча отбрасывается — экспорт всегда идёт по календарным дням.\n- `end_at: date` (required) — Дата окончания для экспорта в формате YYYY-MM-DD, включительно. Если прислать дату со временем, время молча отбрасывается.\n- `webhook_url: string` — Адрес, на который придёт вебхук с номером готовой выгрузки. Без него узнать номер неоткуда: заказавший получит письмо и уведомление, а вызывающая программа — ничего.\n- `chat_ids: array of integer` — Массив идентификаторов чатов. Указывается, если нужно получить сообщения только некоторых чатов.\n- `skip_chats_file: boolean` (default: false) — Пропуск формирования файла со списком чатов (chats.json)\n\n## Эквивалентная команда\n\n```bash\npachca chats request-export \\\n --start-at=2025-03-20 \\\n --end-at=2025-03-20 \\\n --webhook-url=https://webhook.site/9227d3b8-6e82-4e64-bf5d-ad972ad270f2 \\\n --chat-ids='[1381521]' \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/chats/request-export\nПолная справка: `pachca api POST /chats/exports --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/chats/exports","description":"Экспорт сообщений\n\nЗаказ выгрузки сообщений пространства за период. Архив готовится в фоне, поэтому ответ приходит пустым и идентификатора выгрузки не содержит.\n\nНомер готовой выгрузки приходит в поле `export_id` вебхука на адрес из `webhook_url`. Заказавший дополнительно получает письмо и уведомление в Пачке со ссылкой вида `/full_exports/{id}` — число в ней и есть идентификатор. Адрес вебхука необязателен, но без него программе номер взять неоткуда: остаются только письмо и уведомление заказавшему.\n\nС этим идентификатором архив забирают методом [Скачать архив экспорта](GET /chats/exports/{id}).","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на экспорт сообщений","required":["start_at","end_at"],"properties":{"start_at":{"type":"string","format":"date","description":"Дата начала для экспорта в формате YYYY-MM-DD. Если прислать дату со временем, время молча отбрасывается — экспорт всегда идёт по календарным дням.","example":"2025-03-20"},"end_at":{"type":"string","format":"date","description":"Дата окончания для экспорта в формате YYYY-MM-DD, включительно. Если прислать дату со временем, время молча отбрасывается.","example":"2025-03-20"},"webhook_url":{"type":"string","description":"Адрес, на который придёт вебхук с номером готовой выгрузки. Без него узнать номер неоткуда: заказавший получит письмо и уведомление, а вызывающая программа — ничего.","example":"https://webhook.site/9227d3b8-6e82-4e64-bf5d-ad972ad270f2"},"chat_ids":{"type":"array","description":"Массив идентификаторов чатов. Указывается, если нужно получить сообщения только некоторых чатов.","example":[1381521],"items":{"type":"integer","format":"int32"}},"skip_chats_file":{"type":"boolean","description":"Пропуск формирования файла со списком чатов (chats.json)","default":false,"example":false}},"$ref":"#/components/schemas/ExportRequest"}}}},"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"},{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}]}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"chat_exports:write","plan":"corporation","scopeRoles":["owner"]},"paginated":false},"docs":"# Экспорт сообщений\n\n**Метод**: `POST`\n\n**Путь**: `/chats/exports`\n\n> **Скоуп:** `chat_exports:write`\n\n> **Внимание:** Доступно только на тарифе **Корпорация**\n\nЗаказ выгрузки сообщений пространства за период. Архив готовится в фоне, поэтому ответ приходит пустым и идентификатора выгрузки не содержит.\n\nНомер готовой выгрузки приходит в поле `export_id` вебхука на адрес из `webhook_url`. Заказавший дополнительно получает письмо и уведомление в Пачке со ссылкой вида `/full_exports/{id}` — число в ней и есть идентификатор. Адрес вебхука необязателен, но без него программе номер взять неоткуда: остаются только письмо и уведомление заказавшему.\n\nС этим идентификатором архив забирают методом [Скачать архив экспорта](GET /chats/exports/{id}).\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `start_at: date` (required) — Дата начала для экспорта в формате YYYY-MM-DD. Если прислать дату со временем, время молча отбрасывается — экспорт всегда идёт по календарным дням. Пример: `\"2025-03-20\"`\n- `end_at: date` (required) — Дата окончания для экспорта в формате YYYY-MM-DD, включительно. Если прислать дату со временем, время молча отбрасывается. Пример: `\"2025-03-20\"`\n- `webhook_url: string` — Адрес, на который придёт вебхук с номером готовой выгрузки. Без него узнать номер неоткуда: заказавший получит письмо и уведомление, а вызывающая программа — ничего. Пример: `\"https://webhook.site/9227d3b8-6e82-4e64-bf5d-ad972ad270f2\"`\n- `chat_ids: array of integer` — Массив идентификаторов чатов. Указывается, если нужно получить сообщения только некоторых чатов. Пример: `[1381521]`\n- `skip_chats_file: boolean` (default: false) — Пропуск формирования файла со списком чатов (chats.json). Пример: `false`\n\n### Пример\n\n```json\n{\n \"start_at\": \"2025-03-20\",\n \"end_at\": \"2025-03-20\",\n \"webhook_url\": \"https://webhook.site/9227d3b8-6e82-4e64-bf5d-ad972ad270f2\",\n \"chat_ids\": [\n 1381521\n ]\n}\n```\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/chats/exports\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"start_at\": \"2025-03-20\",\n \"end_at\": \"2025-03-20\",\n \"webhook_url\": \"https://webhook.site/9227d3b8-6e82-4e64-bf5d-ad972ad270f2\",\n \"chat_ids\": [\n 1381521\n ]\n}'\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n**anyOf** - один из вариантов:\n\n- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)\n - `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403)\n - `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n - `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/chats/exports/{id}","summary":"Скачать архив экспорта","scope":"chat_exports:read","plan":"corporation","auth":true,"paginated":false,"command":"pachca chats download-export","docLink":"https://dev.pachca.com/api/chats/download-export","describe":"# GET /chats/exports/{id} — Скачать архив экспорта\n\n> **Скоуп:** `chat_exports:read`\n\n> **Тариф:** Корпорация\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор экспорта\n\n## Эквивалентная команда\n\n```bash\npachca chats download-export 22322 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/chats/download-export\nПолная справка: `pachca api GET /chats/exports/{id} --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/chats/exports/{id}","description":"Скачать архив экспорта\n\nВ ответ на запрос сервер вернёт `302 Found` с заголовком `Location`, содержащим временную ссылку на скачивание файла. Большинство HTTP-клиентов автоматически следуют редиректу и скачивают файл.\n\nСсылка действует 5 минут, поэтому скачивайте архив сразу после запроса. Сам архив хранится 7 дней, а скачать его может только тот, кто заказал выгрузку. Другому сотруднику с тем же правом метод откажет.","parameters":[{"name":"id","in":"path","description":"Идентификатор экспорта","required":true,"schema":{"type":"integer","format":"int32","example":22322},"example":22322}],"responses":{"302":{"description":"Redirection","headers":{"location":{"description":"Временная ссылка на архив в хранилище, действует 5 минут","schema":{"type":"string","format":"uri"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"},{"anyOf":[{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"},{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}]}]}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"chat_exports:read","plan":"corporation","scopeRoles":["owner"]},"paginated":false},"docs":"# Скачать архив экспорта\n\n**Метод**: `GET`\n\n**Путь**: `/chats/exports/{id}`\n\n> **Скоуп:** `chat_exports:read`\n\n> **Внимание:** Доступно только на тарифе **Корпорация**\n\nВ ответ на запрос сервер вернёт `302 Found` с заголовком `Location`, содержащим временную ссылку на скачивание файла. Большинство HTTP-клиентов автоматически следуют редиректу и скачивают файл.\n\nСсылка действует 5 минут, поэтому скачивайте архив сразу после запроса. Сам архив хранится 7 дней, а скачать его может только тот, кто заказал выгрузку. Другому сотруднику с тем же правом метод откажет.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор экспорта\n\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/chats/exports/22322\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 302: Redirection\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n**anyOf** - один из вариантов:\n\n- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403)\n - `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n - `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n- **Вариант 2**\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/chats/{id}","summary":"Информация о чате","scope":"chats:read","plan":null,"auth":true,"paginated":false,"command":"pachca chats get","docLink":"https://dev.pachca.com/api/chats/get","describe":"# GET /chats/{id} — Информация о чате\n\n> **Скоуп:** `chats:read`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор чата\n\n## Эквивалентная команда\n\n```bash\npachca chats get 334 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/chats/get\nПолная справка: `pachca api GET /chats/{id} --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/chats/{id}","description":"Информация о чате\n\nКарточка чата вместе с составом участников и привязанными тегами.\n\nЗакрытая беседа, в которой вызывающий не состоит, отвечает `403`, а не `404`: существование чата этим методом не скрывается. Открытый канал своего пространства отдаётся и тому, кто в него не вступал. Владельцу пространства метод тоже не открывает чужие закрытые чаты — весь их перечень отдаёт [Список чатов пространства](GET /company/chats).\n\nВ `member_ids` приходят только действующие участники: приостановленные в список не попадают, хотя членство у них сохраняется.","parameters":[{"name":"id","in":"path","description":"Идентификатор чата","required":true,"schema":{"type":"integer","format":"int32","example":334},"example":334}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Чат","required":["id","name","created_at","owner_id","member_ids","group_tag_ids","channel","archived","personal","public","last_message_at","meet_room_url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор созданного чата","example":334},"name":{"type":"string","description":"Название","example":"🤿 aqua","maxLength":255},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания чата (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2021-08-28T15:56:53.000Z"},"owner_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, создавшего чат","example":185},"member_ids":{"type":"array","description":"Массив идентификаторов пользователей, участников","example":[185,186,187],"items":{"type":"integer","format":"int32"}},"group_tag_ids":{"type":"array","description":"Массив идентификаторов тегов, участников","example":[9111],"items":{"type":"integer","format":"int32"}},"channel":{"type":"boolean","description":"Является каналом","example":true},"archived":{"type":"boolean","description":"Находится в архиве","example":false},"personal":{"type":"boolean","description":"Является личным чатом","example":false},"public":{"type":"boolean","description":"Открытый доступ","example":false},"last_message_at":{"type":"string","format":"date-time","description":"Дата и время создания последнего сообщения в чате (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2021-08-28T15:56:53.000Z"},"meet_room_url":{"type":"string","description":"Ссылка на Видеочат","example":"https://meet.pachca.com/aqua-94bb21b5"}},"$ref":"#/components/schemas/Chat"}}}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"chats:read","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":false},"docs":"# Информация о чате\n\n**Метод**: `GET`\n\n**Путь**: `/chats/{id}`\n\n> **Скоуп:** `chats:read`\n\nКарточка чата вместе с составом участников и привязанными тегами.\n\nЗакрытая беседа, в которой вызывающий не состоит, отвечает `403`, а не `404`: существование чата этим методом не скрывается. Открытый канал своего пространства отдаётся и тому, кто в него не вступал. Владельцу пространства метод тоже не открывает чужие закрытые чаты — весь их перечень отдаёт [Список чатов пространства](GET /company/chats).\n\nВ `member_ids` приходят только действующие участники: приостановленные в список не попадают, хотя членство у них сохраняется.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор чата\n\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/chats/334\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Чат\n - `id: integer, int32` (required) — Идентификатор созданного чата. Пример: `334`\n - `name: string` (required, max length: 255) — Название. Пример: `\"🤿 aqua\"`\n - `created_at: date-time` (required) — Дата и время создания чата (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2021-08-28T15:56:53.000Z\"`\n - `owner_id: integer, int32` (required) — Идентификатор пользователя, создавшего чат. Пример: `185`\n - `member_ids: array of integer` (required) — Массив идентификаторов пользователей, участников. Пример: `[185,186,187]`\n - `group_tag_ids: array of integer` (required) — Массив идентификаторов тегов, участников. Пример: `[9111]`\n - `channel: boolean` (required) — Является каналом. Пример: `true`\n - `archived: boolean` (required) — Находится в архиве. Пример: `false`\n - `personal: boolean` (required) — Является личным чатом. Пример: `false`\n - `public: boolean` (required) — Открытый доступ. Пример: `false`\n - `last_message_at: date-time` (required) — Дата и время создания последнего сообщения в чате (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2021-08-28T15:56:53.000Z\"`\n - `meet_room_url: string` (required) — Ссылка на Видеочат. Пример: `\"https://meet.pachca.com/aqua-94bb21b5\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 334,\n \"name\": \"🤿 aqua\",\n \"created_at\": \"2021-08-28T15:56:53.000Z\",\n \"owner_id\": 185,\n \"member_ids\": [\n 185,\n 186,\n 187\n ],\n \"group_tag_ids\": [\n 9111\n ],\n \"channel\": true,\n \"archived\": false,\n \"personal\": false,\n \"public\": false,\n \"last_message_at\": \"2021-08-28T15:56:53.000Z\",\n \"meet_room_url\": \"https://meet.pachca.com/aqua-94bb21b5\"\n }\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"PUT","path":"/chats/{id}","summary":"Редактирование чата","scope":"chats:update","plan":null,"auth":true,"paginated":false,"command":"pachca chats update","docLink":"https://dev.pachca.com/api/chats/update","describe":"# PUT /chats/{id} — Редактирование чата\n\n> **Скоуп:** `chats:update`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор чата\n\n## Тело запроса\n\n- `chat: object` (required) — Собранный объект параметров обновляемого чата\n - `name: string` (max length: 255) — Название\n - `public: boolean` — Открытый доступ\n\n## Эквивалентная команда\n\n```bash\npachca chats update 334 \\\n --name=Бассейн \\\n --public \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/chats/update\nПолная справка: `pachca api PUT /chats/{id} --docs` · схема: `--spec`\n","spec":{"method":"PUT","path":"/chats/{id}","description":"Редактирование чата\n\nМеняет название беседы или канала и его доступность. Оба изменения видны участникам системным сообщением в ленте чата.\n\nЛичный чат переименовать нельзя, архивный — тоже: сначала верните его из архива методом [Разархивация чата](PUT /chats/{id}/unarchive). В закрытом чате метод доступен владельцу и администратору чата, в открытом — любому сотруднику пространства, даже не участнику.\n\nСостав участников этим методом не меняется, для него есть [Добавление пользователей](POST /chats/{id}/members) и [Исключение пользователя](DELETE /chats/{id}/members/{user_id}).","parameters":[{"name":"id","in":"path","description":"Идентификатор чата","required":true,"schema":{"type":"integer","format":"int32","example":334},"example":334}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на обновление чата","required":["chat"],"properties":{"chat":{"type":"object","description":"Собранный объект параметров обновляемого чата","properties":{"name":{"type":"string","description":"Название","example":"Бассейн","maxLength":255},"public":{"type":"boolean","description":"Открытый доступ","example":true}}}},"$ref":"#/components/schemas/ChatUpdateRequest"}}}},"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Чат","required":["id","name","created_at","owner_id","member_ids","group_tag_ids","channel","archived","personal","public","last_message_at","meet_room_url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор созданного чата","example":334},"name":{"type":"string","description":"Название","example":"🤿 aqua","maxLength":255},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания чата (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2021-08-28T15:56:53.000Z"},"owner_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, создавшего чат","example":185},"member_ids":{"type":"array","description":"Массив идентификаторов пользователей, участников","example":[185,186,187],"items":{"type":"integer","format":"int32"}},"group_tag_ids":{"type":"array","description":"Массив идентификаторов тегов, участников","example":[9111],"items":{"type":"integer","format":"int32"}},"channel":{"type":"boolean","description":"Является каналом","example":true},"archived":{"type":"boolean","description":"Находится в архиве","example":false},"personal":{"type":"boolean","description":"Является личным чатом","example":false},"public":{"type":"boolean","description":"Открытый доступ","example":false},"last_message_at":{"type":"string","format":"date-time","description":"Дата и время создания последнего сообщения в чате (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2021-08-28T15:56:53.000Z"},"meet_room_url":{"type":"string","description":"Ссылка на Видеочат","example":"https://meet.pachca.com/aqua-94bb21b5"}},"$ref":"#/components/schemas/Chat"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"chats:update","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":false},"docs":"# Редактирование чата\n\n**Метод**: `PUT`\n\n**Путь**: `/chats/{id}`\n\n> **Скоуп:** `chats:update`\n\nМеняет название беседы или канала и его доступность. Оба изменения видны участникам системным сообщением в ленте чата.\n\nЛичный чат переименовать нельзя, архивный — тоже: сначала верните его из архива методом [Разархивация чата](PUT /chats/{id}/unarchive). В закрытом чате метод доступен владельцу и администратору чата, в открытом — любому сотруднику пространства, даже не участнику.\n\nСостав участников этим методом не меняется, для него есть [Добавление пользователей](POST /chats/{id}/members) и [Исключение пользователя](DELETE /chats/{id}/members/{user_id}).\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор чата\n\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `chat: object` (required) — Собранный объект параметров обновляемого чата\n - `name: string` (max length: 255) — Название. Пример: `\"Бассейн\"`\n - `public: boolean` — Открытый доступ. Пример: `true`\n\n### Пример\n\n```json\n{\n \"chat\": {\n \"name\": \"Бассейн\",\n \"public\": true\n }\n}\n```\n\n## Пример запроса\n\n```bash\ncurl -X PUT \"https://api.pachca.com/api/shared/v1/chats/334\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"chat\": {\n \"name\": \"Бассейн\",\n \"public\": true\n }\n}'\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Чат\n - `id: integer, int32` (required) — Идентификатор созданного чата. Пример: `334`\n - `name: string` (required, max length: 255) — Название. Пример: `\"🤿 aqua\"`\n - `created_at: date-time` (required) — Дата и время создания чата (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2021-08-28T15:56:53.000Z\"`\n - `owner_id: integer, int32` (required) — Идентификатор пользователя, создавшего чат. Пример: `185`\n - `member_ids: array of integer` (required) — Массив идентификаторов пользователей, участников. Пример: `[185,186,187]`\n - `group_tag_ids: array of integer` (required) — Массив идентификаторов тегов, участников. Пример: `[9111]`\n - `channel: boolean` (required) — Является каналом. Пример: `true`\n - `archived: boolean` (required) — Находится в архиве. Пример: `false`\n - `personal: boolean` (required) — Является личным чатом. Пример: `false`\n - `public: boolean` (required) — Открытый доступ. Пример: `false`\n - `last_message_at: date-time` (required) — Дата и время создания последнего сообщения в чате (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2021-08-28T15:56:53.000Z\"`\n - `meet_room_url: string` (required) — Ссылка на Видеочат. Пример: `\"https://meet.pachca.com/aqua-94bb21b5\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 334,\n \"name\": \"🤿 aqua\",\n \"created_at\": \"2021-08-28T15:56:53.000Z\",\n \"owner_id\": 185,\n \"member_ids\": [\n 185,\n 186,\n 187\n ],\n \"group_tag_ids\": [\n 9111\n ],\n \"channel\": true,\n \"archived\": false,\n \"personal\": false,\n \"public\": false,\n \"last_message_at\": \"2021-08-28T15:56:53.000Z\",\n \"meet_room_url\": \"https://meet.pachca.com/aqua-94bb21b5\"\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"PUT","path":"/chats/{id}/archive","summary":"Архивация чата","scope":"chats:archive","plan":null,"auth":true,"paginated":false,"command":"pachca chats archive","docLink":"https://dev.pachca.com/api/chats/archive","describe":"# PUT /chats/{id}/archive — Архивация чата\n\n> **Скоуп:** `chats:archive`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор чата\n\n## Эквивалентная команда\n\n```bash\npachca chats archive 334 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/chats/archive\nПолная справка: `pachca api PUT /chats/{id}/archive --docs` · схема: `--spec`\n","spec":{"method":"PUT","path":"/chats/{id}/archive","description":"Архивация чата\n\nОтправляет беседу или канал в архив: чат пропадает из списков у всех участников, новые сообщения в него не принимаются, а история сохраняется.\n\nАрхивация не только замораживает чат. Из него исключаются все гости, а теги от него отвязываются. Приведённые тегом сотрудники при этом остаются обычными участниками, но состав чата больше не поддерживается сам. Метод [Разархивация чата](PUT /chats/{id}/unarchive) не возвращает ни гостей, ни привязку тегов.\n\nТреды, заведённые в чате, остаются открытыми: писать в них можно и после архивации.\n\nЛичный чат и тред в архив не отправляются. Повторная архивация уже архивного чата отвечает `403`.","parameters":[{"name":"id","in":"path","description":"Идентификатор чата","required":true,"schema":{"type":"integer","format":"int32","example":334},"example":334}],"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"chats:archive","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":false},"docs":"# Архивация чата\n\n**Метод**: `PUT`\n\n**Путь**: `/chats/{id}/archive`\n\n> **Скоуп:** `chats:archive`\n\nОтправляет беседу или канал в архив: чат пропадает из списков у всех участников, новые сообщения в него не принимаются, а история сохраняется.\n\nАрхивация не только замораживает чат. Из него исключаются все гости, а теги от него отвязываются. Приведённые тегом сотрудники при этом остаются обычными участниками, но состав чата больше не поддерживается сам. Метод [Разархивация чата](PUT /chats/{id}/unarchive) не возвращает ни гостей, ни привязку тегов.\n\nТреды, заведённые в чате, остаются открытыми: писать в них можно и после архивации.\n\nЛичный чат и тред в архив не отправляются. Повторная архивация уже архивного чата отвечает `403`.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор чата\n\n\n## Пример запроса\n\n```bash\ncurl -X PUT \"https://api.pachca.com/api/shared/v1/chats/334/archive\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"POST","path":"/chats/{id}/group_tags","summary":"Добавление тегов","scope":"chat_members:write","plan":null,"auth":true,"paginated":false,"command":"pachca members add-group-tags","docLink":"https://dev.pachca.com/api/members/add-group-tags","describe":"# POST /chats/{id}/group_tags — Добавление тегов\n\n> **Скоуп:** `chat_members:write`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор чата\n\n## Тело запроса\n\n- `group_tag_ids: array of integer` (required) — Массив идентификаторов тегов, которые станут участниками\n\n## Эквивалентная команда\n\n```bash\npachca members add-group-tags 334 \\\n --group-tag-ids='[86,18]' \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/members/add-group-tags\nПолная справка: `pachca api POST /chats/{id}/group_tags --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/chats/{id}/group_tags","description":"Добавление тегов\n\nПривязывает теги к беседе или каналу, чтобы состав чата поддерживался сам.\n\nПосле добавления тега все его участники автоматически становятся участниками чата. Состав участников тега и чата синхронизируется автоматически: при добавлении нового участника в тег он сразу появляется в чате, при удалении из тега — удаляется из чата.\n\nЕсли хотя бы один из переданных тегов не найден, метод отвечает `404` и не привязывает ни одного. Тег, который к чату уже привязан, повторно не привязывается, а его участники всё равно догружаются в чат.\n\nПривязать тег может участник закрытой беседы и любой сотрудник пространства в открытом чате, а отцепить — только владелец или администратор чата методом [Исключение тега](DELETE /chats/{id}/group_tags/{tag_id}).","parameters":[{"name":"id","in":"path","description":"Идентификатор чата","required":true,"schema":{"type":"integer","format":"int32","example":334},"example":334}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на добавление тегов в чат","required":["group_tag_ids"],"properties":{"group_tag_ids":{"type":"array","description":"Массив идентификаторов тегов, которые станут участниками","example":[86,18],"items":{"type":"integer","format":"int32"}}},"$ref":"#/components/schemas/AddTagsRequest"}}}},"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"chat_members:write","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":false},"docs":"# Добавление тегов\n\n**Метод**: `POST`\n\n**Путь**: `/chats/{id}/group_tags`\n\n> **Скоуп:** `chat_members:write`\n\nПривязывает теги к беседе или каналу, чтобы состав чата поддерживался сам.\n\nПосле добавления тега все его участники автоматически становятся участниками чата. Состав участников тега и чата синхронизируется автоматически: при добавлении нового участника в тег он сразу появляется в чате, при удалении из тега — удаляется из чата.\n\nЕсли хотя бы один из переданных тегов не найден, метод отвечает `404` и не привязывает ни одного. Тег, который к чату уже привязан, повторно не привязывается, а его участники всё равно догружаются в чат.\n\nПривязать тег может участник закрытой беседы и любой сотрудник пространства в открытом чате, а отцепить — только владелец или администратор чата методом [Исключение тега](DELETE /chats/{id}/group_tags/{tag_id}).\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор чата\n\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `group_tag_ids: array of integer` (required) — Массив идентификаторов тегов, которые станут участниками. Пример: `[86,18]`\n\n### Пример\n\n```json\n{\n \"group_tag_ids\": [\n 86,\n 18\n ]\n}\n```\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/chats/334/group_tags\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"group_tag_ids\": [\n 86,\n 18\n ]\n}'\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"DELETE","path":"/chats/{id}/group_tags/{tag_id}","summary":"Исключение тега","scope":"chat_members:write","plan":null,"auth":true,"paginated":false,"command":"pachca members remove-group-tag","docLink":"https://dev.pachca.com/api/members/remove-group-tag","describe":"# DELETE /chats/{id}/group_tags/{tag_id} — Исключение тега\n\n> **Скоуп:** `chat_members:write`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор чата\n- `tag_id` — путь (обязательный): Идентификатор тега\n\n## Эквивалентная команда\n\n```bash\npachca members remove-group-tag 334 86 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/members/remove-group-tag\nПолная справка: `pachca api DELETE /chats/{id}/group_tags/{tag_id} --docs` · схема: `--spec`\n","spec":{"method":"DELETE","path":"/chats/{id}/group_tags/{tag_id}","description":"Исключение тега\n\nОтцепляет тег от беседы или канала и выводит оттуда сотрудников, которых держал только он.\n\nВыход происходит фоном, уже после ответа: метод отвечает `204` сразу, а состав чата меняется через несколько мгновений. Останутся владелец чата, те, кого приводит другой тег этого же чата, и те, кого добавляли в чат вручную.\n\nСнять тег с чата может владелец или администратор чата. Привязать его обратно можно методом [Добавление тегов](POST /chats/{id}/group_tags).","parameters":[{"name":"id","in":"path","description":"Идентификатор чата","required":true,"schema":{"type":"integer","format":"int32","example":334},"example":334},{"name":"tag_id","in":"path","description":"Идентификатор тега","required":true,"schema":{"type":"integer","format":"int32","example":86},"example":86}],"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"chat_members:write","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":false},"docs":"# Исключение тега\n\n**Метод**: `DELETE`\n\n**Путь**: `/chats/{id}/group_tags/{tag_id}`\n\n> **Скоуп:** `chat_members:write`\n\nОтцепляет тег от беседы или канала и выводит оттуда сотрудников, которых держал только он.\n\nВыход происходит фоном, уже после ответа: метод отвечает `204` сразу, а состав чата меняется через несколько мгновений. Останутся владелец чата, те, кого приводит другой тег этого же чата, и те, кого добавляли в чат вручную.\n\nСнять тег с чата может владелец или администратор чата. Привязать его обратно можно методом [Добавление тегов](POST /chats/{id}/group_tags).\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор чата\n- `tag_id: integer, int32` (required) — Идентификатор тега\n\n\n## Пример запроса\n\n```bash\ncurl -X DELETE \"https://api.pachca.com/api/shared/v1/chats/334/group_tags/86\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"DELETE","path":"/chats/{id}/leave","summary":"Выход из чата","scope":"chats:leave","plan":null,"auth":true,"paginated":false,"command":"pachca members leave","docLink":"https://dev.pachca.com/api/members/leave","describe":"# DELETE /chats/{id}/leave — Выход из чата\n\n> **Скоуп:** `chats:leave`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор чата\n\n## Эквивалентная команда\n\n```bash\npachca members leave 334 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/members/leave\nПолная справка: `pachca api DELETE /chats/{id}/leave --docs` · схема: `--spec`\n","spec":{"method":"DELETE","path":"/chats/{id}/leave","description":"Выход из чата\n\nВладелец токена выходит из беседы, канала или треда сам. Из треда выходят по его `chat_id`. В закрытой беседе остальные видят системное сообщение о выходе, в открытом чате и канале — нет.\n\nВыйти нельзя, если сотрудника держит в чате привязанный тег: метод ответит `403`, пока тег не снимут с сотрудника или с чата. Из личной переписки выйти тоже нельзя, а вот из архивного чата можно.\n\nВернуться в открытый чат можно самому, в закрытый — только если кто-то из участников добавит обратно. Другого сотрудника выводит [Исключение пользователя](DELETE /chats/{id}/members/{user_id}).","parameters":[{"name":"id","in":"path","description":"Идентификатор чата","required":true,"schema":{"type":"integer","format":"int32","example":334},"example":334}],"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"chats:leave","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Выход из чата\n\n**Метод**: `DELETE`\n\n**Путь**: `/chats/{id}/leave`\n\n> **Скоуп:** `chats:leave`\n\nВладелец токена выходит из беседы, канала или треда сам. Из треда выходят по его `chat_id`. В закрытой беседе остальные видят системное сообщение о выходе, в открытом чате и канале — нет.\n\nВыйти нельзя, если сотрудника держит в чате привязанный тег: метод ответит `403`, пока тег не снимут с сотрудника или с чата. Из личной переписки выйти тоже нельзя, а вот из архивного чата можно.\n\nВернуться в открытый чат можно самому, в закрытый — только если кто-то из участников добавит обратно. Другого сотрудника выводит [Исключение пользователя](DELETE /chats/{id}/members/{user_id}).\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор чата\n\n\n## Пример запроса\n\n```bash\ncurl -X DELETE \"https://api.pachca.com/api/shared/v1/chats/334/leave\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/chats/{id}/members","summary":"Список участников чата","scope":"chat_members:read","plan":null,"auth":true,"paginated":true,"command":"pachca members list","docLink":"https://dev.pachca.com/api/members/list","describe":"# GET /chats/{id}/members — Список участников чата\n\n> **Скоуп:** `chat_members:read`\n\n> Пагинация: добавьте `--all` для автоматического обхода страниц\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор чата\n- `role` — query: Роль в чате\n- `limit` — query: Количество возвращаемых сущностей за один запрос\n- `cursor` — query: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n## Эквивалентная команда\n\n```bash\n# Добавьте --all для автоматической пагинации\npachca members list 334 \\\n --role=all \\\n --limit=1 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/members/list\nПолная справка: `pachca api GET /chats/{id}/members --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/chats/{id}/members","description":"Список участников чата\n\nКто состоит в беседе, канале или треде. Боты приходят наравне с сотрудниками, с `bot: true`.\n\nВладелец пространства может получить состав участников любого чата пространства. Администраторы и боты получают состав только тех чатов, где состоят сами, и открытых чатов пространства.\n\nВ выдачу попадают только действующие сотрудники: приостановленные не приходят, хотя членство у них сохраняется. Роль участника в чате метод не отдаёт — параметр `role` работает только как фильтр.","parameters":[{"name":"id","in":"path","description":"Идентификатор чата","required":true,"schema":{"type":"integer","format":"int32","example":334},"example":334},{"name":"role","in":"query","description":"Роль в чате","required":false,"schema":{"default":"all","allOf":[{"type":"string","description":"Роль участника чата (с фильтром все)","enum":["all","owner","admin","editor","member"],"x-enum-descriptions":{"all":"Любая роль","owner":"Создатель","admin":"Админ","editor":"Редактор","member":"Участник/подписчик"},"$ref":"#/components/schemas/ChatMemberRoleFilter"}]},"example":"all","explode":false},{"name":"limit","in":"query","description":"Количество возвращаемых сущностей за один запрос","required":false,"schema":{"type":"integer","format":"int32","default":50,"example":1,"minimum":1,"maximum":50},"example":1,"explode":false},{"name":"cursor","in":"query","description":"Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)","required":false,"schema":{"type":"string","example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9"},"example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9","explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными и пагинацией","required":["data","meta"],"properties":{"data":{"type":"array","items":{"type":"object","description":"Сотрудник","required":["id","first_name","last_name","nickname","email","phone_number","department","title","role","suspended","invite_status","inviter_id","list_tags","custom_properties","user_status","bot","sso","created_at","last_activity_at","time_zone","image_url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор пользователя","example":12},"first_name":{"type":"string","description":"Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`).","example":"Олег","nullable":true,"maxLength":255},"last_name":{"type":"string","description":"Фамилия. Если не заполнена, возвращается `null` или пустая строка.","example":"Петров","nullable":true,"maxLength":255},"nickname":{"type":"string","description":"Имя пользователя","example":"olegpetrov","maxLength":255},"email":{"type":"string","description":"Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда.","example":"olegp@example.com","nullable":true,"maxLength":255},"phone_number":{"type":"string","description":"Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда.","example":"+79001234567","nullable":true,"maxLength":255},"department":{"type":"string","description":"Департамент. Если не указан, возвращается `null` или пустая строка.","example":"Продукт","nullable":true,"maxLength":255},"title":{"type":"string","description":"Должность. Если не указана, возвращается `null` или пустая строка.","example":"CIO","nullable":true},"role":{"description":"Уровень доступа","example":"admin","allOf":[{"type":"string","description":"Роль пользователя в системе","enum":["admin","user","multi_guest","guest"],"x-enum-descriptions":{"admin":"Администратор","user":"Сотрудник","multi_guest":"Мульти-гость","guest":"Гость"},"$ref":"#/components/schemas/UserRole"}]},"suspended":{"type":"boolean","description":"Деактивация пользователя","example":false},"invite_status":{"description":"Статус приглашения","example":"confirmed","allOf":[{"type":"string","description":"Статус приглашения пользователя","enum":["confirmed","sent"],"x-enum-descriptions":{"confirmed":"Принято","sent":"Отправлено"},"$ref":"#/components/schemas/InviteStatus"}]},"inviter_id":{"type":"integer","format":"int32","description":"Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён.","example":185,"nullable":true},"list_tags":{"type":"array","description":"Массив тегов, привязанных к сотруднику. Мульти-гостю в чужой карточке приходит пустым.","example":["Product","Design"],"items":{"type":"string"}},"custom_properties":{"type":"array","description":"Дополнительные поля сотрудника","items":{"type":"object","description":"Дополнительное поле","required":["id","name","data_type","value"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор поля","example":1678},"name":{"type":"string","description":"Название поля","example":"Город","maxLength":32},"data_type":{"description":"Тип поля","example":"string","allOf":[{"type":"string","description":"Тип данных дополнительного поля","enum":["string","number","date","link"],"x-enum-descriptions":{"string":"Строковое значение","number":"Числовое значение","date":"Дата","link":"Ссылка"},"$ref":"#/components/schemas/CustomPropertyDataType"}]},"value":{"type":"string","description":"Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601.","example":"Санкт-Петербург","nullable":true,"maxLength":768}},"$ref":"#/components/schemas/CustomProperty"}},"user_status":{"type":"object","description":"Статус. `null`, если у сотрудника не установлен статус.","nullable":true,"allOf":[{"type":"object","description":"Статус пользователя","required":["emoji","title","expires_at","is_away","away_message"],"properties":{"emoji":{"type":"string","description":"Emoji символ статуса","example":"🎮"},"title":{"type":"string","description":"Текст статуса","example":"Очень занят","maxLength":50},"expires_at":{"type":"string","format":"date-time","description":"Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически.","example":"2024-04-08T10:00:00.000Z","nullable":true},"is_away":{"type":"boolean","description":"Режим «Нет на месте»","example":false},"away_message":{"type":"object","description":"Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.","required":["text"],"nullable":true,"properties":{"text":{"type":"string","description":"Текст сообщения","example":"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.","maxLength":1024}}}},"$ref":"#/components/schemas/UserStatus"}]},"bot":{"type":"boolean","description":"Является ботом","example":false},"sso":{"type":"boolean","description":"Использует ли пользователь SSO","example":false},"created_at":{"type":"string","format":"date-time","description":"Дата создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2020-06-08T09:32:57.000Z"},"last_activity_at":{"type":"string","format":"date-time","description":"Дата последней активности пользователя (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если сотрудник ещё ни разу не заходил в Пачку — в этом случае `invite_status` возвращает `sent`.","example":"2025-01-20T13:40:07.000Z","nullable":true},"time_zone":{"type":"string","description":"Часовой пояс пользователя. `null`, если сотрудник не задал личный часовой пояс — тогда применяется часовой пояс компании.","example":"Europe/Moscow","nullable":true,"maxLength":32},"image_url":{"type":"string","description":"Ссылка на скачивание аватарки пользователя. `null`, если аватарка не загружена.","example":"https://app.pachca.com/users/12/photo.jpg","nullable":true}},"$ref":"#/components/schemas/User"}},"meta":{"type":"object","description":"Метаданные пагинации","required":["paginate"],"properties":{"paginate":{"type":"object","description":"Вспомогательная информация","required":["next_page"],"properties":{"next_page":{"type":"string","description":"Курсор пагинации следующей страницы","example":"eyJxZCO2MiwiZGlyIjomSNYjIn3"},"prev_page":{"type":"string","description":"Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка.","example":"eyJxZCO2MiwiZGlyIjoiYXNjIn0"},"has_next":{"type":"boolean","description":"Есть ли ещё данные на следующей странице. На последней странице — `false`.","example":true},"has_prev":{"type":"boolean","description":"Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`.","example":false}}}},"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"chat_members:read","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":true},"docs":"# Список участников чата\n\n**Метод**: `GET`\n\n**Путь**: `/chats/{id}/members`\n\n> **Скоуп:** `chat_members:read`\n\nКто состоит в беседе, канале или треде. Боты приходят наравне с сотрудниками, с `bot: true`.\n\nВладелец пространства может получить состав участников любого чата пространства. Администраторы и боты получают состав только тех чатов, где состоят сами, и открытых чатов пространства.\n\nВ выдачу попадают только действующие сотрудники: приостановленные не приходят, хотя членство у них сохраняется. Роль участника в чате метод не отдаёт — параметр `role` работает только как фильтр.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор чата\n\n### Query параметры\n\n- `role: string` (default: all) — Роль в чате\n- `limit: integer, int32` (default: 50) — Количество возвращаемых сущностей за один запрос\n- `cursor: string` — Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n\n## Пример запроса\n\n```bash\n# Для получения следующей страницы используйте cursor из meta.paginate.next_page\ncurl \"https://api.pachca.com/api/shared/v1/chats/334/members?role=all&limit=1\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: array of object` (required)\n - `id: integer, int32` (required) — Идентификатор пользователя. Пример: `12`\n - `first_name: string` (required, nullable, max length: 255) — Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`). Пример: `\"Олег\"`\n - `last_name: string` (required, nullable, max length: 255) — Фамилия. Если не заполнена, возвращается `null` или пустая строка. Пример: `\"Петров\"`\n - `nickname: string` (required, max length: 255) — Имя пользователя. Пример: `\"olegpetrov\"`\n - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `\"olegp@example.com\"`\n - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `\"+79001234567\"`\n - `department: string` (required, nullable, max length: 255) — Департамент. Если не указан, возвращается `null` или пустая строка. Пример: `\"Продукт\"`\n - `title: string` (required, nullable) — Должность. Если не указана, возвращается `null` или пустая строка. Пример: `\"CIO\"`\n - `role: string` (required) — Уровень доступа\n Значения: `admin` — Администратор, `user` — Сотрудник, `multi_guest` — Мульти-гость, `guest` — Гость\n - `suspended: boolean` (required) — Деактивация пользователя. Пример: `false`\n - `invite_status: string` (required) — Статус приглашения\n Значения: `confirmed` — Принято, `sent` — Отправлено\n - `inviter_id: integer, int32` (required, nullable) — Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён. Пример: `185`\n - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Мульти-гостю в чужой карточке приходит пустым. Пример: `[\"Product\",\"Design\"]`\n - `custom_properties: array of object` (required) — Дополнительные поля сотрудника\n - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678`\n - `name: string` (required, max length: 32) — Название поля. Пример: `\"Город\"`\n - `data_type: string` (required) — Тип поля\n Значения: `string` — Строковое значение, `number` — Числовое значение, `date` — Дата, `link` — Ссылка\n - `value: string` (required, nullable, max length: 768) — Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601. Пример: `\"Санкт-Петербург\"`\n - `user_status: object` (required) — Статус. `null`, если у сотрудника не установлен статус.\n - `emoji: string` (required) — Emoji символ статуса. Пример: `\"🎮\"`\n - `title: string` (required, max length: 50) — Текст статуса. Пример: `\"Очень занят\"`\n - `expires_at: date-time` (required, nullable) — Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически. Пример: `\"2024-04-08T10:00:00.000Z\"`\n - `is_away: boolean` (required) — Режим «Нет на месте». Пример: `false`\n - `away_message: object` (required, nullable) — Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.\n - `text: string` (required, max length: 1024) — Текст сообщения. Пример: `\"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"`\n - `bot: boolean` (required) — Является ботом. Пример: `false`\n - `sso: boolean` (required) — Использует ли пользователь SSO. Пример: `false`\n - `created_at: date-time` (required) — Дата создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2020-06-08T09:32:57.000Z\"`\n - `last_activity_at: date-time` (required, nullable) — Дата последней активности пользователя (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если сотрудник ещё ни разу не заходил в Пачку — в этом случае `invite_status` возвращает `sent`. Пример: `\"2025-01-20T13:40:07.000Z\"`\n - `time_zone: string` (required, nullable, max length: 32) — Часовой пояс пользователя. `null`, если сотрудник не задал личный часовой пояс — тогда применяется часовой пояс компании. Пример: `\"Europe/Moscow\"`\n - `image_url: string` (required, nullable) — Ссылка на скачивание аватарки пользователя. `null`, если аватарка не загружена. Пример: `\"https://app.pachca.com/users/12/photo.jpg\"`\n- `meta: object` (required) — Метаданные пагинации\n - `paginate: object` (required) — Вспомогательная информация\n - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `\"eyJxZCO2MiwiZGlyIjomSNYjIn3\"`\n - `prev_page: string` — Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка. Пример: `\"eyJxZCO2MiwiZGlyIjoiYXNjIn0\"`\n - `has_next: boolean` — Есть ли ещё данные на следующей странице. На последней странице — `false`. Пример: `true`\n - `has_prev: boolean` — Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`. Пример: `false`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": [\n {\n \"id\": 12,\n \"first_name\": \"Олег\",\n \"last_name\": \"Петров\",\n \"nickname\": \"olegpetrov\",\n \"email\": \"olegp@example.com\",\n \"phone_number\": \"+79001234567\",\n \"department\": \"Продукт\",\n \"title\": \"CIO\",\n \"role\": \"admin\",\n \"suspended\": false,\n \"invite_status\": \"confirmed\",\n \"inviter_id\": 185,\n \"list_tags\": [\n \"Product\",\n \"Design\"\n ],\n \"custom_properties\": [\n {\n \"id\": 1678,\n \"name\": \"Город\",\n \"data_type\": \"string\",\n \"value\": \"Санкт-Петербург\"\n }\n ],\n \"user_status\": {\n \"emoji\": \"🎮\",\n \"title\": \"Очень занят\",\n \"expires_at\": \"2024-04-08T10:00:00.000Z\",\n \"is_away\": false,\n \"away_message\": {\n \"text\": \"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"\n }\n },\n \"bot\": false,\n \"sso\": false,\n \"created_at\": \"2020-06-08T09:32:57.000Z\",\n \"last_activity_at\": \"2025-01-20T13:40:07.000Z\",\n \"time_zone\": \"Europe/Moscow\",\n \"image_url\": \"https://app.pachca.com/users/12/photo.jpg\"\n }\n ],\n \"meta\": {\n \"paginate\": {\n \"next_page\": \"eyJxZCO2MiwiZGlyIjomSNYjIn3\",\n \"prev_page\": \"eyJxZCO2MiwiZGlyIjoiYXNjIn0\",\n \"has_next\": true,\n \"has_prev\": false\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"POST","path":"/chats/{id}/members","summary":"Добавление пользователей","scope":"chat_members:write","plan":null,"auth":true,"paginated":false,"command":"pachca members add","docLink":"https://dev.pachca.com/api/members/add","describe":"# POST /chats/{id}/members — Добавление пользователей\n\n> **Скоуп:** `chat_members:write`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор чата (беседа, канал или чат треда)\n\n## Тело запроса\n\n- `member_ids: array of integer` (required) — Массив идентификаторов пользователей, которые станут участниками\n- `silent: boolean` — Не создавать в чате системное сообщение о добавлении участника\n\n## Эквивалентная команда\n\n```bash\npachca members add 334 \\\n --member-ids='[186,187]' \\\n --silent \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/members/add\nПолная справка: `pachca api POST /chats/{id}/members --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/chats/{id}/members","description":"Добавление пользователей\n\nДобавляет сотрудников и ботов в беседу, канал или тред. Бота добавляют так же, как сотрудника: его `id` в `member_ids`. В канале он получает роль редактора, а в беседе становится обычным участником — и только после этого может туда писать.\n\nРоль в чате назначается в момент добавления: владелец пространства и администратор становятся администраторами чата, остальные — обычными участниками. Дальше она сама не пересчитывается, и повышение сотрудника в пространстве ничего не меняет там, где он уже состоит. Менять роль нужно методом [Редактирование роли](PUT /chats/{id}/members/{user_id}).\n\nТех, кто уже состоит в чате, метод пропускает молча и ошибкой это не считает. А вот неизвестный или неактивный идентификатор останавливает весь запрос: метод отвечает `404` и перечисляет такие значения, никто при этом не добавляется.\n\nБота добавляет только тот, кому это разрешает настройка бота «Кто может добавлять бота в чаты» — подробнее в разделе [Настройки бота](/guides/bots/settings#kto-mozhet-dobavlyat-bota-v-chaty). Если в `member_ids` есть бот, которого вам добавлять нельзя, метод не добавляет никого и отвечает `403` с кодом `bot_add_denied` и идентификаторами таких ботов в `value`. Если в том же запросе есть и неизвестный идентификатор, ответ — `404` с обеими ошибками.\n\nДобавить сразу целый отдел удобнее тегом — [Добавление тегов](POST /chats/{id}/group_tags): тогда состав чата поддерживается сам.","parameters":[{"name":"id","in":"path","description":"Идентификатор чата (беседа, канал или чат треда)","required":true,"schema":{"type":"integer","format":"int32","example":334},"example":334}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на добавление участников в чат","required":["member_ids"],"properties":{"member_ids":{"type":"array","description":"Массив идентификаторов пользователей, которые станут участниками","example":[186,187],"items":{"type":"integer","format":"int32"}},"silent":{"type":"boolean","description":"Не создавать в чате системное сообщение о добавлении участника","example":true}},"$ref":"#/components/schemas/AddMembersRequest"}}}},"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"},{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}]}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"chat_members:write","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":false},"docs":"# Добавление пользователей\n\n**Метод**: `POST`\n\n**Путь**: `/chats/{id}/members`\n\n> **Скоуп:** `chat_members:write`\n\nДобавляет сотрудников и ботов в беседу, канал или тред. Бота добавляют так же, как сотрудника: его `id` в `member_ids`. В канале он получает роль редактора, а в беседе становится обычным участником — и только после этого может туда писать.\n\nРоль в чате назначается в момент добавления: владелец пространства и администратор становятся администраторами чата, остальные — обычными участниками. Дальше она сама не пересчитывается, и повышение сотрудника в пространстве ничего не меняет там, где он уже состоит. Менять роль нужно методом [Редактирование роли](PUT /chats/{id}/members/{user_id}).\n\nТех, кто уже состоит в чате, метод пропускает молча и ошибкой это не считает. А вот неизвестный или неактивный идентификатор останавливает весь запрос: метод отвечает `404` и перечисляет такие значения, никто при этом не добавляется.\n\nБота добавляет только тот, кому это разрешает настройка бота «Кто может добавлять бота в чаты» — подробнее в разделе [Настройки бота](/guides/bots/settings#kto-mozhet-dobavlyat-bota-v-chaty). Если в `member_ids` есть бот, которого вам добавлять нельзя, метод не добавляет никого и отвечает `403` с кодом `bot_add_denied` и идентификаторами таких ботов в `value`. Если в том же запросе есть и неизвестный идентификатор, ответ — `404` с обеими ошибками.\n\nДобавить сразу целый отдел удобнее тегом — [Добавление тегов](POST /chats/{id}/group_tags): тогда состав чата поддерживается сам.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор чата (беседа, канал или чат треда)\n\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `member_ids: array of integer` (required) — Массив идентификаторов пользователей, которые станут участниками. Пример: `[186,187]`\n- `silent: boolean` — Не создавать в чате системное сообщение о добавлении участника. Пример: `true`\n\n### Пример\n\n```json\n{\n \"member_ids\": [\n 186,\n 187\n ],\n \"silent\": true\n}\n```\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/chats/334/members\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"member_ids\": [\n 186,\n 187\n ],\n \"silent\": true\n}'\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n**anyOf** - один из вариантов:\n\n- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)\n - `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403)\n - `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n - `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"DELETE","path":"/chats/{id}/members/{user_id}","summary":"Исключение пользователя","scope":"chat_members:write","plan":null,"auth":true,"paginated":false,"command":"pachca members remove","docLink":"https://dev.pachca.com/api/members/remove","describe":"# DELETE /chats/{id}/members/{user_id} — Исключение пользователя\n\n> **Скоуп:** `chat_members:write`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор чата\n- `user_id` — путь (обязательный): Идентификатор пользователя\n\n## Эквивалентная команда\n\n```bash\npachca members remove 334 186 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/members/remove\nПолная справка: `pachca api DELETE /chats/{id}/members/{user_id} --docs` · схема: `--spec`\n","spec":{"method":"DELETE","path":"/chats/{id}/members/{user_id}","description":"Исключение пользователя\n\nУбирает сотрудника или бота из беседы, канала или треда. Из треда исключают по его `chat_id`. В закрытой беседе исключённый теряет доступ к чату, но остаётся в тредах, где состоял.\n\nСотрудника, которого держит в чате привязанный тег, этим методом убрать нельзя: ответ придёт успешный, а сотрудник останется в чате. Снимите с него тег методом [Редактирование сотрудника](PUT /users/{id}) или отцепите тег от чата методом [Исключение тега](DELETE /chats/{id}/group_tags/{tag_id}).\n\nЕсли пользователь является владельцем чата, то исключить его нельзя. Он может только самостоятельно выйти из чата, воспользовавшись методом [Выход из чата](DELETE /chats/{id}/leave).","parameters":[{"name":"id","in":"path","description":"Идентификатор чата","required":true,"schema":{"type":"integer","format":"int32","example":334},"example":334},{"name":"user_id","in":"path","description":"Идентификатор пользователя","required":true,"schema":{"type":"integer","format":"int32","example":186},"example":186}],"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"chat_members:write","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":false},"docs":"# Исключение пользователя\n\n**Метод**: `DELETE`\n\n**Путь**: `/chats/{id}/members/{user_id}`\n\n> **Скоуп:** `chat_members:write`\n\nУбирает сотрудника или бота из беседы, канала или треда. Из треда исключают по его `chat_id`. В закрытой беседе исключённый теряет доступ к чату, но остаётся в тредах, где состоял.\n\nСотрудника, которого держит в чате привязанный тег, этим методом убрать нельзя: ответ придёт успешный, а сотрудник останется в чате. Снимите с него тег методом [Редактирование сотрудника](PUT /users/{id}) или отцепите тег от чата методом [Исключение тега](DELETE /chats/{id}/group_tags/{tag_id}).\n\nЕсли пользователь является владельцем чата, то исключить его нельзя. Он может только самостоятельно выйти из чата, воспользовавшись методом [Выход из чата](DELETE /chats/{id}/leave).\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор чата\n- `user_id: integer, int32` (required) — Идентификатор пользователя\n\n\n## Пример запроса\n\n```bash\ncurl -X DELETE \"https://api.pachca.com/api/shared/v1/chats/334/members/186\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"PUT","path":"/chats/{id}/members/{user_id}","summary":"Редактирование роли","scope":"chat_members:write","plan":null,"auth":true,"paginated":false,"command":"pachca members update","docLink":"https://dev.pachca.com/api/members/update","describe":"# PUT /chats/{id}/members/{user_id} — Редактирование роли\n\n> **Скоуп:** `chat_members:write`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор чата\n- `user_id` — путь (обязательный): Идентификатор пользователя\n\n## Тело запроса\n\n- `role: string` (required) — Роль\n Значения: `admin` — Админ, `editor` — Редактор (доступно только для каналов), `member` — Участник или подписчик\n\n## Эквивалентная команда\n\n```bash\npachca members update 334 186 \\\n --role=admin \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/members/update\nПолная справка: `pachca api PUT /chats/{id}/members/{user_id} --docs` · схема: `--spec`\n","spec":{"method":"PUT","path":"/chats/{id}/members/{user_id}","description":"Редактирование роли\n\nМеняет роль участника беседы или канала. Роль в чате с ролью в пространстве не связана: рядовой сотрудник может быть администратором чата, а повышение в пространстве роли в чатах не меняет.\n\nРоль `editor` существует только в каналах. Себе роль сменить нельзя, как и тому, кто в чате не состоит: метод ответит ошибкой. Повторная установка той же роли считается ошибкой, а не повтором.\n\nВладельцу чата роль изменить нельзя. Он всегда имеет права администратора чата.","parameters":[{"name":"id","in":"path","description":"Идентификатор чата","required":true,"schema":{"type":"integer","format":"int32","example":334},"example":334},{"name":"user_id","in":"path","description":"Идентификатор пользователя","required":true,"schema":{"type":"integer","format":"int32","example":186},"example":186}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на изменение роли участника","required":["role"],"properties":{"role":{"description":"Роль","example":"admin","allOf":[{"type":"string","description":"Роль участника чата","enum":["admin","editor","member"],"x-enum-descriptions":{"admin":"Админ","editor":"Редактор (доступно только для каналов)","member":"Участник или подписчик"},"$ref":"#/components/schemas/ChatMemberRole"}]}},"$ref":"#/components/schemas/UpdateMemberRoleRequest"}}}},"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"chat_members:write","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":false},"docs":"# Редактирование роли\n\n**Метод**: `PUT`\n\n**Путь**: `/chats/{id}/members/{user_id}`\n\n> **Скоуп:** `chat_members:write`\n\nМеняет роль участника беседы или канала. Роль в чате с ролью в пространстве не связана: рядовой сотрудник может быть администратором чата, а повышение в пространстве роли в чатах не меняет.\n\nРоль `editor` существует только в каналах. Себе роль сменить нельзя, как и тому, кто в чате не состоит: метод ответит ошибкой. Повторная установка той же роли считается ошибкой, а не повтором.\n\nВладельцу чата роль изменить нельзя. Он всегда имеет права администратора чата.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор чата\n- `user_id: integer, int32` (required) — Идентификатор пользователя\n\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `role: string` (required) — Роль\n Значения: `admin` — Админ, `editor` — Редактор (доступно только для каналов), `member` — Участник или подписчик\n\n### Пример\n\n```json\n{\n \"role\": \"admin\"\n}\n```\n\n## Пример запроса\n\n```bash\ncurl -X PUT \"https://api.pachca.com/api/shared/v1/chats/334/members/186\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"role\": \"admin\"\n}'\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"PUT","path":"/chats/{id}/unarchive","summary":"Разархивация чата","scope":"chats:archive","plan":null,"auth":true,"paginated":false,"command":"pachca chats unarchive","docLink":"https://dev.pachca.com/api/chats/unarchive","describe":"# PUT /chats/{id}/unarchive — Разархивация чата\n\n> **Скоуп:** `chats:archive`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор чата\n\n## Эквивалентная команда\n\n```bash\npachca chats unarchive 334 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/chats/unarchive\nПолная справка: `pachca api PUT /chats/{id}/unarchive --docs` · схема: `--spec`\n","spec":{"method":"PUT","path":"/chats/{id}/unarchive","description":"Разархивация чата\n\nВозвращает беседу или канал из архива: чат снова появляется в списках, и в него снова можно писать.\n\nЕсли чат и так не в архиве, метод всё равно отвечает успехом.","parameters":[{"name":"id","in":"path","description":"Идентификатор чата","required":true,"schema":{"type":"integer","format":"int32","example":334},"example":334}],"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"chats:archive","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":false},"docs":"# Разархивация чата\n\n**Метод**: `PUT`\n\n**Путь**: `/chats/{id}/unarchive`\n\n> **Скоуп:** `chats:archive`\n\nВозвращает беседу или канал из архива: чат снова появляется в списках, и в него снова можно писать.\n\nЕсли чат и так не в архиве, метод всё равно отвечает успехом.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор чата\n\n\n## Пример запроса\n\n```bash\ncurl -X PUT \"https://api.pachca.com/api/shared/v1/chats/334/unarchive\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"PUT","path":"/chats/{id}/unread","summary":"Отметка чата непрочитанным","scope":"chats:mark_unread","plan":null,"auth":true,"paginated":false,"command":"pachca chats mark-unread","docLink":"https://dev.pachca.com/api/chats/mark-unread","describe":"# PUT /chats/{id}/unread — Отметка чата непрочитанным\n\n> **Скоуп:** `chats:mark_unread`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор чата или треда\n\n## Тело запроса\n\n- `message_id: integer, int32` (min: 1) — Идентификатор сообщения, с которого чат становится непрочитанным: оно и все сообщения после него. Если не передать, непрочитанным становится последнее сообщение.\n\n## Эквивалентная команда\n\n```bash\npachca chats mark-unread 334 \\\n --message-id=1194275 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/chats/mark-unread\nПолная справка: `pachca api PUT /chats/{id}/unread --docs` · схема: `--spec`\n","spec":{"method":"PUT","path":"/chats/{id}/unread","description":"Отметка чата непрочитанным\n\nПомечает чат непрочитанным для владельца токена, как «Отметить непрочитанным» в интерфейсе. Меняется только его собственный счётчик, остальные участники ничего не замечают.\n\nБез `message_id` непрочитанным становится последнее сообщение чата, с `message_id` — это сообщение и все после него. Повторный запрос с тем же сообщением ничего не меняет, а в чате без сообщений метод отвечает успехом и ничего не делает.\n\nРаботает в беседах, каналах, личных чатах и тредах, где владелец токена состоит. Скрытый личный чат снова появляется в списке. На чат, где владельца токена нет, и на сообщение из другого чата метод отвечает `404`.","parameters":[{"name":"id","in":"path","description":"Идентификатор чата или треда","required":true,"schema":{"type":"integer","format":"int32","example":334},"example":334}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на отметку чата непрочитанным","properties":{"message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, с которого чат становится непрочитанным: оно и все сообщения после него. Если не передать, непрочитанным становится последнее сообщение.","example":1194275,"minimum":1}},"$ref":"#/components/schemas/MarkChatUnreadRequest"},"example":{"message_id":1194275}}}},"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"},{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}]}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"chats:mark_unread","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":false},"docs":"# Отметка чата непрочитанным\n\n**Метод**: `PUT`\n\n**Путь**: `/chats/{id}/unread`\n\n> **Скоуп:** `chats:mark_unread`\n\nПомечает чат непрочитанным для владельца токена, как «Отметить непрочитанным» в интерфейсе. Меняется только его собственный счётчик, остальные участники ничего не замечают.\n\nБез `message_id` непрочитанным становится последнее сообщение чата, с `message_id` — это сообщение и все после него. Повторный запрос с тем же сообщением ничего не меняет, а в чате без сообщений метод отвечает успехом и ничего не делает.\n\nРаботает в беседах, каналах, личных чатах и тредах, где владелец токена состоит. Скрытый личный чат снова появляется в списке. На чат, где владельца токена нет, и на сообщение из другого чата метод отвечает `404`.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор чата или треда\n\n\n## Тело запроса\n\n**Опционально**\n\nФормат: `application/json`\n\n### Схема\n\n- `message_id: integer, int32` (min: 1) — Идентификатор сообщения, с которого чат становится непрочитанным: оно и все сообщения после него. Если не передать, непрочитанным становится последнее сообщение. Пример: `1194275`\n\n### Пример\n\n```json\n{\n \"message_id\": 1194275\n}\n```\n\n## Пример запроса\n\n```bash\ncurl -X PUT \"https://api.pachca.com/api/shared/v1/chats/334/unread\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"message_id\": 1194275\n}'\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n**anyOf** - один из вариантов:\n\n- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)\n - `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403)\n - `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n - `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/company/bots","summary":"Список ботов пространства","scope":"company_bots:read","plan":"corporation","auth":true,"paginated":true,"command":"pachca bots list-company","docLink":"https://dev.pachca.com/api/bots/list-company","describe":"# GET /company/bots — Список ботов пространства\n\n> **Скоуп:** `company_bots:read`\n\n> **Тариф:** Корпорация\n\n> Пагинация: добавьте `--all` для автоматического обхода страниц\n\n## Параметры\n\n- `query` — query: Поисковая фраза для фильтрации ботов по имени\n- `limit` — query: Количество возвращаемых сущностей за один запрос\n- `cursor` — query: Курсор для пагинации (из `meta.paginate.next_page`)\n\n## Эквивалентная команда\n\n```bash\n# Добавьте --all для автоматической пагинации\npachca bots list-company \\\n --query=задач \\\n --limit=1 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/bots/list-company\nПолная справка: `pachca api GET /company/bots --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/company/bots","description":"Список ботов пространства\n\nВсе боты пространства, включая тех, кто недоступен вам для редактирования. У таких ботов приходят только имя и ник, остальные настройки — `null`.\n\nМетод доступен владельцу пространства. Каждый запрос записывается в [журнал аудита событий](/guides/audit-events) с типом `company_bots_accessed`.","parameters":[{"name":"query","in":"query","description":"Поисковая фраза для фильтрации ботов по имени","required":false,"schema":{"type":"string","example":"задач"},"example":"задач","explode":false},{"name":"limit","in":"query","description":"Количество возвращаемых сущностей за один запрос","required":false,"schema":{"type":"integer","format":"int32","default":50,"example":1,"minimum":1,"maximum":50},"example":1,"explode":false},{"name":"cursor","in":"query","description":"Курсор для пагинации (из `meta.paginate.next_page`)","required":false,"schema":{"type":"string","example":"eyJpZCI6MTczODgxNn0"},"example":"eyJpZCI6MTczODgxNn0","explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными и пагинацией","required":["data","meta"],"properties":{"data":{"type":"array","items":{"type":"object","description":"Параметры бота пространства","required":["id","oauth_client","webhook"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор бота (совпадает с `user_id` бота)","example":1738816},"oauth_client":{"type":"object","description":"Параметры авторизации от имени сотрудника. `null` у бота, недоступного вам для редактирования. Может прийти и у бота с выключенной авторизацией, а у бота без токенов может прийти `null`.","nullable":true,"allOf":[{"type":"object","description":"Авторизация от имени сотрудника","required":["client_id","client_secret_preview","confidential","redirect_uris","scopes"],"properties":{"client_id":{"type":"string","description":"Идентификатор клиента для ссылки авторизации","example":"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY"},"client_secret_preview":{"type":"string","description":"Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета.","example":"cH5kR9mN...x7Qp"},"confidential":{"type":"boolean","description":"Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE","example":true},"redirect_uris":{"type":"array","description":"Адреса возврата после согласия","example":["https://example.com/oauth/callback"],"items":{"type":"string"}},"scopes":{"type":"array","description":"Права, которые бот запрашивает у сотрудника на экране согласия","example":["messages:read","messages:create"],"items":{"type":"string"}}},"$ref":"#/components/schemas/BotOAuthClient"}]},"webhook":{"description":"Объект параметров вебхука","allOf":[{"type":"object","description":"Параметры вебхука бота пространства. Настройки бота, недоступного вам для редактирования, приходят как `null` — остаются только имя и никнейм.","required":["name","nickname","outgoing_url","events","trigger_on","commands","scopes","template","template_engine","challenge_key","link_preview_enabled","ignore_self_messages","events_history_enabled","single_chat","can_edit","who_can_add"],"properties":{"name":{"type":"string","description":"Имя бота","example":"Бот задач","maxLength":255},"nickname":{"type":"string","description":"Никнейм бота","example":"tasks_bot","maxLength":255},"outgoing_url":{"type":"string","description":"URL исходящего вебхука. `null`, если исходящий вебхук у бота не настроен.","example":"https://www.website.com/tasks/new","nullable":true},"events":{"type":"array","description":"События, на которые подписан бот","example":["message_new"],"nullable":true,"items":{"type":"string","description":"Событие исходящего вебхука бота","enum":["message_new","message_update","message_delete","reaction_new","reaction_delete","button_click","message_link_shared","chat_member_add","chat_member_remove","company_member_invite","company_member_confirm","company_member_suspend","company_member_activate","company_member_delete","company_member_update","video_call_started","video_call_finished","video_call_recording_ready"],"x-enum-descriptions":{"message_new":"Новое сообщение","message_update":"Сообщение отредактировано","message_delete":"Сообщение удалено","reaction_new":"Добавлена реакция","reaction_delete":"Реакция удалена","button_click":"Нажата кнопка","message_link_shared":"В сообщении отправлена ссылка (для unfurl)","chat_member_add":"Участник добавлен в чат","chat_member_remove":"Участник удалён из чата","company_member_invite":"Сотрудник приглашён в компанию","company_member_confirm":"Сотрудник подтвердил приглашение","company_member_suspend":"Сотрудник деактивирован","company_member_activate":"Сотрудник активирован","company_member_delete":"Сотрудник удалён из компании","company_member_update":"Данные сотрудника изменены","video_call_started":"Видеозвонок начался","video_call_finished":"Видеозвонок завершился","video_call_recording_ready":"Запись видеозвонка готова"},"$ref":"#/components/schemas/BotEventName"}},"trigger_on":{"description":"Условие срабатывания исходящего вебхука","example":"commands","nullable":true,"allOf":[{"type":"string","description":"Условие срабатывания исходящего вебхука бота","enum":["commands","all_messages","unfurl"],"x-enum-descriptions":{"commands":"Только на команды (триггер-слова) из commands","all_messages":"На все сообщения в чатах, где есть бот","unfurl":"На развёртывание ссылок (link previews)"},"$ref":"#/components/schemas/BotTriggerOn"}]},"commands":{"type":"array","description":"Команды бота (триггер-слова)","example":["/task"],"nullable":true,"items":{"type":"string"}},"scopes":{"type":"array","description":"Скоупы (права доступа) токена бота","example":["messages:create"],"nullable":true,"items":{"type":"string"}},"template":{"type":"string","description":"Шаблон форматирования входящего вебхука. `null`, если не задан.","example":"Заказ от {{ client }} на сумму {{ amount }} ₽","nullable":true},"template_engine":{"description":"Шаблонизатор для обработки шаблона входящего вебхука","example":"liquid","nullable":true,"allOf":[{"type":"string","description":"Шаблонизатор для форматирования входящих вебхуков","enum":["liquid","mustache"],"x-enum-descriptions":{"liquid":"Liquid — условия, циклы и фильтры","mustache":"Mustache — простая подстановка без логики"},"$ref":"#/components/schemas/BotTemplateEngine"}]},"challenge_key":{"type":"string","description":"Название поля проверки для верификации входящего вебхука. `null`, если не задано.","example":"challenge","nullable":true},"link_preview_enabled":{"type":"boolean","description":"Показывать превью ссылок в сообщениях входящего вебхука","example":true,"nullable":true},"ignore_self_messages":{"type":"boolean","description":"Игнорировать входящие сообщения, отправленные самим ботом","example":false,"nullable":true},"events_history_enabled":{"type":"boolean","description":"Сохранять историю событий бота для последующего получения через метод истории событий","example":false,"nullable":true},"single_chat":{"type":"boolean","description":"Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят.","example":false,"nullable":true},"can_edit":{"type":"array","description":"Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель.","example":["admin"],"nullable":true,"items":{"type":"string","description":"Роль, которой разрешено редактировать настройки бота","enum":["admin","chat_owners"],"x-enum-descriptions":{"admin":"Администраторы компании","chat_owners":"Владельцы чатов, в которые добавлен бот"},"$ref":"#/components/schemas/BotCanEdit"}},"who_can_add":{"description":"Кто может добавлять бота в чаты","example":"creator","nullable":true,"allOf":[{"type":"string","description":"Кто может добавлять бота в чаты","enum":["creator","creator_admin","creator_admin_user","anyone"],"x-enum-descriptions":{"creator":"Только создатель бота","creator_admin":"Создатель и администраторы компании","creator_admin_user":"Создатель, администраторы и участники компании","anyone":"Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей"},"$ref":"#/components/schemas/BotWhoCanAdd"}]}},"$ref":"#/components/schemas/CompanyBotWebhook"}]}},"$ref":"#/components/schemas/CompanyBotResponse"}},"meta":{"type":"object","description":"Метаданные пагинации","required":["paginate"],"properties":{"paginate":{"type":"object","description":"Вспомогательная информация","required":["next_page"],"properties":{"next_page":{"type":"string","description":"Курсор пагинации следующей страницы","example":"eyJxZCO2MiwiZGlyIjomSNYjIn3"},"prev_page":{"type":"string","description":"Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка.","example":"eyJxZCO2MiwiZGlyIjoiYXNjIn0"},"has_next":{"type":"boolean","description":"Есть ли ещё данные на следующей странице. На последней странице — `false`.","example":true},"has_prev":{"type":"boolean","description":"Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`.","example":false}}}},"$ref":"#/components/schemas/PaginationMeta"}}},"example":{"data":[{"id":1738816,"oauth_client":{"client_id":"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY","client_secret_preview":"dGhpc19p...ZWNy","confidential":true,"redirect_uris":["https://example.com/oauth/callback"],"scopes":["messages:read","messages:create"]},"webhook":{"name":"Бот задач","nickname":"tasks_bot","outgoing_url":"https://www.website.com/tasks/new","events":["message_new"],"trigger_on":"commands","commands":["/task"],"scopes":["messages:create"],"template":"Заказ от {{ client }} на сумму {{ amount }} ₽","template_engine":"liquid","challenge_key":"challenge","link_preview_enabled":true,"ignore_self_messages":false,"events_history_enabled":false,"single_chat":false,"can_edit":["admin"],"who_can_add":"creator"}},{"id":1738817,"oauth_client":null,"webhook":{"name":"Бот релизов","nickname":"release_bot","outgoing_url":null,"events":null,"trigger_on":null,"commands":null,"scopes":null,"template":null,"template_engine":null,"challenge_key":null,"link_preview_enabled":null,"ignore_self_messages":null,"events_history_enabled":null,"single_chat":null,"can_edit":null,"who_can_add":null}}],"meta":{"paginate":{"next_page":"eyJpZCI6MTczODgxN30"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"},{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}]}}}}},"requirements":{"scope":"company_bots:read","plan":"corporation","scopeRoles":["owner"]},"paginated":true},"docs":"# Список ботов пространства\n\n**Метод**: `GET`\n\n**Путь**: `/company/bots`\n\n> **Скоуп:** `company_bots:read`\n\n> **Внимание:** Доступно только на тарифе **Корпорация**\n\nВсе боты пространства, включая тех, кто недоступен вам для редактирования. У таких ботов приходят только имя и ник, остальные настройки — `null`.\n\nМетод доступен владельцу пространства. Каждый запрос записывается в [журнал аудита событий](/guides/audit-events) с типом `company_bots_accessed`.\n\n## Параметры\n\n### Query параметры\n\n- `query: string` — Поисковая фраза для фильтрации ботов по имени\n- `limit: integer, int32` (default: 50) — Количество возвращаемых сущностей за один запрос\n- `cursor: string` — Курсор для пагинации (из `meta.paginate.next_page`)\n\n\n## Пример запроса\n\n```bash\n# Для получения следующей страницы используйте cursor из meta.paginate.next_page\ncurl \"https://api.pachca.com/api/shared/v1/company/bots?query=задач&limit=1\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: array of object` (required)\n - `id: integer, int32` (required) — Идентификатор бота (совпадает с `user_id` бота). Пример: `1738816`\n - `oauth_client: object` (required) — Параметры авторизации от имени сотрудника. `null` у бота, недоступного вам для редактирования. Может прийти и у бота с выключенной авторизацией, а у бота без токенов может прийти `null`.\n - `client_id: string` (required) — Идентификатор клиента для ссылки авторизации. Пример: `\"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY\"`\n - `client_secret_preview: string` (required) — Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета. Пример: `\"cH5kR9mN...x7Qp\"`\n - `confidential: boolean` (required) — Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE. Пример: `true`\n - `redirect_uris: array of string` (required) — Адреса возврата после согласия. Пример: `[\"https://example.com/oauth/callback\"]`\n - `scopes: array of string` (required) — Права, которые бот запрашивает у сотрудника на экране согласия. Пример: `[\"messages:read\",\"messages:create\"]`\n - `webhook: object` (required) — Объект параметров вебхука\n - `name: string` (required, max length: 255) — Имя бота. Пример: `\"Бот задач\"`\n - `nickname: string` (required, max length: 255) — Никнейм бота. Пример: `\"tasks_bot\"`\n - `outgoing_url: string` (required, nullable) — URL исходящего вебхука. `null`, если исходящий вебхук у бота не настроен. Пример: `\"https://www.website.com/tasks/new\"`\n - `events: array of string` (required, nullable) — События, на которые подписан бот. Пример: `[\"message_new\"]`\n - `trigger_on: string` (required) — Условие срабатывания исходящего вебхука\n Значения: `commands` — Только на команды (триггер-слова) из commands, `all_messages` — На все сообщения в чатах, где есть бот, `unfurl` — На развёртывание ссылок (link previews)\n - `commands: array of string` (required, nullable) — Команды бота (триггер-слова). Пример: `[\"/task\"]`\n - `scopes: array of string` (required, nullable) — Скоупы (права доступа) токена бота. Пример: `[\"messages:create\"]`\n - `template: string` (required, nullable) — Шаблон форматирования входящего вебхука. `null`, если не задан. Пример: `\"Заказ от {{ client }} на сумму {{ amount }} ₽\"`\n - `template_engine: string` (required) — Шаблонизатор для обработки шаблона входящего вебхука\n Значения: `liquid` — Liquid — условия, циклы и фильтры, `mustache` — Mustache — простая подстановка без логики\n - `challenge_key: string` (required, nullable) — Название поля проверки для верификации входящего вебхука. `null`, если не задано. Пример: `\"challenge\"`\n - `link_preview_enabled: boolean` (required, nullable) — Показывать превью ссылок в сообщениях входящего вебхука. Пример: `true`\n - `ignore_self_messages: boolean` (required, nullable) — Игнорировать входящие сообщения, отправленные самим ботом. Пример: `false`\n - `events_history_enabled: boolean` (required, nullable) — Сохранять историю событий бота для последующего получения через метод истории событий. Пример: `false`\n - `single_chat: boolean` (required, nullable) — Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Пример: `false`\n - `can_edit: array of string` (required, nullable) — Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. Пример: `[\"admin\"]`\n - `who_can_add: string` (required) — Кто может добавлять бота в чаты\n Значения: `creator` — Только создатель бота, `creator_admin` — Создатель и администраторы компании, `creator_admin_user` — Создатель, администраторы и участники компании, `anyone` — Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей\n- `meta: object` (required) — Метаданные пагинации\n - `paginate: object` (required) — Вспомогательная информация\n - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `\"eyJxZCO2MiwiZGlyIjomSNYjIn3\"`\n - `prev_page: string` — Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка. Пример: `\"eyJxZCO2MiwiZGlyIjoiYXNjIn0\"`\n - `has_next: boolean` — Есть ли ещё данные на следующей странице. На последней странице — `false`. Пример: `true`\n - `has_prev: boolean` — Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`. Пример: `false`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": [\n {\n \"id\": 1738816,\n \"oauth_client\": {\n \"client_id\": \"aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY\",\n \"client_secret_preview\": \"dGhpc19p...ZWNy\",\n \"confidential\": true,\n \"redirect_uris\": [\n \"https://example.com/oauth/callback\"\n ],\n \"scopes\": [\n \"messages:read\",\n \"messages:create\"\n ]\n },\n \"webhook\": {\n \"name\": \"Бот задач\",\n \"nickname\": \"tasks_bot\",\n \"outgoing_url\": \"https://www.website.com/tasks/new\",\n \"events\": [\n \"message_new\"\n ],\n \"trigger_on\": \"commands\",\n \"commands\": [\n \"/task\"\n ],\n \"scopes\": [\n \"messages:create\"\n ],\n \"template\": \"Заказ от {{ client }} на сумму {{ amount }} ₽\",\n \"template_engine\": \"liquid\",\n \"challenge_key\": \"challenge\",\n \"link_preview_enabled\": true,\n \"ignore_self_messages\": false,\n \"events_history_enabled\": false,\n \"single_chat\": false,\n \"can_edit\": [\n \"admin\"\n ],\n \"who_can_add\": \"creator\"\n }\n },\n {\n \"id\": 1738817,\n \"oauth_client\": null,\n \"webhook\": {\n \"name\": \"Бот релизов\",\n \"nickname\": \"release_bot\",\n \"outgoing_url\": null,\n \"events\": null,\n \"trigger_on\": null,\n \"commands\": null,\n \"scopes\": null,\n \"template\": null,\n \"template_engine\": null,\n \"challenge_key\": null,\n \"link_preview_enabled\": null,\n \"ignore_self_messages\": null,\n \"events_history_enabled\": null,\n \"single_chat\": null,\n \"can_edit\": null,\n \"who_can_add\": null\n }\n }\n ],\n \"meta\": {\n \"paginate\": {\n \"next_page\": \"eyJpZCI6MTczODgxN30\"\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n**anyOf** - один из вариантов:\n\n- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)\n - `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403)\n - `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n - `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/company/chats","summary":"Список чатов пространства","scope":"company_chats:read","plan":"corporation","auth":true,"paginated":true,"command":"pachca chats list-company","docLink":"https://dev.pachca.com/api/chats/list-company","describe":"# GET /company/chats — Список чатов пространства\n\n> **Скоуп:** `company_chats:read`\n\n> **Тариф:** Корпорация\n\n> Пагинация: добавьте `--all` для автоматического обхода страниц\n\n## Параметры\n\n- `activity` — query: Состояние чатов. Если параметр не указан, возвращаются и активные, и архивные чаты.\n- `limit` — query: Количество возвращаемых сущностей за один запрос\n- `cursor` — query: Курсор для пагинации (из `meta.paginate.next_page`)\n\n## Эквивалентная команда\n\n```bash\n# Добавьте --all для автоматической пагинации\npachca chats list-company \\\n --activity=active \\\n --limit=1 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/chats/list-company\nПолная справка: `pachca api GET /company/chats --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/company/chats","description":"Список чатов пространства\n\nБеседы и каналы всего пространства, включая закрытые, где вы не состоите участником. Личные переписки и треды не возвращаются.\n\nПо умолчанию отдаются и активные, и архивные чаты. Параметр `activity` оставляет в выдаче только одно из состояний.\n\nМетод доступен владельцу пространства. Каждый запрос записывается в [журнал аудита событий](/guides/audit-events) с типом `company_chats_accessed`.","parameters":[{"name":"activity","in":"query","description":"Состояние чатов. Если параметр не указан, возвращаются и активные, и архивные чаты.","required":false,"schema":{"type":"string","description":"Состояние чатов в выборке","enum":["active","archived"],"x-enum-descriptions":{"active":"Только активные чаты","archived":"Только архивные чаты"},"example":"active","$ref":"#/components/schemas/ChatActivity"},"example":"active","explode":false},{"name":"limit","in":"query","description":"Количество возвращаемых сущностей за один запрос","required":false,"schema":{"type":"integer","format":"int32","default":50,"example":1,"minimum":1,"maximum":50},"example":1,"explode":false},{"name":"cursor","in":"query","description":"Курсор для пагинации (из `meta.paginate.next_page`)","required":false,"schema":{"type":"string","example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9"},"example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9","explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными и пагинацией","required":["data","meta"],"properties":{"data":{"type":"array","items":{"type":"object","description":"Чат","required":["id","name","created_at","owner_id","member_ids","group_tag_ids","channel","archived","personal","public","last_message_at","meet_room_url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор созданного чата","example":334},"name":{"type":"string","description":"Название","example":"🤿 aqua","maxLength":255},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания чата (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2021-08-28T15:56:53.000Z"},"owner_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, создавшего чат","example":185},"member_ids":{"type":"array","description":"Массив идентификаторов пользователей, участников","example":[185,186,187],"items":{"type":"integer","format":"int32"}},"group_tag_ids":{"type":"array","description":"Массив идентификаторов тегов, участников","example":[9111],"items":{"type":"integer","format":"int32"}},"channel":{"type":"boolean","description":"Является каналом","example":true},"archived":{"type":"boolean","description":"Находится в архиве","example":false},"personal":{"type":"boolean","description":"Является личным чатом","example":false},"public":{"type":"boolean","description":"Открытый доступ","example":false},"last_message_at":{"type":"string","format":"date-time","description":"Дата и время создания последнего сообщения в чате (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2021-08-28T15:56:53.000Z"},"meet_room_url":{"type":"string","description":"Ссылка на Видеочат","example":"https://meet.pachca.com/aqua-94bb21b5"}},"$ref":"#/components/schemas/Chat"}},"meta":{"type":"object","description":"Метаданные пагинации","required":["paginate"],"properties":{"paginate":{"type":"object","description":"Вспомогательная информация","required":["next_page"],"properties":{"next_page":{"type":"string","description":"Курсор пагинации следующей страницы","example":"eyJxZCO2MiwiZGlyIjomSNYjIn3"},"prev_page":{"type":"string","description":"Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка.","example":"eyJxZCO2MiwiZGlyIjoiYXNjIn0"},"has_next":{"type":"boolean","description":"Есть ли ещё данные на следующей странице. На последней странице — `false`.","example":true},"has_prev":{"type":"boolean","description":"Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`.","example":false}}}},"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"},{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}]}}}}},"requirements":{"scope":"company_chats:read","plan":"corporation","scopeRoles":["owner"]},"paginated":true},"docs":"# Список чатов пространства\n\n**Метод**: `GET`\n\n**Путь**: `/company/chats`\n\n> **Скоуп:** `company_chats:read`\n\n> **Внимание:** Доступно только на тарифе **Корпорация**\n\nБеседы и каналы всего пространства, включая закрытые, где вы не состоите участником. Личные переписки и треды не возвращаются.\n\nПо умолчанию отдаются и активные, и архивные чаты. Параметр `activity` оставляет в выдаче только одно из состояний.\n\nМетод доступен владельцу пространства. Каждый запрос записывается в [журнал аудита событий](/guides/audit-events) с типом `company_chats_accessed`.\n\n## Параметры\n\n### Query параметры\n\n- `activity: string` — Состояние чатов. Если параметр не указан, возвращаются и активные, и архивные чаты.\n Значения: `active`, `archived`\n- `limit: integer, int32` (default: 50) — Количество возвращаемых сущностей за один запрос\n- `cursor: string` — Курсор для пагинации (из `meta.paginate.next_page`)\n\n\n## Пример запроса\n\n```bash\n# Для получения следующей страницы используйте cursor из meta.paginate.next_page\ncurl \"https://api.pachca.com/api/shared/v1/company/chats?activity=active&limit=1\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: array of object` (required)\n - `id: integer, int32` (required) — Идентификатор созданного чата. Пример: `334`\n - `name: string` (required, max length: 255) — Название. Пример: `\"🤿 aqua\"`\n - `created_at: date-time` (required) — Дата и время создания чата (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2021-08-28T15:56:53.000Z\"`\n - `owner_id: integer, int32` (required) — Идентификатор пользователя, создавшего чат. Пример: `185`\n - `member_ids: array of integer` (required) — Массив идентификаторов пользователей, участников. Пример: `[185,186,187]`\n - `group_tag_ids: array of integer` (required) — Массив идентификаторов тегов, участников. Пример: `[9111]`\n - `channel: boolean` (required) — Является каналом. Пример: `true`\n - `archived: boolean` (required) — Находится в архиве. Пример: `false`\n - `personal: boolean` (required) — Является личным чатом. Пример: `false`\n - `public: boolean` (required) — Открытый доступ. Пример: `false`\n - `last_message_at: date-time` (required) — Дата и время создания последнего сообщения в чате (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2021-08-28T15:56:53.000Z\"`\n - `meet_room_url: string` (required) — Ссылка на Видеочат. Пример: `\"https://meet.pachca.com/aqua-94bb21b5\"`\n- `meta: object` (required) — Метаданные пагинации\n - `paginate: object` (required) — Вспомогательная информация\n - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `\"eyJxZCO2MiwiZGlyIjomSNYjIn3\"`\n - `prev_page: string` — Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка. Пример: `\"eyJxZCO2MiwiZGlyIjoiYXNjIn0\"`\n - `has_next: boolean` — Есть ли ещё данные на следующей странице. На последней странице — `false`. Пример: `true`\n - `has_prev: boolean` — Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`. Пример: `false`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": [\n {\n \"id\": 334,\n \"name\": \"🤿 aqua\",\n \"created_at\": \"2021-08-28T15:56:53.000Z\",\n \"owner_id\": 185,\n \"member_ids\": [\n 185,\n 186,\n 187\n ],\n \"group_tag_ids\": [\n 9111\n ],\n \"channel\": true,\n \"archived\": false,\n \"personal\": false,\n \"public\": false,\n \"last_message_at\": \"2021-08-28T15:56:53.000Z\",\n \"meet_room_url\": \"https://meet.pachca.com/aqua-94bb21b5\"\n }\n ],\n \"meta\": {\n \"paginate\": {\n \"next_page\": \"eyJxZCO2MiwiZGlyIjomSNYjIn3\",\n \"prev_page\": \"eyJxZCO2MiwiZGlyIjoiYXNjIn0\",\n \"has_next\": true,\n \"has_prev\": false\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n**anyOf** - один из вариантов:\n\n- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)\n - `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403)\n - `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n - `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/custom_properties","summary":"Список дополнительных полей","scope":"custom_properties:read","plan":null,"auth":true,"paginated":false,"command":"pachca custom-properties list","docLink":"https://dev.pachca.com/api/custom-properties/list","describe":"# GET /custom_properties — Список дополнительных полей\n\n> **Скоуп:** `custom_properties:read`\n\n## Параметры\n\n- `entity_type` — query (обязательный): Тип сущности\n\n## Эквивалентная команда\n\n```bash\npachca custom-properties list \\\n --entity-type=User \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/custom-properties/list\nПолная справка: `pachca api GET /custom_properties --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/custom_properties","description":"Список дополнительных полей\n\nСхема дополнительных полей пространства: идентификатор, название и тип каждого. Такие поля доступны только для сотрудников и напоминаний, наборы у них независимые, а нужный выбирает параметр `entity_type`. Значения приходят в самой сущности — в карточке сотрудника или в напоминании. Идентификаторы отсюда нужны, чтобы эти значения задавать.\n\nПоля типов «Файл» и «Множественный выбор» через API недоступны и в выдачу не попадают. Базовые поля карточки — имя, телефон, почта, отдел, теги — тоже: это не дополнительные поля.\n\nНабор полей задаёт администратор пространства, он же их переименовывает и удаляет. Поэтому список стоит перечитывать перед работой: обращение к полю, которого уже нет, возвращает ошибку.","parameters":[{"name":"entity_type","in":"query","description":"Тип сущности","required":true,"schema":{"type":"string","description":"Тип сущности для поиска","enum":["User","Task"],"x-enum-descriptions":{"User":"Пользователь","Task":"Задача"},"example":"User","$ref":"#/components/schemas/SearchEntityType"},"example":"User","explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"array","items":{"type":"object","description":"Дополнительное поле","required":["id","name","data_type"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор поля","example":1678},"name":{"type":"string","description":"Название поля","example":"Город","maxLength":32},"data_type":{"description":"Тип поля","example":"string","allOf":[{"type":"string","description":"Тип данных дополнительного поля","enum":["string","number","date","link"],"x-enum-descriptions":{"string":"Строковое значение","number":"Числовое значение","date":"Дата","link":"Ссылка"},"$ref":"#/components/schemas/CustomPropertyDataType"}]}},"$ref":"#/components/schemas/CustomPropertyDefinition"}}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"custom_properties:read","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":false},"docs":"# Список дополнительных полей\n\n**Метод**: `GET`\n\n**Путь**: `/custom_properties`\n\n> **Скоуп:** `custom_properties:read`\n\nСхема дополнительных полей пространства: идентификатор, название и тип каждого. Такие поля доступны только для сотрудников и напоминаний, наборы у них независимые, а нужный выбирает параметр `entity_type`. Значения приходят в самой сущности — в карточке сотрудника или в напоминании. Идентификаторы отсюда нужны, чтобы эти значения задавать.\n\nПоля типов «Файл» и «Множественный выбор» через API недоступны и в выдачу не попадают. Базовые поля карточки — имя, телефон, почта, отдел, теги — тоже: это не дополнительные поля.\n\nНабор полей задаёт администратор пространства, он же их переименовывает и удаляет. Поэтому список стоит перечитывать перед работой: обращение к полю, которого уже нет, возвращает ошибку.\n\n## Параметры\n\n### Query параметры\n\n- `entity_type: string` (required) — Тип сущности\n Значения: `User`, `Task`\n\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/custom_properties?entity_type=User\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: array of object` (required)\n - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678`\n - `name: string` (required, max length: 32) — Название поля. Пример: `\"Город\"`\n - `data_type: string` (required) — Тип поля\n Значения: `string` — Строковое значение, `number` — Числовое значение, `date` — Дата, `link` — Ссылка\n\n**Пример ответа:**\n\n```json\n{\n \"data\": [\n {\n \"id\": 1678,\n \"name\": \"Город\",\n \"data_type\": \"string\"\n }\n ]\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"POST","path":"/direct_url","summary":"Загрузка файла","scope":null,"plan":null,"auth":false,"paginated":false,"command":"pachca files direct-url","docLink":"https://dev.pachca.com/api/files/direct-url","describe":"# POST /direct_url — Загрузка файла\n\n> Авторизация не требуется\n\n## Тело запроса\n\n- `Content-Disposition: string` (required) — Параметр Content-Disposition, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)\n- `acl: string` (required) — Параметр acl, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)\n- `policy: string` (required) — Параметр policy, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)\n- `x-amz-credential: string` (required) — Параметр x-amz-credential, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)\n- `x-amz-algorithm: string` (required) — Параметр x-amz-algorithm, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)\n- `x-amz-date: string` (required) — Параметр x-amz-date, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)\n- `x-amz-signature: string` (required) — Параметр x-amz-signature, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)\n- `key: string` (required) — Параметр key, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)\n- `file: binary` (required) — Файл для загрузки\n\n## Эквивалентная команда\n\n```bash\n# URL получается из ответа POST /uploads (поле direct_url)\npachca files direct-url \\\n --direct-url=$DIRECT_URL \\\n --content-disposition=your_api_token_here \\\n --acl=your_api_token_here \\\n --policy=your_api_token_here \\\n --x-amz-credential=your_api_token_here \\\n --x-amz-algorithm=your_api_token_here \\\n --x-amz-date=your_api_token_here \\\n --x-amz-signature=your_api_token_here \\\n --key=your_api_token_here \\\n --file=./file.jpg \\\n --json\n```\n\nДокументация: https://dev.pachca.com/api/files/direct-url\nПолная справка: `pachca api POST /direct_url --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/direct_url","description":"Загрузка файла\n\nВторой шаг загрузки: сам файл уходит в хранилище формой `multipart/form-data`. Поля формы и адрес берутся из ответа метода [Получение подписи, ключа и других параметров](POST /uploads) и передаются как есть, в том же порядке, а файл идёт последним полем.\n\nЗапрос уходит не в API Пачки, а прямо в хранилище, и в ответ приходит `204` без тела. Дальше файл прикладывают, передав его `key` в поле `files` — в [Новое сообщение](POST /messages) или [Новый черновик](POST /drafts), а также при их правке. Имя файла в `name` должно иметь то же расширение, что и `key`, иначе сообщение будет отклонено.","parameters":[],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["Content-Disposition","acl","policy","x-amz-credential","x-amz-algorithm","x-amz-date","x-amz-signature","key","file"],"properties":{"Content-Disposition":{"type":"string","description":"Параметр Content-Disposition, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)"},"acl":{"type":"string","description":"Параметр acl, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)"},"policy":{"type":"string","description":"Параметр policy, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)"},"x-amz-credential":{"type":"string","description":"Параметр x-amz-credential, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)"},"x-amz-algorithm":{"type":"string","description":"Параметр x-amz-algorithm, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)"},"x-amz-date":{"type":"string","description":"Параметр x-amz-date, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)"},"x-amz-signature":{"type":"string","description":"Параметр x-amz-signature, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)"},"key":{"type":"string","description":"Параметр key, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)"},"file":{"type":"string","format":"binary","description":"Файл для загрузки"}},"$ref":"#/components/schemas/FileUploadRequest"}}}},"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "}},"requirements":{"auth":false},"paginated":false},"docs":"# Загрузка файла\n\n**Метод**: `POST`\n\n**Путь**: `/direct_url`\n\n> Авторизация не требуется\n\nВторой шаг загрузки: сам файл уходит в хранилище формой `multipart/form-data`. Поля формы и адрес берутся из ответа метода [Получение подписи, ключа и других параметров](POST /uploads) и передаются как есть, в том же порядке, а файл идёт последним полем.\n\nЗапрос уходит не в API Пачки, а прямо в хранилище, и в ответ приходит `204` без тела. Дальше файл прикладывают, передав его `key` в поле `files` — в [Новое сообщение](POST /messages) или [Новый черновик](POST /drafts), а также при их правке. Имя файла в `name` должно иметь то же расширение, что и `key`, иначе сообщение будет отклонено.\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `multipart/form-data`\n\n### Схема\n\n- `Content-Disposition: string` (required) — Параметр Content-Disposition, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)\n- `acl: string` (required) — Параметр acl, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)\n- `policy: string` (required) — Параметр policy, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)\n- `x-amz-credential: string` (required) — Параметр x-amz-credential, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)\n- `x-amz-algorithm: string` (required) — Параметр x-amz-algorithm, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)\n- `x-amz-date: string` (required) — Параметр x-amz-date, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)\n- `x-amz-signature: string` (required) — Параметр x-amz-signature, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)\n- `key: string` (required) — Параметр key, полученный в ответе на запрос [Получение подписи, ключа и других параметров](POST /uploads)\n- `file: binary` (required) — Файл для загрузки\n\n\n## Пример запроса\n\n```bash\n# URL получается из ответа POST /uploads (поле direct_url)\ncurl \"$DIRECT_URL\" \\\n -F 'Content-Disposition=attachment' \\\n -F 'acl=private' \\\n -F 'policy=eyJloNBpcmF0aW9u...' \\\n -F 'x-amz-credential=286471_server/20211122/kz-6x/s3/aws4_request' \\\n -F 'x-amz-algorithm=AWS4-HMAC-SHA256' \\\n -F 'x-amz-date=20211122T065734Z' \\\n -F 'x-amz-signature=87e8f3ba4083c937c0e891d7a11tre932d8c33cg4bacf5380bf27624c1ok1475' \\\n -F 'key=attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/${filename}' \\\n -F 'file=@filename.png'\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n"},{"method":"POST","path":"/drafts","summary":"Новый черновик","scope":"drafts:write","plan":null,"auth":true,"paginated":false,"command":"pachca drafts create","docLink":"https://dev.pachca.com/api/drafts/create","describe":"# POST /drafts — Новый черновик\n\n> **Скоуп:** `drafts:write`\n\n## Тело запроса\n\n- `draft: object` (required) — Собранный объект параметров черновика\n - `entity_type: string` (required) — Куда пишется черновик: в беседу или канал, в тред либо в личную переписку с сотрудником\n Значения: `discussion` — Беседа или канал, `thread` — Тред, `user` — Пользователь\n - `entity_id: integer, int32` (required) — Идентификатор того, что названо в `entity_type`: беседы или канала, треда либо сотрудника\n - `content: string` — Текст черновика. Можно не передавать, если есть вложения, но пустым черновик быть не может.\n - `parent_message_id: integer, int32` (nullable) — Идентификатор сообщения, ответом на которое уйдёт черновик. Сообщение должно быть в том же чате.\n - `files: array of object` (max items: 10) — Прикрепляемые файлы, не больше десяти\n - `id: integer, int32` — Идентификатор уже прикреплённого файла. Передаётся при редактировании, чтобы сохранить вложение как есть. У нового файла не указывается.\n - `key: string` (required, max length: 1000) — Путь к файлу, полученный в методе [Загрузка файла](POST /direct_url)\n - `name: string` (required, max length: 255) — Название файла, которое вы хотите отображать пользователю\n - `file_type: string` — Тип файла\n Значения: `file` — Обычный файл, `image` — Изображение, `audio` — Аудиофайл, `voice` — Голосовое сообщение, `video` — Видеофайл\n - `size: integer, int64` — Размер файла в байтах, отображаемый пользователю\n - `width: integer, int32` — Ширина изображения в пикселях\n - `height: integer, int32` — Высота изображения в пикселях\n - `duration_ms: integer, int32` — Длительность в миллисекундах. Обязательна для голосового сообщения (`file_type` — `voice`). Голосовое сообщение длиннее 30 минут (1 800 000 мс) отклоняется с `422`.\n - `waveform: string` (max length: 256) — Форма волны для визуализации. Обязательна для голосового сообщения (`file_type` — `voice`).\n - `schedule: object` — Расписание отправки. С ним создаётся отложенное сообщение, без него — обычный черновик.\n - `start_date: date-time` (required) — Первая отправка (ISO-8601). Из неё берутся время суток, число месяца и день недели, по которым дальше строится повтор. Смещение вида `+03:00` учитывается, время без смещения считается UTC.\n - `end_date: date-time` (nullable) — Дата, после которой повтор прекращается (ISO-8601). Без неё повтор идёт бессрочно.\n - `repetition: object` (required) — Правило повтора\n - `interval: string` (required) — Периодичность\n Значения: `once` — Один раз, `daily` — Каждый день, `weekly` — Каждую неделю, `monthly` — Каждый месяц, `every_2_months` — Раз в два месяца, `every_3_months` — Раз в три месяца, `every_4_months` — Раз в четыре месяца, `every_6_months` — Раз в полгода, `yearly` — Раз в год\n - `days: array of integer` (max items: 7) — Дни недели, по которым уходит сообщение: 0 — воскресенье, 6 — суббота. Учитывается только при периодичности `weekly`, а если не передать, берётся день недели из `start_date`.\n - `nth_day: integer, int32` (nullable, min: 1, max: 5) — Какой по счёту день недели в месяце: от 1 до 4 — первый, второй, третий, четвёртый, 5 — последний. Учитывается только при периодичности по месяцам, а без него повтор идёт по числу месяца из `start_date`.\n\n## Эквивалентная команда\n\n```bash\npachca drafts create \\\n --entity-type=discussion \\\n --entity-id=334 \\\n --content='Отчёт за неделю: продажи выросли на 10%' \\\n --parent-message-id=196093 \\\n --files='[{\"id\":3560,\"key\":\"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png\",\"name\":\"logo.png\",\"file_type\":\"image\",\"size\":12345,\"width\":800,\"height\":600,\"duration_ms\":5400,\"waveform\":\"4,8,12,20,16,10,6,3\"}]' \\\n --schedule='{\"start_date\":\"2026-09-17T12:00:00.000Z\",\"end_date\":\"2026-12-31T12:00:00.000Z\",\"repetition\":{\"interval\":\"weekly\",\"days\":[1,3],\"nth_day\":2}}' \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/drafts/create\nПолная справка: `pachca api POST /drafts --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/drafts","description":"Новый черновик\n\nКладёт черновик в беседу, тред или личную переписку. В интерфейсе Пачки он появляется в поле ввода этого чата, где сотрудник его допишет и отправит. Этим же методом создаётся отложенное сообщение: с полем `schedule` черновик уходит сам в назначенное время, без него просто лежит. Сам метод ничего не отправляет, для отправки есть [Новое сообщение](POST /messages).\n\nЧерновик виден только своему автору — его не видит ни собеседник, ни администратор пространства. Обычный черновик в чате может быть только один. Повторный вызов отвечает `409` с кодом `already_exists` и номером существующего в `payload.draft_id`. Дописывают его методом [Редактирование черновика](PUT /drafts/{id}). Отложенных сообщений на один чат — не больше 50.\n\nДля треда в `entity_id` передают идентификатор самого треда, а не сообщения, под которым он висит. Личной переписки с сотрудником может ещё не быть — тогда она заводится сама, как при обычной отправке сообщения.\n\nПустой черновик создать нельзя: нужен либо текст, либо вложения.\n\nТокенам ботов метод недоступен.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на создание черновика","required":["draft"],"properties":{"draft":{"type":"object","description":"Собранный объект параметров черновика","required":["entity_type","entity_id"],"properties":{"entity_type":{"description":"Куда пишется черновик: в беседу или канал, в тред либо в личную переписку с сотрудником","example":"discussion","allOf":[{"type":"string","description":"Тип сущности для сообщений","enum":["discussion","thread","user"],"x-enum-descriptions":{"discussion":"Беседа или канал","thread":"Тред","user":"Пользователь"},"$ref":"#/components/schemas/MessageEntityType"}]},"entity_id":{"type":"integer","format":"int32","description":"Идентификатор того, что названо в `entity_type`: беседы или канала, треда либо сотрудника","example":334},"content":{"type":"string","description":"Текст черновика. Можно не передавать, если есть вложения, но пустым черновик быть не может.","example":"Отчёт за неделю: продажи выросли на 10%"},"parent_message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, ответом на которое уйдёт черновик. Сообщение должно быть в том же чате.","example":196093,"nullable":true},"files":{"type":"array","description":"Прикрепляемые файлы, не больше десяти","maxItems":10,"items":{"type":"object","description":"Прикрепляемый к черновику файл","required":["key","name"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор уже прикреплённого файла. Передаётся при редактировании, чтобы сохранить вложение как есть. У нового файла не указывается.","example":3560},"key":{"type":"string","description":"Путь к файлу, полученный в методе [Загрузка файла](POST /direct_url)","example":"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png","maxLength":1000},"name":{"type":"string","description":"Название файла, которое вы хотите отображать пользователю","example":"logo.png","maxLength":255},"file_type":{"description":"Тип файла","example":"image","allOf":[{"type":"string","description":"Тип файла","enum":["file","image","audio","voice","video"],"x-enum-descriptions":{"file":"Обычный файл","image":"Изображение","audio":"Аудиофайл","voice":"Голосовое сообщение","video":"Видеофайл"},"$ref":"#/components/schemas/FileType"}]},"size":{"type":"integer","format":"int64","description":"Размер файла в байтах, отображаемый пользователю","example":12345},"width":{"type":"integer","format":"int32","description":"Ширина изображения в пикселях","example":800},"height":{"type":"integer","format":"int32","description":"Высота изображения в пикселях","example":600},"duration_ms":{"type":"integer","format":"int32","description":"Длительность в миллисекундах. Обязательна для голосового сообщения (`file_type` — `voice`). Голосовое сообщение длиннее 30 минут (1 800 000 мс) отклоняется с `422`.","example":5400},"waveform":{"type":"string","description":"Форма волны для визуализации. Обязательна для голосового сообщения (`file_type` — `voice`).","example":"4,8,12,20,16,10,6,3","maxLength":256}},"$ref":"#/components/schemas/DraftFileRequest"}},"schedule":{"type":"object","description":"Расписание отправки. С ним создаётся отложенное сообщение, без него — обычный черновик.","nullable":true,"allOf":[{"type":"object","description":"Расписание отправки в запросе","required":["start_date","repetition"],"properties":{"start_date":{"type":"string","format":"date-time","description":"Первая отправка (ISO-8601). Из неё берутся время суток, число месяца и день недели, по которым дальше строится повтор. Смещение вида `+03:00` учитывается, время без смещения считается UTC.","example":"2026-09-17T12:00:00.000Z"},"end_date":{"type":"string","format":"date-time","description":"Дата, после которой повтор прекращается (ISO-8601). Без неё повтор идёт бессрочно.","example":"2026-12-31T12:00:00.000Z","nullable":true},"repetition":{"description":"Правило повтора","allOf":[{"type":"object","description":"Правило повтора в запросе","required":["interval"],"properties":{"interval":{"description":"Периодичность","example":"weekly","allOf":[{"type":"string","description":"Периодичность повтора отложенного сообщения","enum":["once","daily","weekly","monthly","every_2_months","every_3_months","every_4_months","every_6_months","yearly"],"x-enum-descriptions":{"once":"Один раз","daily":"Каждый день","weekly":"Каждую неделю","monthly":"Каждый месяц","every_2_months":"Раз в два месяца","every_3_months":"Раз в три месяца","every_4_months":"Раз в четыре месяца","every_6_months":"Раз в полгода","yearly":"Раз в год"},"$ref":"#/components/schemas/DraftRepetitionInterval"}]},"days":{"type":"array","description":"Дни недели, по которым уходит сообщение: 0 — воскресенье, 6 — суббота. Учитывается только при периодичности `weekly`, а если не передать, берётся день недели из `start_date`.","example":[1,3],"maxItems":7,"items":{"type":"integer","format":"int32"}},"nth_day":{"type":"integer","format":"int32","description":"Какой по счёту день недели в месяце: от 1 до 4 — первый, второй, третий, четвёртый, 5 — последний. Учитывается только при периодичности по месяцам, а без него повтор идёт по числу месяца из `start_date`.","example":2,"nullable":true,"minimum":1,"maximum":5}},"$ref":"#/components/schemas/DraftRepetitionRequest"}]}},"$ref":"#/components/schemas/DraftScheduleRequest"}]}}}},"$ref":"#/components/schemas/DraftCreateRequest"}}}},"responses":{"201":{"description":"The request has succeeded and a new resource has been created as a result.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Черновик или отложенное сообщение","required":["id","entity_type","entity_id","chat_id","content","parent_message_id","files","voice_content","schedule","next_send_at","created_at","updated_at"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор черновика","example":4821},"entity_type":{"description":"Куда уйдёт сообщение: в беседу или канал, в тред либо в личную переписку с сотрудником","example":"discussion","nullable":true,"allOf":[{"type":"string","description":"Тип сущности для сообщений","enum":["discussion","thread","user"],"x-enum-descriptions":{"discussion":"Беседа или канал","thread":"Тред","user":"Пользователь"},"$ref":"#/components/schemas/MessageEntityType"}]},"entity_id":{"type":"integer","format":"int32","description":"Идентификатор того, что названо в `entity_type`: беседы или канала, треда либо сотрудника","example":334,"nullable":true},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором лежит черновик. У черновика треда это чат самого треда.","example":334,"nullable":true},"content":{"type":"string","description":"Текст черновика. У черновика из одних вложений приходит пустая строка, а не `null`.","example":"Отчёт за неделю: продажи выросли на 10%"},"parent_message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, ответом на которое уйдёт черновик. `null`, если это не ответ.","example":196093,"nullable":true},"files":{"type":"array","description":"Прикреплённые файлы","items":{"type":"object","description":"Файл","required":["id","key","name","file_type","url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор файла","example":3560},"key":{"type":"string","description":"Путь к файлу","example":"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png"},"name":{"type":"string","description":"Название файла с расширением","example":"congrat.png"},"file_type":{"description":"Тип файла","example":"image","allOf":[{"type":"string","description":"Тип файла","enum":["file","image","audio","voice","video"],"x-enum-descriptions":{"file":"Обычный файл","image":"Изображение","audio":"Аудиофайл","voice":"Голосовое сообщение","video":"Видеофайл"},"$ref":"#/components/schemas/FileType"}]},"url":{"type":"string","description":"Ссылка на скачивание файла. Обычно ведёт прямо в хранилище и действует до 7 дней, а оставшийся срок может быть меньше — если такая ссылка вернула `403`, запросите сообщение заново и получите свежую. Если в пространстве включено шифрование или задан безопасный контур, ссылка ведёт на [Скачивание файла](GET /files/{id}): забирать такой файл нужно с заголовком `Authorization`, а токену нужен скоуп `files:read`.","example":"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8"},"width":{"type":"integer","format":"int32","description":"Ширина изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке.","example":1920,"nullable":true},"height":{"type":"integer","format":"int32","description":"Высота изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке.","example":1080,"nullable":true},"duration_ms":{"type":"integer","format":"int32","description":"Длительность в миллисекундах у голосового, аудио- и видеофайла. `null` у остальных файлов и если длительность не была передана при загрузке.","example":5400,"nullable":true}},"$ref":"#/components/schemas/File"}},"voice_content":{"type":"object","description":"Голосовое сообщение. `null`, если голосового вложения нет. Расшифровка в `transcript` у черновика всегда `null` — она запускается после отправки.","nullable":true,"allOf":[{"type":"object","description":"Данные голосового сообщения","required":["duration_ms","waveform","transcript"],"properties":{"duration_ms":{"type":"integer","format":"int32","description":"Длительность голосового сообщения в миллисекундах","example":5400},"waveform":{"type":"string","description":"Форма волны (амплитуды) для визуализации голосового сообщения","example":"4,8,12,20,16,10,6,3"},"transcript":{"type":"string","description":"Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна.","example":"Привет, посмотри пожалуйста последний отчёт","nullable":true}},"$ref":"#/components/schemas/VoiceContent"}]},"schedule":{"type":"object","description":"Расписание отправки. `null` у обычного черновика.","nullable":true,"allOf":[{"type":"object","description":"Расписание отправки отложенного сообщения","required":["start_date","end_date","repetition"],"properties":{"start_date":{"type":"string","format":"date-time","description":"Первая отправка (ISO-8601). Из неё берутся время суток, число месяца и день недели, по которым дальше строится повтор.","example":"2026-09-17T12:00:00.000Z"},"end_date":{"type":"string","format":"date-time","description":"Дата, после которой повтор прекращается (ISO-8601). `null`, если конец не задан.","example":"2026-12-31T12:00:00.000Z","nullable":true},"repetition":{"description":"Правило повтора","allOf":[{"type":"object","description":"Правило повтора отложенного сообщения","required":["interval"],"properties":{"interval":{"description":"Периодичность","example":"weekly","allOf":[{"type":"string","description":"Периодичность повтора отложенного сообщения","enum":["once","daily","weekly","monthly","every_2_months","every_3_months","every_4_months","every_6_months","yearly"],"x-enum-descriptions":{"once":"Один раз","daily":"Каждый день","weekly":"Каждую неделю","monthly":"Каждый месяц","every_2_months":"Раз в два месяца","every_3_months":"Раз в три месяца","every_4_months":"Раз в четыре месяца","every_6_months":"Раз в полгода","yearly":"Раз в год"},"$ref":"#/components/schemas/DraftRepetitionInterval"}]},"days":{"type":"array","description":"Дни недели, по которым уходит сообщение: 0 — воскресенье, 6 — суббота. Приходит только при периодичности `weekly`.","example":[1,3],"items":{"type":"integer","format":"int32"}},"nth_day":{"type":"integer","format":"int32","description":"Какой по счёту день недели в месяце: от 1 до 4 — первый, второй, третий, четвёртый, 5 — последний. Приходит только при периодичности по месяцам, а `null` в ней означает повтор по числу месяца из `start_date`.","example":2,"nullable":true}},"$ref":"#/components/schemas/DraftRepetition"}]}},"$ref":"#/components/schemas/DraftSchedule"}]},"next_send_at":{"type":"string","format":"date-time","description":"Ближайшая отправка (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null` у обычного черновика.","example":"2026-09-17T12:00:00.000Z","nullable":true},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2026-09-16T10:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","description":"Дата и время последнего изменения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2026-09-16T10:00:00.000Z"}},"$ref":"#/components/schemas/Draft"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"},{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}]}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"drafts:write","scopeRoles":["owner","admin","user","multi_guest"]},"paginated":false},"docs":"# Новый черновик\n\n**Метод**: `POST`\n\n**Путь**: `/drafts`\n\n> **Скоуп:** `drafts:write`\n\nКладёт черновик в беседу, тред или личную переписку. В интерфейсе Пачки он появляется в поле ввода этого чата, где сотрудник его допишет и отправит. Этим же методом создаётся отложенное сообщение: с полем `schedule` черновик уходит сам в назначенное время, без него просто лежит. Сам метод ничего не отправляет, для отправки есть [Новое сообщение](POST /messages).\n\nЧерновик виден только своему автору — его не видит ни собеседник, ни администратор пространства. Обычный черновик в чате может быть только один. Повторный вызов отвечает `409` с кодом `already_exists` и номером существующего в `payload.draft_id`. Дописывают его методом [Редактирование черновика](PUT /drafts/{id}). Отложенных сообщений на один чат — не больше 50.\n\nДля треда в `entity_id` передают идентификатор самого треда, а не сообщения, под которым он висит. Личной переписки с сотрудником может ещё не быть — тогда она заводится сама, как при обычной отправке сообщения.\n\nПустой черновик создать нельзя: нужен либо текст, либо вложения.\n\nТокенам ботов метод недоступен.\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `draft: object` (required) — Собранный объект параметров черновика\n - `entity_type: string` (required) — Куда пишется черновик: в беседу или канал, в тред либо в личную переписку с сотрудником\n Значения: `discussion` — Беседа или канал, `thread` — Тред, `user` — Пользователь\n - `entity_id: integer, int32` (required) — Идентификатор того, что названо в `entity_type`: беседы или канала, треда либо сотрудника. Пример: `334`\n - `content: string` — Текст черновика. Можно не передавать, если есть вложения, но пустым черновик быть не может. Пример: `\"Отчёт за неделю: продажи выросли на 10%\"`\n - `parent_message_id: integer, int32` (nullable) — Идентификатор сообщения, ответом на которое уйдёт черновик. Сообщение должно быть в том же чате. Пример: `196093`\n - `files: array of object` (max items: 10) — Прикрепляемые файлы, не больше десяти\n - `id: integer, int32` — Идентификатор уже прикреплённого файла. Передаётся при редактировании, чтобы сохранить вложение как есть. У нового файла не указывается. Пример: `3560`\n - `key: string` (required, max length: 1000) — Путь к файлу, полученный в методе [Загрузка файла](POST /direct_url). Пример: `\"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png\"`\n - `name: string` (required, max length: 255) — Название файла, которое вы хотите отображать пользователю. Пример: `\"logo.png\"`\n - `file_type: string` — Тип файла\n Значения: `file` — Обычный файл, `image` — Изображение, `audio` — Аудиофайл, `voice` — Голосовое сообщение, `video` — Видеофайл\n - `size: integer, int64` — Размер файла в байтах, отображаемый пользователю. Пример: `12345`\n - `width: integer, int32` — Ширина изображения в пикселях. Пример: `800`\n - `height: integer, int32` — Высота изображения в пикселях. Пример: `600`\n - `duration_ms: integer, int32` — Длительность в миллисекундах. Обязательна для голосового сообщения (`file_type` — `voice`). Голосовое сообщение длиннее 30 минут (1 800 000 мс) отклоняется с `422`. Пример: `5400`\n - `waveform: string` (max length: 256) — Форма волны для визуализации. Обязательна для голосового сообщения (`file_type` — `voice`). Пример: `\"4,8,12,20,16,10,6,3\"`\n - `schedule: object` — Расписание отправки. С ним создаётся отложенное сообщение, без него — обычный черновик.\n - `start_date: date-time` (required) — Первая отправка (ISO-8601). Из неё берутся время суток, число месяца и день недели, по которым дальше строится повтор. Смещение вида `+03:00` учитывается, время без смещения считается UTC. Пример: `\"2026-09-17T12:00:00.000Z\"`\n - `end_date: date-time` (nullable) — Дата, после которой повтор прекращается (ISO-8601). Без неё повтор идёт бессрочно. Пример: `\"2026-12-31T12:00:00.000Z\"`\n - `repetition: object` (required) — Правило повтора\n - `interval: string` (required) — Периодичность\n Значения: `once` — Один раз, `daily` — Каждый день, `weekly` — Каждую неделю, `monthly` — Каждый месяц, `every_2_months` — Раз в два месяца, `every_3_months` — Раз в три месяца, `every_4_months` — Раз в четыре месяца, `every_6_months` — Раз в полгода, `yearly` — Раз в год\n - `days: array of integer` (max items: 7) — Дни недели, по которым уходит сообщение: 0 — воскресенье, 6 — суббота. Учитывается только при периодичности `weekly`, а если не передать, берётся день недели из `start_date`. Пример: `[1,3]`\n - `nth_day: integer, int32` (nullable, min: 1, max: 5) — Какой по счёту день недели в месяце: от 1 до 4 — первый, второй, третий, четвёртый, 5 — последний. Учитывается только при периодичности по месяцам, а без него повтор идёт по числу месяца из `start_date`. Пример: `2`\n\n### Пример\n\n```json\n{\n \"draft\": {\n \"entity_type\": \"discussion\",\n \"entity_id\": 334,\n \"content\": \"Отчёт за неделю: продажи выросли на 10%\",\n \"parent_message_id\": 196093,\n \"files\": [\n {\n \"id\": 3560,\n \"key\": \"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png\",\n \"name\": \"logo.png\",\n \"file_type\": \"image\",\n \"size\": 12345,\n \"width\": 800,\n \"height\": 600,\n \"duration_ms\": 5400,\n \"waveform\": \"4,8,12,20,16,10,6,3\"\n }\n ],\n \"schedule\": {\n \"start_date\": \"2026-09-17T12:00:00.000Z\",\n \"end_date\": \"2026-12-31T12:00:00.000Z\",\n \"repetition\": {\n \"interval\": \"weekly\",\n \"days\": [\n 1,\n 3\n ],\n \"nth_day\": 2\n }\n }\n }\n}\n```\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/drafts\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"draft\": {\n \"entity_type\": \"discussion\",\n \"entity_id\": 334,\n \"content\": \"Отчёт за неделю: продажи выросли на 10%\",\n \"parent_message_id\": 196093,\n \"files\": [\n {\n \"id\": 3560,\n \"key\": \"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png\",\n \"name\": \"logo.png\",\n \"file_type\": \"image\",\n \"size\": 12345,\n \"width\": 800,\n \"height\": 600,\n \"duration_ms\": 5400,\n \"waveform\": \"4,8,12,20,16,10,6,3\"\n }\n ],\n \"schedule\": {\n \"start_date\": \"2026-09-17T12:00:00.000Z\",\n \"end_date\": \"2026-12-31T12:00:00.000Z\",\n \"repetition\": {\n \"interval\": \"weekly\",\n \"days\": [\n 1,\n 3\n ],\n \"nth_day\": 2\n }\n }\n }\n}'\n```\n\n## Ответы\n\n### 201: The request has succeeded and a new resource has been created as a result.\n\n**Схема ответа:**\n\n- `data: object` (required) — Черновик или отложенное сообщение\n - `id: integer, int32` (required) — Идентификатор черновика. Пример: `4821`\n - `entity_type: string` (required) — Куда уйдёт сообщение: в беседу или канал, в тред либо в личную переписку с сотрудником\n Значения: `discussion` — Беседа или канал, `thread` — Тред, `user` — Пользователь\n - `entity_id: integer, int32` (required, nullable) — Идентификатор того, что названо в `entity_type`: беседы или канала, треда либо сотрудника. Пример: `334`\n - `chat_id: integer, int32` (required, nullable) — Идентификатор чата, в котором лежит черновик. У черновика треда это чат самого треда. Пример: `334`\n - `content: string` (required) — Текст черновика. У черновика из одних вложений приходит пустая строка, а не `null`. Пример: `\"Отчёт за неделю: продажи выросли на 10%\"`\n - `parent_message_id: integer, int32` (required, nullable) — Идентификатор сообщения, ответом на которое уйдёт черновик. `null`, если это не ответ. Пример: `196093`\n - `files: array of object` (required) — Прикреплённые файлы\n - `id: integer, int32` (required) — Идентификатор файла. Пример: `3560`\n - `key: string` (required) — Путь к файлу. Пример: `\"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png\"`\n - `name: string` (required) — Название файла с расширением. Пример: `\"congrat.png\"`\n - `file_type: string` (required) — Тип файла\n Значения: `file` — Обычный файл, `image` — Изображение, `audio` — Аудиофайл, `voice` — Голосовое сообщение, `video` — Видеофайл\n - `url: string` (required) — Ссылка на скачивание файла. Обычно ведёт прямо в хранилище и действует до 7 дней, а оставшийся срок может быть меньше — если такая ссылка вернула `403`, запросите сообщение заново и получите свежую. Если в пространстве включено шифрование или задан безопасный контур, ссылка ведёт на [Скачивание файла](GET /files/{id}): забирать такой файл нужно с заголовком `Authorization`, а токену нужен скоуп `files:read`. Пример: `\"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8\"`\n - `width: integer, int32` (nullable) — Ширина изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке. Пример: `1920`\n - `height: integer, int32` (nullable) — Высота изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке. Пример: `1080`\n - `duration_ms: integer, int32` (nullable) — Длительность в миллисекундах у голосового, аудио- и видеофайла. `null` у остальных файлов и если длительность не была передана при загрузке. Пример: `5400`\n - `voice_content: object` (required) — Голосовое сообщение. `null`, если голосового вложения нет. Расшифровка в `transcript` у черновика всегда `null` — она запускается после отправки.\n - `duration_ms: integer, int32` (required) — Длительность голосового сообщения в миллисекундах. Пример: `5400`\n - `waveform: string` (required) — Форма волны (амплитуды) для визуализации голосового сообщения. Пример: `\"4,8,12,20,16,10,6,3\"`\n - `transcript: string` (required, nullable) — Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна. Пример: `\"Привет, посмотри пожалуйста последний отчёт\"`\n - `schedule: object` (required) — Расписание отправки. `null` у обычного черновика.\n - `start_date: date-time` (required) — Первая отправка (ISO-8601). Из неё берутся время суток, число месяца и день недели, по которым дальше строится повтор. Пример: `\"2026-09-17T12:00:00.000Z\"`\n - `end_date: date-time` (required, nullable) — Дата, после которой повтор прекращается (ISO-8601). `null`, если конец не задан. Пример: `\"2026-12-31T12:00:00.000Z\"`\n - `repetition: object` (required) — Правило повтора\n - `interval: string` (required) — Периодичность\n Значения: `once` — Один раз, `daily` — Каждый день, `weekly` — Каждую неделю, `monthly` — Каждый месяц, `every_2_months` — Раз в два месяца, `every_3_months` — Раз в три месяца, `every_4_months` — Раз в четыре месяца, `every_6_months` — Раз в полгода, `yearly` — Раз в год\n - `days: array of integer` — Дни недели, по которым уходит сообщение: 0 — воскресенье, 6 — суббота. Приходит только при периодичности `weekly`. Пример: `[1,3]`\n - `nth_day: integer, int32` (nullable) — Какой по счёту день недели в месяце: от 1 до 4 — первый, второй, третий, четвёртый, 5 — последний. Приходит только при периодичности по месяцам, а `null` в ней означает повтор по числу месяца из `start_date`. Пример: `2`\n - `next_send_at: date-time` (required, nullable) — Ближайшая отправка (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null` у обычного черновика. Пример: `\"2026-09-17T12:00:00.000Z\"`\n - `created_at: date-time` (required) — Дата и время создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2026-09-16T10:00:00.000Z\"`\n - `updated_at: date-time` (required) — Дата и время последнего изменения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2026-09-16T10:00:00.000Z\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 4821,\n \"entity_type\": \"discussion\",\n \"entity_id\": 334,\n \"chat_id\": 334,\n \"content\": \"Отчёт за неделю: продажи выросли на 10%\",\n \"parent_message_id\": 196093,\n \"files\": [\n {\n \"id\": 3560,\n \"key\": \"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png\",\n \"name\": \"congrat.png\",\n \"file_type\": \"image\",\n \"url\": \"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8\",\n \"width\": 1920,\n \"height\": 1080,\n \"duration_ms\": 5400\n }\n ],\n \"voice_content\": {\n \"duration_ms\": 5400,\n \"waveform\": \"4,8,12,20,16,10,6,3\",\n \"transcript\": \"Привет, посмотри пожалуйста последний отчёт\"\n },\n \"schedule\": {\n \"start_date\": \"2026-09-17T12:00:00.000Z\",\n \"end_date\": \"2026-12-31T12:00:00.000Z\",\n \"repetition\": {\n \"interval\": \"weekly\",\n \"days\": [\n 1,\n 3\n ],\n \"nth_day\": 2\n }\n },\n \"next_send_at\": \"2026-09-17T12:00:00.000Z\",\n \"created_at\": \"2026-09-16T10:00:00.000Z\",\n \"updated_at\": \"2026-09-16T10:00:00.000Z\"\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n**anyOf** - один из вариантов:\n\n- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)\n - `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403)\n - `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n - `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 409: The request conflicts with the current state of the server.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/drafts","summary":"Список черновиков","scope":"drafts:read","plan":null,"auth":true,"paginated":true,"command":"pachca drafts list","docLink":"https://dev.pachca.com/api/drafts/list","describe":"# GET /drafts — Список черновиков\n\n> **Скоуп:** `drafts:read`\n\n> Пагинация: добавьте `--all` для автоматического обхода страниц\n\n## Параметры\n\n- `type` — query: Что возвращать: `regular` — обычные черновики, `scheduled` — отложенные сообщения, `all` — и те и другие\n- `entity_type` — query: Тип чата для фильтра по одному чату. Указывается вместе с `entity_id`: если прислать только один из двух, ответ будет `422`.\n- `entity_id` — query: Идентификатор того, что названо в `entity_type`. Указывается вместе с ним.\n- `limit` — query: Количество возвращаемых сущностей за один запрос\n- `cursor` — query: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n## Эквивалентная команда\n\n```bash\n# Добавьте --all для автоматической пагинации\npachca drafts list \\\n --type=all \\\n --entity-type=discussion \\\n --entity-id=334 \\\n --limit=25 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/drafts/list\nПолная справка: `pachca api GET /drafts --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/drafts","description":"Список черновиков\n\nСвои черновики, от новых к старым.\n\nПо умолчанию возвращаются только обычные черновики: отложенные нужно запросить параметром `type`. Отличить их в ответе можно по полю `schedule`.\n\nПара `entity_type` и `entity_id` сужает выдачу до одного чата, треда или личной переписки. Если такого чата нет или он недоступен, метод отвечает пустым списком, а не ошибкой.","parameters":[{"name":"type","in":"query","description":"Что возвращать: `regular` — обычные черновики, `scheduled` — отложенные сообщения, `all` — и те и другие","required":false,"schema":{"default":"regular","allOf":[{"type":"string","description":"Что возвращать в списке черновиков","enum":["regular","scheduled","all"],"x-enum-descriptions":{"regular":"Обычные черновики","scheduled":"Отложенные сообщения","all":"И черновики, и отложенные сообщения"},"$ref":"#/components/schemas/DraftType"}]},"example":"all","explode":false},{"name":"entity_type","in":"query","description":"Тип чата для фильтра по одному чату. Указывается вместе с `entity_id`: если прислать только один из двух, ответ будет `422`.","required":false,"schema":{"type":"string","description":"Тип сущности для сообщений","enum":["discussion","thread","user"],"x-enum-descriptions":{"discussion":"Беседа или канал","thread":"Тред","user":"Пользователь"},"example":"discussion","$ref":"#/components/schemas/MessageEntityType"},"example":"discussion","explode":false},{"name":"entity_id","in":"query","description":"Идентификатор того, что названо в `entity_type`. Указывается вместе с ним.","required":false,"schema":{"type":"integer","format":"int32","example":334},"example":334,"explode":false},{"name":"limit","in":"query","description":"Количество возвращаемых сущностей за один запрос","required":false,"schema":{"type":"integer","format":"int32","default":50,"example":25,"minimum":1,"maximum":50},"example":25,"explode":false},{"name":"cursor","in":"query","description":"Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)","required":false,"schema":{"type":"string","example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9"},"example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9","explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными и пагинацией","required":["data","meta"],"properties":{"data":{"type":"array","items":{"type":"object","description":"Черновик или отложенное сообщение","required":["id","entity_type","entity_id","chat_id","content","parent_message_id","files","voice_content","schedule","next_send_at","created_at","updated_at"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор черновика","example":4821},"entity_type":{"description":"Куда уйдёт сообщение: в беседу или канал, в тред либо в личную переписку с сотрудником","example":"discussion","nullable":true,"allOf":[{"type":"string","description":"Тип сущности для сообщений","enum":["discussion","thread","user"],"x-enum-descriptions":{"discussion":"Беседа или канал","thread":"Тред","user":"Пользователь"},"$ref":"#/components/schemas/MessageEntityType"}]},"entity_id":{"type":"integer","format":"int32","description":"Идентификатор того, что названо в `entity_type`: беседы или канала, треда либо сотрудника","example":334,"nullable":true},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором лежит черновик. У черновика треда это чат самого треда.","example":334,"nullable":true},"content":{"type":"string","description":"Текст черновика. У черновика из одних вложений приходит пустая строка, а не `null`.","example":"Отчёт за неделю: продажи выросли на 10%"},"parent_message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, ответом на которое уйдёт черновик. `null`, если это не ответ.","example":196093,"nullable":true},"files":{"type":"array","description":"Прикреплённые файлы","items":{"type":"object","description":"Файл","required":["id","key","name","file_type","url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор файла","example":3560},"key":{"type":"string","description":"Путь к файлу","example":"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png"},"name":{"type":"string","description":"Название файла с расширением","example":"congrat.png"},"file_type":{"description":"Тип файла","example":"image","allOf":[{"type":"string","description":"Тип файла","enum":["file","image","audio","voice","video"],"x-enum-descriptions":{"file":"Обычный файл","image":"Изображение","audio":"Аудиофайл","voice":"Голосовое сообщение","video":"Видеофайл"},"$ref":"#/components/schemas/FileType"}]},"url":{"type":"string","description":"Ссылка на скачивание файла. Обычно ведёт прямо в хранилище и действует до 7 дней, а оставшийся срок может быть меньше — если такая ссылка вернула `403`, запросите сообщение заново и получите свежую. Если в пространстве включено шифрование или задан безопасный контур, ссылка ведёт на [Скачивание файла](GET /files/{id}): забирать такой файл нужно с заголовком `Authorization`, а токену нужен скоуп `files:read`.","example":"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8"},"width":{"type":"integer","format":"int32","description":"Ширина изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке.","example":1920,"nullable":true},"height":{"type":"integer","format":"int32","description":"Высота изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке.","example":1080,"nullable":true},"duration_ms":{"type":"integer","format":"int32","description":"Длительность в миллисекундах у голосового, аудио- и видеофайла. `null` у остальных файлов и если длительность не была передана при загрузке.","example":5400,"nullable":true}},"$ref":"#/components/schemas/File"}},"voice_content":{"type":"object","description":"Голосовое сообщение. `null`, если голосового вложения нет. Расшифровка в `transcript` у черновика всегда `null` — она запускается после отправки.","nullable":true,"allOf":[{"type":"object","description":"Данные голосового сообщения","required":["duration_ms","waveform","transcript"],"properties":{"duration_ms":{"type":"integer","format":"int32","description":"Длительность голосового сообщения в миллисекундах","example":5400},"waveform":{"type":"string","description":"Форма волны (амплитуды) для визуализации голосового сообщения","example":"4,8,12,20,16,10,6,3"},"transcript":{"type":"string","description":"Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна.","example":"Привет, посмотри пожалуйста последний отчёт","nullable":true}},"$ref":"#/components/schemas/VoiceContent"}]},"schedule":{"type":"object","description":"Расписание отправки. `null` у обычного черновика.","nullable":true,"allOf":[{"type":"object","description":"Расписание отправки отложенного сообщения","required":["start_date","end_date","repetition"],"properties":{"start_date":{"type":"string","format":"date-time","description":"Первая отправка (ISO-8601). Из неё берутся время суток, число месяца и день недели, по которым дальше строится повтор.","example":"2026-09-17T12:00:00.000Z"},"end_date":{"type":"string","format":"date-time","description":"Дата, после которой повтор прекращается (ISO-8601). `null`, если конец не задан.","example":"2026-12-31T12:00:00.000Z","nullable":true},"repetition":{"description":"Правило повтора","allOf":[{"type":"object","description":"Правило повтора отложенного сообщения","required":["interval"],"properties":{"interval":{"description":"Периодичность","example":"weekly","allOf":[{"type":"string","description":"Периодичность повтора отложенного сообщения","enum":["once","daily","weekly","monthly","every_2_months","every_3_months","every_4_months","every_6_months","yearly"],"x-enum-descriptions":{"once":"Один раз","daily":"Каждый день","weekly":"Каждую неделю","monthly":"Каждый месяц","every_2_months":"Раз в два месяца","every_3_months":"Раз в три месяца","every_4_months":"Раз в четыре месяца","every_6_months":"Раз в полгода","yearly":"Раз в год"},"$ref":"#/components/schemas/DraftRepetitionInterval"}]},"days":{"type":"array","description":"Дни недели, по которым уходит сообщение: 0 — воскресенье, 6 — суббота. Приходит только при периодичности `weekly`.","example":[1,3],"items":{"type":"integer","format":"int32"}},"nth_day":{"type":"integer","format":"int32","description":"Какой по счёту день недели в месяце: от 1 до 4 — первый, второй, третий, четвёртый, 5 — последний. Приходит только при периодичности по месяцам, а `null` в ней означает повтор по числу месяца из `start_date`.","example":2,"nullable":true}},"$ref":"#/components/schemas/DraftRepetition"}]}},"$ref":"#/components/schemas/DraftSchedule"}]},"next_send_at":{"type":"string","format":"date-time","description":"Ближайшая отправка (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null` у обычного черновика.","example":"2026-09-17T12:00:00.000Z","nullable":true},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2026-09-16T10:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","description":"Дата и время последнего изменения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2026-09-16T10:00:00.000Z"}},"$ref":"#/components/schemas/Draft"}},"meta":{"type":"object","description":"Метаданные пагинации","required":["paginate"],"properties":{"paginate":{"type":"object","description":"Вспомогательная информация","required":["next_page"],"properties":{"next_page":{"type":"string","description":"Курсор пагинации следующей страницы","example":"eyJxZCO2MiwiZGlyIjomSNYjIn3"},"prev_page":{"type":"string","description":"Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка.","example":"eyJxZCO2MiwiZGlyIjoiYXNjIn0"},"has_next":{"type":"boolean","description":"Есть ли ещё данные на следующей странице. На последней странице — `false`.","example":true},"has_prev":{"type":"boolean","description":"Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`.","example":false}}}},"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"},{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}]}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"drafts:read","scopeRoles":["owner","admin","user","multi_guest"]},"paginated":true},"docs":"# Список черновиков\n\n**Метод**: `GET`\n\n**Путь**: `/drafts`\n\n> **Скоуп:** `drafts:read`\n\nСвои черновики, от новых к старым.\n\nПо умолчанию возвращаются только обычные черновики: отложенные нужно запросить параметром `type`. Отличить их в ответе можно по полю `schedule`.\n\nПара `entity_type` и `entity_id` сужает выдачу до одного чата, треда или личной переписки. Если такого чата нет или он недоступен, метод отвечает пустым списком, а не ошибкой.\n\n## Параметры\n\n### Query параметры\n\n- `type: string` (default: regular) — Что возвращать: `regular` — обычные черновики, `scheduled` — отложенные сообщения, `all` — и те и другие\n- `entity_type: string` — Тип чата для фильтра по одному чату. Указывается вместе с `entity_id`: если прислать только один из двух, ответ будет `422`.\n Значения: `discussion`, `thread`, `user`\n- `entity_id: integer, int32` — Идентификатор того, что названо в `entity_type`. Указывается вместе с ним.\n- `limit: integer, int32` (default: 50) — Количество возвращаемых сущностей за один запрос\n- `cursor: string` — Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n\n## Пример запроса\n\n```bash\n# Для получения следующей страницы используйте cursor из meta.paginate.next_page\ncurl \"https://api.pachca.com/api/shared/v1/drafts?type=all&entity_type=discussion&entity_id=334&limit=25\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: array of object` (required)\n - `id: integer, int32` (required) — Идентификатор черновика. Пример: `4821`\n - `entity_type: string` (required) — Куда уйдёт сообщение: в беседу или канал, в тред либо в личную переписку с сотрудником\n Значения: `discussion` — Беседа или канал, `thread` — Тред, `user` — Пользователь\n - `entity_id: integer, int32` (required, nullable) — Идентификатор того, что названо в `entity_type`: беседы или канала, треда либо сотрудника. Пример: `334`\n - `chat_id: integer, int32` (required, nullable) — Идентификатор чата, в котором лежит черновик. У черновика треда это чат самого треда. Пример: `334`\n - `content: string` (required) — Текст черновика. У черновика из одних вложений приходит пустая строка, а не `null`. Пример: `\"Отчёт за неделю: продажи выросли на 10%\"`\n - `parent_message_id: integer, int32` (required, nullable) — Идентификатор сообщения, ответом на которое уйдёт черновик. `null`, если это не ответ. Пример: `196093`\n - `files: array of object` (required) — Прикреплённые файлы\n - `id: integer, int32` (required) — Идентификатор файла. Пример: `3560`\n - `key: string` (required) — Путь к файлу. Пример: `\"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png\"`\n - `name: string` (required) — Название файла с расширением. Пример: `\"congrat.png\"`\n - `file_type: string` (required) — Тип файла\n Значения: `file` — Обычный файл, `image` — Изображение, `audio` — Аудиофайл, `voice` — Голосовое сообщение, `video` — Видеофайл\n - `url: string` (required) — Ссылка на скачивание файла. Обычно ведёт прямо в хранилище и действует до 7 дней, а оставшийся срок может быть меньше — если такая ссылка вернула `403`, запросите сообщение заново и получите свежую. Если в пространстве включено шифрование или задан безопасный контур, ссылка ведёт на [Скачивание файла](GET /files/{id}): забирать такой файл нужно с заголовком `Authorization`, а токену нужен скоуп `files:read`. Пример: `\"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8\"`\n - `width: integer, int32` (nullable) — Ширина изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке. Пример: `1920`\n - `height: integer, int32` (nullable) — Высота изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке. Пример: `1080`\n - `duration_ms: integer, int32` (nullable) — Длительность в миллисекундах у голосового, аудио- и видеофайла. `null` у остальных файлов и если длительность не была передана при загрузке. Пример: `5400`\n - `voice_content: object` (required) — Голосовое сообщение. `null`, если голосового вложения нет. Расшифровка в `transcript` у черновика всегда `null` — она запускается после отправки.\n - `duration_ms: integer, int32` (required) — Длительность голосового сообщения в миллисекундах. Пример: `5400`\n - `waveform: string` (required) — Форма волны (амплитуды) для визуализации голосового сообщения. Пример: `\"4,8,12,20,16,10,6,3\"`\n - `transcript: string` (required, nullable) — Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна. Пример: `\"Привет, посмотри пожалуйста последний отчёт\"`\n - `schedule: object` (required) — Расписание отправки. `null` у обычного черновика.\n - `start_date: date-time` (required) — Первая отправка (ISO-8601). Из неё берутся время суток, число месяца и день недели, по которым дальше строится повтор. Пример: `\"2026-09-17T12:00:00.000Z\"`\n - `end_date: date-time` (required, nullable) — Дата, после которой повтор прекращается (ISO-8601). `null`, если конец не задан. Пример: `\"2026-12-31T12:00:00.000Z\"`\n - `repetition: object` (required) — Правило повтора\n - `interval: string` (required) — Периодичность\n Значения: `once` — Один раз, `daily` — Каждый день, `weekly` — Каждую неделю, `monthly` — Каждый месяц, `every_2_months` — Раз в два месяца, `every_3_months` — Раз в три месяца, `every_4_months` — Раз в четыре месяца, `every_6_months` — Раз в полгода, `yearly` — Раз в год\n - `days: array of integer` — Дни недели, по которым уходит сообщение: 0 — воскресенье, 6 — суббота. Приходит только при периодичности `weekly`. Пример: `[1,3]`\n - `nth_day: integer, int32` (nullable) — Какой по счёту день недели в месяце: от 1 до 4 — первый, второй, третий, четвёртый, 5 — последний. Приходит только при периодичности по месяцам, а `null` в ней означает повтор по числу месяца из `start_date`. Пример: `2`\n - `next_send_at: date-time` (required, nullable) — Ближайшая отправка (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null` у обычного черновика. Пример: `\"2026-09-17T12:00:00.000Z\"`\n - `created_at: date-time` (required) — Дата и время создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2026-09-16T10:00:00.000Z\"`\n - `updated_at: date-time` (required) — Дата и время последнего изменения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2026-09-16T10:00:00.000Z\"`\n- `meta: object` (required) — Метаданные пагинации\n - `paginate: object` (required) — Вспомогательная информация\n - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `\"eyJxZCO2MiwiZGlyIjomSNYjIn3\"`\n - `prev_page: string` — Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка. Пример: `\"eyJxZCO2MiwiZGlyIjoiYXNjIn0\"`\n - `has_next: boolean` — Есть ли ещё данные на следующей странице. На последней странице — `false`. Пример: `true`\n - `has_prev: boolean` — Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`. Пример: `false`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": [\n {\n \"id\": 4821,\n \"entity_type\": \"discussion\",\n \"entity_id\": 334,\n \"chat_id\": 334,\n \"content\": \"Отчёт за неделю: продажи выросли на 10%\",\n \"parent_message_id\": 196093,\n \"files\": [\n {\n \"id\": 3560,\n \"key\": \"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png\",\n \"name\": \"congrat.png\",\n \"file_type\": \"image\",\n \"url\": \"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8\",\n \"width\": 1920,\n \"height\": 1080,\n \"duration_ms\": 5400\n }\n ],\n \"voice_content\": {\n \"duration_ms\": 5400,\n \"waveform\": \"4,8,12,20,16,10,6,3\",\n \"transcript\": \"Привет, посмотри пожалуйста последний отчёт\"\n },\n \"schedule\": {\n \"start_date\": \"2026-09-17T12:00:00.000Z\",\n \"end_date\": \"2026-12-31T12:00:00.000Z\",\n \"repetition\": {\n \"interval\": \"weekly\",\n \"days\": [\n 1,\n 3\n ],\n \"nth_day\": 2\n }\n },\n \"next_send_at\": \"2026-09-17T12:00:00.000Z\",\n \"created_at\": \"2026-09-16T10:00:00.000Z\",\n \"updated_at\": \"2026-09-16T10:00:00.000Z\"\n }\n ],\n \"meta\": {\n \"paginate\": {\n \"next_page\": \"eyJxZCO2MiwiZGlyIjomSNYjIn3\",\n \"prev_page\": \"eyJxZCO2MiwiZGlyIjoiYXNjIn0\",\n \"has_next\": true,\n \"has_prev\": false\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n**anyOf** - один из вариантов:\n\n- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)\n - `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403)\n - `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n - `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/drafts/{id}","summary":"Информация о черновике","scope":"drafts:read","plan":null,"auth":true,"paginated":false,"command":"pachca drafts get","docLink":"https://dev.pachca.com/api/drafts/get","describe":"# GET /drafts/{id} — Информация о черновике\n\n> **Скоуп:** `drafts:read`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор черновика\n\n## Эквивалентная команда\n\n```bash\npachca drafts get 4821 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/drafts/get\nПолная справка: `pachca api GET /drafts/{id} --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/drafts/{id}","description":"Информация о черновике\n\nЧерновик. У отложенного сообщения сюда же приходит его расписание.","parameters":[{"name":"id","in":"path","description":"Идентификатор черновика","required":true,"schema":{"type":"integer","format":"int32","example":4821},"example":4821}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Черновик или отложенное сообщение","required":["id","entity_type","entity_id","chat_id","content","parent_message_id","files","voice_content","schedule","next_send_at","created_at","updated_at"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор черновика","example":4821},"entity_type":{"description":"Куда уйдёт сообщение: в беседу или канал, в тред либо в личную переписку с сотрудником","example":"discussion","nullable":true,"allOf":[{"type":"string","description":"Тип сущности для сообщений","enum":["discussion","thread","user"],"x-enum-descriptions":{"discussion":"Беседа или канал","thread":"Тред","user":"Пользователь"},"$ref":"#/components/schemas/MessageEntityType"}]},"entity_id":{"type":"integer","format":"int32","description":"Идентификатор того, что названо в `entity_type`: беседы или канала, треда либо сотрудника","example":334,"nullable":true},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором лежит черновик. У черновика треда это чат самого треда.","example":334,"nullable":true},"content":{"type":"string","description":"Текст черновика. У черновика из одних вложений приходит пустая строка, а не `null`.","example":"Отчёт за неделю: продажи выросли на 10%"},"parent_message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, ответом на которое уйдёт черновик. `null`, если это не ответ.","example":196093,"nullable":true},"files":{"type":"array","description":"Прикреплённые файлы","items":{"type":"object","description":"Файл","required":["id","key","name","file_type","url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор файла","example":3560},"key":{"type":"string","description":"Путь к файлу","example":"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png"},"name":{"type":"string","description":"Название файла с расширением","example":"congrat.png"},"file_type":{"description":"Тип файла","example":"image","allOf":[{"type":"string","description":"Тип файла","enum":["file","image","audio","voice","video"],"x-enum-descriptions":{"file":"Обычный файл","image":"Изображение","audio":"Аудиофайл","voice":"Голосовое сообщение","video":"Видеофайл"},"$ref":"#/components/schemas/FileType"}]},"url":{"type":"string","description":"Ссылка на скачивание файла. Обычно ведёт прямо в хранилище и действует до 7 дней, а оставшийся срок может быть меньше — если такая ссылка вернула `403`, запросите сообщение заново и получите свежую. Если в пространстве включено шифрование или задан безопасный контур, ссылка ведёт на [Скачивание файла](GET /files/{id}): забирать такой файл нужно с заголовком `Authorization`, а токену нужен скоуп `files:read`.","example":"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8"},"width":{"type":"integer","format":"int32","description":"Ширина изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке.","example":1920,"nullable":true},"height":{"type":"integer","format":"int32","description":"Высота изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке.","example":1080,"nullable":true},"duration_ms":{"type":"integer","format":"int32","description":"Длительность в миллисекундах у голосового, аудио- и видеофайла. `null` у остальных файлов и если длительность не была передана при загрузке.","example":5400,"nullable":true}},"$ref":"#/components/schemas/File"}},"voice_content":{"type":"object","description":"Голосовое сообщение. `null`, если голосового вложения нет. Расшифровка в `transcript` у черновика всегда `null` — она запускается после отправки.","nullable":true,"allOf":[{"type":"object","description":"Данные голосового сообщения","required":["duration_ms","waveform","transcript"],"properties":{"duration_ms":{"type":"integer","format":"int32","description":"Длительность голосового сообщения в миллисекундах","example":5400},"waveform":{"type":"string","description":"Форма волны (амплитуды) для визуализации голосового сообщения","example":"4,8,12,20,16,10,6,3"},"transcript":{"type":"string","description":"Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна.","example":"Привет, посмотри пожалуйста последний отчёт","nullable":true}},"$ref":"#/components/schemas/VoiceContent"}]},"schedule":{"type":"object","description":"Расписание отправки. `null` у обычного черновика.","nullable":true,"allOf":[{"type":"object","description":"Расписание отправки отложенного сообщения","required":["start_date","end_date","repetition"],"properties":{"start_date":{"type":"string","format":"date-time","description":"Первая отправка (ISO-8601). Из неё берутся время суток, число месяца и день недели, по которым дальше строится повтор.","example":"2026-09-17T12:00:00.000Z"},"end_date":{"type":"string","format":"date-time","description":"Дата, после которой повтор прекращается (ISO-8601). `null`, если конец не задан.","example":"2026-12-31T12:00:00.000Z","nullable":true},"repetition":{"description":"Правило повтора","allOf":[{"type":"object","description":"Правило повтора отложенного сообщения","required":["interval"],"properties":{"interval":{"description":"Периодичность","example":"weekly","allOf":[{"type":"string","description":"Периодичность повтора отложенного сообщения","enum":["once","daily","weekly","monthly","every_2_months","every_3_months","every_4_months","every_6_months","yearly"],"x-enum-descriptions":{"once":"Один раз","daily":"Каждый день","weekly":"Каждую неделю","monthly":"Каждый месяц","every_2_months":"Раз в два месяца","every_3_months":"Раз в три месяца","every_4_months":"Раз в четыре месяца","every_6_months":"Раз в полгода","yearly":"Раз в год"},"$ref":"#/components/schemas/DraftRepetitionInterval"}]},"days":{"type":"array","description":"Дни недели, по которым уходит сообщение: 0 — воскресенье, 6 — суббота. Приходит только при периодичности `weekly`.","example":[1,3],"items":{"type":"integer","format":"int32"}},"nth_day":{"type":"integer","format":"int32","description":"Какой по счёту день недели в месяце: от 1 до 4 — первый, второй, третий, четвёртый, 5 — последний. Приходит только при периодичности по месяцам, а `null` в ней означает повтор по числу месяца из `start_date`.","example":2,"nullable":true}},"$ref":"#/components/schemas/DraftRepetition"}]}},"$ref":"#/components/schemas/DraftSchedule"}]},"next_send_at":{"type":"string","format":"date-time","description":"Ближайшая отправка (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null` у обычного черновика.","example":"2026-09-17T12:00:00.000Z","nullable":true},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2026-09-16T10:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","description":"Дата и время последнего изменения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2026-09-16T10:00:00.000Z"}},"$ref":"#/components/schemas/Draft"}}}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"},{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}]}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"drafts:read","scopeRoles":["owner","admin","user","multi_guest"]},"paginated":false},"docs":"# Информация о черновике\n\n**Метод**: `GET`\n\n**Путь**: `/drafts/{id}`\n\n> **Скоуп:** `drafts:read`\n\nЧерновик. У отложенного сообщения сюда же приходит его расписание.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор черновика\n\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/drafts/4821\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Черновик или отложенное сообщение\n - `id: integer, int32` (required) — Идентификатор черновика. Пример: `4821`\n - `entity_type: string` (required) — Куда уйдёт сообщение: в беседу или канал, в тред либо в личную переписку с сотрудником\n Значения: `discussion` — Беседа или канал, `thread` — Тред, `user` — Пользователь\n - `entity_id: integer, int32` (required, nullable) — Идентификатор того, что названо в `entity_type`: беседы или канала, треда либо сотрудника. Пример: `334`\n - `chat_id: integer, int32` (required, nullable) — Идентификатор чата, в котором лежит черновик. У черновика треда это чат самого треда. Пример: `334`\n - `content: string` (required) — Текст черновика. У черновика из одних вложений приходит пустая строка, а не `null`. Пример: `\"Отчёт за неделю: продажи выросли на 10%\"`\n - `parent_message_id: integer, int32` (required, nullable) — Идентификатор сообщения, ответом на которое уйдёт черновик. `null`, если это не ответ. Пример: `196093`\n - `files: array of object` (required) — Прикреплённые файлы\n - `id: integer, int32` (required) — Идентификатор файла. Пример: `3560`\n - `key: string` (required) — Путь к файлу. Пример: `\"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png\"`\n - `name: string` (required) — Название файла с расширением. Пример: `\"congrat.png\"`\n - `file_type: string` (required) — Тип файла\n Значения: `file` — Обычный файл, `image` — Изображение, `audio` — Аудиофайл, `voice` — Голосовое сообщение, `video` — Видеофайл\n - `url: string` (required) — Ссылка на скачивание файла. Обычно ведёт прямо в хранилище и действует до 7 дней, а оставшийся срок может быть меньше — если такая ссылка вернула `403`, запросите сообщение заново и получите свежую. Если в пространстве включено шифрование или задан безопасный контур, ссылка ведёт на [Скачивание файла](GET /files/{id}): забирать такой файл нужно с заголовком `Authorization`, а токену нужен скоуп `files:read`. Пример: `\"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8\"`\n - `width: integer, int32` (nullable) — Ширина изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке. Пример: `1920`\n - `height: integer, int32` (nullable) — Высота изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке. Пример: `1080`\n - `duration_ms: integer, int32` (nullable) — Длительность в миллисекундах у голосового, аудио- и видеофайла. `null` у остальных файлов и если длительность не была передана при загрузке. Пример: `5400`\n - `voice_content: object` (required) — Голосовое сообщение. `null`, если голосового вложения нет. Расшифровка в `transcript` у черновика всегда `null` — она запускается после отправки.\n - `duration_ms: integer, int32` (required) — Длительность голосового сообщения в миллисекундах. Пример: `5400`\n - `waveform: string` (required) — Форма волны (амплитуды) для визуализации голосового сообщения. Пример: `\"4,8,12,20,16,10,6,3\"`\n - `transcript: string` (required, nullable) — Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна. Пример: `\"Привет, посмотри пожалуйста последний отчёт\"`\n - `schedule: object` (required) — Расписание отправки. `null` у обычного черновика.\n - `start_date: date-time` (required) — Первая отправка (ISO-8601). Из неё берутся время суток, число месяца и день недели, по которым дальше строится повтор. Пример: `\"2026-09-17T12:00:00.000Z\"`\n - `end_date: date-time` (required, nullable) — Дата, после которой повтор прекращается (ISO-8601). `null`, если конец не задан. Пример: `\"2026-12-31T12:00:00.000Z\"`\n - `repetition: object` (required) — Правило повтора\n - `interval: string` (required) — Периодичность\n Значения: `once` — Один раз, `daily` — Каждый день, `weekly` — Каждую неделю, `monthly` — Каждый месяц, `every_2_months` — Раз в два месяца, `every_3_months` — Раз в три месяца, `every_4_months` — Раз в четыре месяца, `every_6_months` — Раз в полгода, `yearly` — Раз в год\n - `days: array of integer` — Дни недели, по которым уходит сообщение: 0 — воскресенье, 6 — суббота. Приходит только при периодичности `weekly`. Пример: `[1,3]`\n - `nth_day: integer, int32` (nullable) — Какой по счёту день недели в месяце: от 1 до 4 — первый, второй, третий, четвёртый, 5 — последний. Приходит только при периодичности по месяцам, а `null` в ней означает повтор по числу месяца из `start_date`. Пример: `2`\n - `next_send_at: date-time` (required, nullable) — Ближайшая отправка (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null` у обычного черновика. Пример: `\"2026-09-17T12:00:00.000Z\"`\n - `created_at: date-time` (required) — Дата и время создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2026-09-16T10:00:00.000Z\"`\n - `updated_at: date-time` (required) — Дата и время последнего изменения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2026-09-16T10:00:00.000Z\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 4821,\n \"entity_type\": \"discussion\",\n \"entity_id\": 334,\n \"chat_id\": 334,\n \"content\": \"Отчёт за неделю: продажи выросли на 10%\",\n \"parent_message_id\": 196093,\n \"files\": [\n {\n \"id\": 3560,\n \"key\": \"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png\",\n \"name\": \"congrat.png\",\n \"file_type\": \"image\",\n \"url\": \"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8\",\n \"width\": 1920,\n \"height\": 1080,\n \"duration_ms\": 5400\n }\n ],\n \"voice_content\": {\n \"duration_ms\": 5400,\n \"waveform\": \"4,8,12,20,16,10,6,3\",\n \"transcript\": \"Привет, посмотри пожалуйста последний отчёт\"\n },\n \"schedule\": {\n \"start_date\": \"2026-09-17T12:00:00.000Z\",\n \"end_date\": \"2026-12-31T12:00:00.000Z\",\n \"repetition\": {\n \"interval\": \"weekly\",\n \"days\": [\n 1,\n 3\n ],\n \"nth_day\": 2\n }\n },\n \"next_send_at\": \"2026-09-17T12:00:00.000Z\",\n \"created_at\": \"2026-09-16T10:00:00.000Z\",\n \"updated_at\": \"2026-09-16T10:00:00.000Z\"\n }\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n**anyOf** - один из вариантов:\n\n- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)\n - `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403)\n - `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n - `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"PUT","path":"/drafts/{id}","summary":"Редактирование черновика","scope":"drafts:write","plan":null,"auth":true,"paginated":false,"command":"pachca drafts update","docLink":"https://dev.pachca.com/api/drafts/update","describe":"# PUT /drafts/{id} — Редактирование черновика\n\n> **Скоуп:** `drafts:write`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор черновика\n\n## Тело запроса\n\n- `draft: object` (required) — Собранный объект изменяемых параметров черновика\n - `content: string` — Текст черновика\n - `parent_message_id: integer, int32` (nullable) — Идентификатор сообщения, ответом на которое уйдёт черновик. `null` снимает ответ.\n - `files: array of object` (max items: 10) — Прикрепляемые файлы, не больше десяти. Переданный массив заменяет прежний состав: пустой снимает все вложения, а чтобы сохранить уже прикреплённый файл, передайте его с `id`. Без этого поля вложения остаются как были.\n - `id: integer, int32` — Идентификатор уже прикреплённого файла. Передаётся при редактировании, чтобы сохранить вложение как есть. У нового файла не указывается.\n - `key: string` (required, max length: 1000) — Путь к файлу, полученный в методе [Загрузка файла](POST /direct_url)\n - `name: string` (required, max length: 255) — Название файла, которое вы хотите отображать пользователю\n - `file_type: string` — Тип файла\n Значения: `file` — Обычный файл, `image` — Изображение, `audio` — Аудиофайл, `voice` — Голосовое сообщение, `video` — Видеофайл\n - `size: integer, int64` — Размер файла в байтах, отображаемый пользователю\n - `width: integer, int32` — Ширина изображения в пикселях\n - `height: integer, int32` — Высота изображения в пикселях\n - `duration_ms: integer, int32` — Длительность в миллисекундах. Обязательна для голосового сообщения (`file_type` — `voice`). Голосовое сообщение длиннее 30 минут (1 800 000 мс) отклоняется с `422`.\n - `waveform: string` (max length: 256) — Форма волны для визуализации. Обязательна для голосового сообщения (`file_type` — `voice`).\n - `schedule: object` — Расписание отправки. У обычного черновика оно превращает его в отложенное сообщение. У отложенного расписание можно изменить, но не снять: `null` в ответ даст `422` с кодом `draft_type_change_forbidden`.\n - `start_date: date-time` (required) — Первая отправка (ISO-8601). Из неё берутся время суток, число месяца и день недели, по которым дальше строится повтор. Смещение вида `+03:00` учитывается, время без смещения считается UTC.\n - `end_date: date-time` (nullable) — Дата, после которой повтор прекращается (ISO-8601). Без неё повтор идёт бессрочно.\n - `repetition: object` (required) — Правило повтора\n - `interval: string` (required) — Периодичность\n Значения: `once` — Один раз, `daily` — Каждый день, `weekly` — Каждую неделю, `monthly` — Каждый месяц, `every_2_months` — Раз в два месяца, `every_3_months` — Раз в три месяца, `every_4_months` — Раз в четыре месяца, `every_6_months` — Раз в полгода, `yearly` — Раз в год\n - `days: array of integer` (max items: 7) — Дни недели, по которым уходит сообщение: 0 — воскресенье, 6 — суббота. Учитывается только при периодичности `weekly`, а если не передать, берётся день недели из `start_date`.\n - `nth_day: integer, int32` (nullable, min: 1, max: 5) — Какой по счёту день недели в месяце: от 1 до 4 — первый, второй, третий, четвёртый, 5 — последний. Учитывается только при периодичности по месяцам, а без него повтор идёт по числу месяца из `start_date`.\n\n## Эквивалентная команда\n\n```bash\npachca drafts update 4821 \\\n --content='Отчёт за неделю: продажи выросли на 10%' \\\n --parent-message-id=196093 \\\n --files='[{\"id\":3560,\"key\":\"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png\",\"name\":\"logo.png\",\"file_type\":\"image\",\"size\":12345,\"width\":800,\"height\":600,\"duration_ms\":5400,\"waveform\":\"4,8,12,20,16,10,6,3\"}]' \\\n --schedule='{\"start_date\":\"2026-09-17T12:00:00.000Z\",\"end_date\":\"2026-12-31T12:00:00.000Z\",\"repetition\":{\"interval\":\"weekly\",\"days\":[1,3],\"nth_day\":2}}' \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/drafts/update\nПолная справка: `pachca api PUT /drafts/{id} --docs` · схема: `--spec`\n","spec":{"method":"PUT","path":"/drafts/{id}","description":"Редактирование черновика\n\nМеняет свой черновик: текст, вложения, расписание и сообщение, ответом на которое он уйдёт (`parent_message_id`). Перезаписываются только переданные поля, поэтому дописать текст, не трогая вложения, можно одним `content`.\n\nОбычный черновик превращается в отложенное сообщение, если передать `schedule`. Обратный переход запрещён: `schedule: null` у отложенного отвечает `422` с кодом `draft_type_change_forbidden`. Чтобы отменить отправку, черновик убирают методом [Удаление черновика](DELETE /drafts/{id}).\n\nПравить можно, только пока в чат разрешено писать. Если доступ к чату потерян, редактирование ответит `403`, а удаление всё равно сработает.\n\nЧат черновика этим методом не меняется, `entity_type` и `entity_id` он не принимает. Чтобы перенести черновик в другой чат, создайте новый и удалите прежний.","parameters":[{"name":"id","in":"path","description":"Идентификатор черновика","required":true,"schema":{"type":"integer","format":"int32","example":4821},"example":4821}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на обновление черновика","required":["draft"],"properties":{"draft":{"type":"object","description":"Собранный объект изменяемых параметров черновика","properties":{"content":{"type":"string","description":"Текст черновика","example":"Отчёт за неделю: продажи выросли на 10%"},"parent_message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, ответом на которое уйдёт черновик. `null` снимает ответ.","example":196093,"nullable":true},"files":{"type":"array","description":"Прикрепляемые файлы, не больше десяти. Переданный массив заменяет прежний состав: пустой снимает все вложения, а чтобы сохранить уже прикреплённый файл, передайте его с `id`. Без этого поля вложения остаются как были.","maxItems":10,"items":{"type":"object","description":"Прикрепляемый к черновику файл","required":["key","name"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор уже прикреплённого файла. Передаётся при редактировании, чтобы сохранить вложение как есть. У нового файла не указывается.","example":3560},"key":{"type":"string","description":"Путь к файлу, полученный в методе [Загрузка файла](POST /direct_url)","example":"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png","maxLength":1000},"name":{"type":"string","description":"Название файла, которое вы хотите отображать пользователю","example":"logo.png","maxLength":255},"file_type":{"description":"Тип файла","example":"image","allOf":[{"type":"string","description":"Тип файла","enum":["file","image","audio","voice","video"],"x-enum-descriptions":{"file":"Обычный файл","image":"Изображение","audio":"Аудиофайл","voice":"Голосовое сообщение","video":"Видеофайл"},"$ref":"#/components/schemas/FileType"}]},"size":{"type":"integer","format":"int64","description":"Размер файла в байтах, отображаемый пользователю","example":12345},"width":{"type":"integer","format":"int32","description":"Ширина изображения в пикселях","example":800},"height":{"type":"integer","format":"int32","description":"Высота изображения в пикселях","example":600},"duration_ms":{"type":"integer","format":"int32","description":"Длительность в миллисекундах. Обязательна для голосового сообщения (`file_type` — `voice`). Голосовое сообщение длиннее 30 минут (1 800 000 мс) отклоняется с `422`.","example":5400},"waveform":{"type":"string","description":"Форма волны для визуализации. Обязательна для голосового сообщения (`file_type` — `voice`).","example":"4,8,12,20,16,10,6,3","maxLength":256}},"$ref":"#/components/schemas/DraftFileRequest"}},"schedule":{"type":"object","description":"Расписание отправки. У обычного черновика оно превращает его в отложенное сообщение. У отложенного расписание можно изменить, но не снять: `null` в ответ даст `422` с кодом `draft_type_change_forbidden`.","nullable":true,"allOf":[{"type":"object","description":"Расписание отправки в запросе","required":["start_date","repetition"],"properties":{"start_date":{"type":"string","format":"date-time","description":"Первая отправка (ISO-8601). Из неё берутся время суток, число месяца и день недели, по которым дальше строится повтор. Смещение вида `+03:00` учитывается, время без смещения считается UTC.","example":"2026-09-17T12:00:00.000Z"},"end_date":{"type":"string","format":"date-time","description":"Дата, после которой повтор прекращается (ISO-8601). Без неё повтор идёт бессрочно.","example":"2026-12-31T12:00:00.000Z","nullable":true},"repetition":{"description":"Правило повтора","allOf":[{"type":"object","description":"Правило повтора в запросе","required":["interval"],"properties":{"interval":{"description":"Периодичность","example":"weekly","allOf":[{"type":"string","description":"Периодичность повтора отложенного сообщения","enum":["once","daily","weekly","monthly","every_2_months","every_3_months","every_4_months","every_6_months","yearly"],"x-enum-descriptions":{"once":"Один раз","daily":"Каждый день","weekly":"Каждую неделю","monthly":"Каждый месяц","every_2_months":"Раз в два месяца","every_3_months":"Раз в три месяца","every_4_months":"Раз в четыре месяца","every_6_months":"Раз в полгода","yearly":"Раз в год"},"$ref":"#/components/schemas/DraftRepetitionInterval"}]},"days":{"type":"array","description":"Дни недели, по которым уходит сообщение: 0 — воскресенье, 6 — суббота. Учитывается только при периодичности `weekly`, а если не передать, берётся день недели из `start_date`.","example":[1,3],"maxItems":7,"items":{"type":"integer","format":"int32"}},"nth_day":{"type":"integer","format":"int32","description":"Какой по счёту день недели в месяце: от 1 до 4 — первый, второй, третий, четвёртый, 5 — последний. Учитывается только при периодичности по месяцам, а без него повтор идёт по числу месяца из `start_date`.","example":2,"nullable":true,"minimum":1,"maximum":5}},"$ref":"#/components/schemas/DraftRepetitionRequest"}]}},"$ref":"#/components/schemas/DraftScheduleRequest"}]}}}},"$ref":"#/components/schemas/DraftUpdateRequest"}}}},"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Черновик или отложенное сообщение","required":["id","entity_type","entity_id","chat_id","content","parent_message_id","files","voice_content","schedule","next_send_at","created_at","updated_at"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор черновика","example":4821},"entity_type":{"description":"Куда уйдёт сообщение: в беседу или канал, в тред либо в личную переписку с сотрудником","example":"discussion","nullable":true,"allOf":[{"type":"string","description":"Тип сущности для сообщений","enum":["discussion","thread","user"],"x-enum-descriptions":{"discussion":"Беседа или канал","thread":"Тред","user":"Пользователь"},"$ref":"#/components/schemas/MessageEntityType"}]},"entity_id":{"type":"integer","format":"int32","description":"Идентификатор того, что названо в `entity_type`: беседы или канала, треда либо сотрудника","example":334,"nullable":true},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором лежит черновик. У черновика треда это чат самого треда.","example":334,"nullable":true},"content":{"type":"string","description":"Текст черновика. У черновика из одних вложений приходит пустая строка, а не `null`.","example":"Отчёт за неделю: продажи выросли на 10%"},"parent_message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, ответом на которое уйдёт черновик. `null`, если это не ответ.","example":196093,"nullable":true},"files":{"type":"array","description":"Прикреплённые файлы","items":{"type":"object","description":"Файл","required":["id","key","name","file_type","url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор файла","example":3560},"key":{"type":"string","description":"Путь к файлу","example":"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png"},"name":{"type":"string","description":"Название файла с расширением","example":"congrat.png"},"file_type":{"description":"Тип файла","example":"image","allOf":[{"type":"string","description":"Тип файла","enum":["file","image","audio","voice","video"],"x-enum-descriptions":{"file":"Обычный файл","image":"Изображение","audio":"Аудиофайл","voice":"Голосовое сообщение","video":"Видеофайл"},"$ref":"#/components/schemas/FileType"}]},"url":{"type":"string","description":"Ссылка на скачивание файла. Обычно ведёт прямо в хранилище и действует до 7 дней, а оставшийся срок может быть меньше — если такая ссылка вернула `403`, запросите сообщение заново и получите свежую. Если в пространстве включено шифрование или задан безопасный контур, ссылка ведёт на [Скачивание файла](GET /files/{id}): забирать такой файл нужно с заголовком `Authorization`, а токену нужен скоуп `files:read`.","example":"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8"},"width":{"type":"integer","format":"int32","description":"Ширина изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке.","example":1920,"nullable":true},"height":{"type":"integer","format":"int32","description":"Высота изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке.","example":1080,"nullable":true},"duration_ms":{"type":"integer","format":"int32","description":"Длительность в миллисекундах у голосового, аудио- и видеофайла. `null` у остальных файлов и если длительность не была передана при загрузке.","example":5400,"nullable":true}},"$ref":"#/components/schemas/File"}},"voice_content":{"type":"object","description":"Голосовое сообщение. `null`, если голосового вложения нет. Расшифровка в `transcript` у черновика всегда `null` — она запускается после отправки.","nullable":true,"allOf":[{"type":"object","description":"Данные голосового сообщения","required":["duration_ms","waveform","transcript"],"properties":{"duration_ms":{"type":"integer","format":"int32","description":"Длительность голосового сообщения в миллисекундах","example":5400},"waveform":{"type":"string","description":"Форма волны (амплитуды) для визуализации голосового сообщения","example":"4,8,12,20,16,10,6,3"},"transcript":{"type":"string","description":"Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна.","example":"Привет, посмотри пожалуйста последний отчёт","nullable":true}},"$ref":"#/components/schemas/VoiceContent"}]},"schedule":{"type":"object","description":"Расписание отправки. `null` у обычного черновика.","nullable":true,"allOf":[{"type":"object","description":"Расписание отправки отложенного сообщения","required":["start_date","end_date","repetition"],"properties":{"start_date":{"type":"string","format":"date-time","description":"Первая отправка (ISO-8601). Из неё берутся время суток, число месяца и день недели, по которым дальше строится повтор.","example":"2026-09-17T12:00:00.000Z"},"end_date":{"type":"string","format":"date-time","description":"Дата, после которой повтор прекращается (ISO-8601). `null`, если конец не задан.","example":"2026-12-31T12:00:00.000Z","nullable":true},"repetition":{"description":"Правило повтора","allOf":[{"type":"object","description":"Правило повтора отложенного сообщения","required":["interval"],"properties":{"interval":{"description":"Периодичность","example":"weekly","allOf":[{"type":"string","description":"Периодичность повтора отложенного сообщения","enum":["once","daily","weekly","monthly","every_2_months","every_3_months","every_4_months","every_6_months","yearly"],"x-enum-descriptions":{"once":"Один раз","daily":"Каждый день","weekly":"Каждую неделю","monthly":"Каждый месяц","every_2_months":"Раз в два месяца","every_3_months":"Раз в три месяца","every_4_months":"Раз в четыре месяца","every_6_months":"Раз в полгода","yearly":"Раз в год"},"$ref":"#/components/schemas/DraftRepetitionInterval"}]},"days":{"type":"array","description":"Дни недели, по которым уходит сообщение: 0 — воскресенье, 6 — суббота. Приходит только при периодичности `weekly`.","example":[1,3],"items":{"type":"integer","format":"int32"}},"nth_day":{"type":"integer","format":"int32","description":"Какой по счёту день недели в месяце: от 1 до 4 — первый, второй, третий, четвёртый, 5 — последний. Приходит только при периодичности по месяцам, а `null` в ней означает повтор по числу месяца из `start_date`.","example":2,"nullable":true}},"$ref":"#/components/schemas/DraftRepetition"}]}},"$ref":"#/components/schemas/DraftSchedule"}]},"next_send_at":{"type":"string","format":"date-time","description":"Ближайшая отправка (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null` у обычного черновика.","example":"2026-09-17T12:00:00.000Z","nullable":true},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2026-09-16T10:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","description":"Дата и время последнего изменения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2026-09-16T10:00:00.000Z"}},"$ref":"#/components/schemas/Draft"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"},{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}]}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"drafts:write","scopeRoles":["owner","admin","user","multi_guest"]},"paginated":false},"docs":"# Редактирование черновика\n\n**Метод**: `PUT`\n\n**Путь**: `/drafts/{id}`\n\n> **Скоуп:** `drafts:write`\n\nМеняет свой черновик: текст, вложения, расписание и сообщение, ответом на которое он уйдёт (`parent_message_id`). Перезаписываются только переданные поля, поэтому дописать текст, не трогая вложения, можно одним `content`.\n\nОбычный черновик превращается в отложенное сообщение, если передать `schedule`. Обратный переход запрещён: `schedule: null` у отложенного отвечает `422` с кодом `draft_type_change_forbidden`. Чтобы отменить отправку, черновик убирают методом [Удаление черновика](DELETE /drafts/{id}).\n\nПравить можно, только пока в чат разрешено писать. Если доступ к чату потерян, редактирование ответит `403`, а удаление всё равно сработает.\n\nЧат черновика этим методом не меняется, `entity_type` и `entity_id` он не принимает. Чтобы перенести черновик в другой чат, создайте новый и удалите прежний.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор черновика\n\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `draft: object` (required) — Собранный объект изменяемых параметров черновика\n - `content: string` — Текст черновика. Пример: `\"Отчёт за неделю: продажи выросли на 10%\"`\n - `parent_message_id: integer, int32` (nullable) — Идентификатор сообщения, ответом на которое уйдёт черновик. `null` снимает ответ. Пример: `196093`\n - `files: array of object` (max items: 10) — Прикрепляемые файлы, не больше десяти. Переданный массив заменяет прежний состав: пустой снимает все вложения, а чтобы сохранить уже прикреплённый файл, передайте его с `id`. Без этого поля вложения остаются как были.\n - `id: integer, int32` — Идентификатор уже прикреплённого файла. Передаётся при редактировании, чтобы сохранить вложение как есть. У нового файла не указывается. Пример: `3560`\n - `key: string` (required, max length: 1000) — Путь к файлу, полученный в методе [Загрузка файла](POST /direct_url). Пример: `\"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png\"`\n - `name: string` (required, max length: 255) — Название файла, которое вы хотите отображать пользователю. Пример: `\"logo.png\"`\n - `file_type: string` — Тип файла\n Значения: `file` — Обычный файл, `image` — Изображение, `audio` — Аудиофайл, `voice` — Голосовое сообщение, `video` — Видеофайл\n - `size: integer, int64` — Размер файла в байтах, отображаемый пользователю. Пример: `12345`\n - `width: integer, int32` — Ширина изображения в пикселях. Пример: `800`\n - `height: integer, int32` — Высота изображения в пикселях. Пример: `600`\n - `duration_ms: integer, int32` — Длительность в миллисекундах. Обязательна для голосового сообщения (`file_type` — `voice`). Голосовое сообщение длиннее 30 минут (1 800 000 мс) отклоняется с `422`. Пример: `5400`\n - `waveform: string` (max length: 256) — Форма волны для визуализации. Обязательна для голосового сообщения (`file_type` — `voice`). Пример: `\"4,8,12,20,16,10,6,3\"`\n - `schedule: object` — Расписание отправки. У обычного черновика оно превращает его в отложенное сообщение. У отложенного расписание можно изменить, но не снять: `null` в ответ даст `422` с кодом `draft_type_change_forbidden`.\n - `start_date: date-time` (required) — Первая отправка (ISO-8601). Из неё берутся время суток, число месяца и день недели, по которым дальше строится повтор. Смещение вида `+03:00` учитывается, время без смещения считается UTC. Пример: `\"2026-09-17T12:00:00.000Z\"`\n - `end_date: date-time` (nullable) — Дата, после которой повтор прекращается (ISO-8601). Без неё повтор идёт бессрочно. Пример: `\"2026-12-31T12:00:00.000Z\"`\n - `repetition: object` (required) — Правило повтора\n - `interval: string` (required) — Периодичность\n Значения: `once` — Один раз, `daily` — Каждый день, `weekly` — Каждую неделю, `monthly` — Каждый месяц, `every_2_months` — Раз в два месяца, `every_3_months` — Раз в три месяца, `every_4_months` — Раз в четыре месяца, `every_6_months` — Раз в полгода, `yearly` — Раз в год\n - `days: array of integer` (max items: 7) — Дни недели, по которым уходит сообщение: 0 — воскресенье, 6 — суббота. Учитывается только при периодичности `weekly`, а если не передать, берётся день недели из `start_date`. Пример: `[1,3]`\n - `nth_day: integer, int32` (nullable, min: 1, max: 5) — Какой по счёту день недели в месяце: от 1 до 4 — первый, второй, третий, четвёртый, 5 — последний. Учитывается только при периодичности по месяцам, а без него повтор идёт по числу месяца из `start_date`. Пример: `2`\n\n### Пример\n\n```json\n{\n \"draft\": {\n \"content\": \"Отчёт за неделю: продажи выросли на 10%\",\n \"parent_message_id\": 196093,\n \"files\": [\n {\n \"id\": 3560,\n \"key\": \"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png\",\n \"name\": \"logo.png\",\n \"file_type\": \"image\",\n \"size\": 12345,\n \"width\": 800,\n \"height\": 600,\n \"duration_ms\": 5400,\n \"waveform\": \"4,8,12,20,16,10,6,3\"\n }\n ],\n \"schedule\": {\n \"start_date\": \"2026-09-17T12:00:00.000Z\",\n \"end_date\": \"2026-12-31T12:00:00.000Z\",\n \"repetition\": {\n \"interval\": \"weekly\",\n \"days\": [\n 1,\n 3\n ],\n \"nth_day\": 2\n }\n }\n }\n}\n```\n\n## Пример запроса\n\n```bash\ncurl -X PUT \"https://api.pachca.com/api/shared/v1/drafts/4821\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"draft\": {\n \"content\": \"Отчёт за неделю: продажи выросли на 10%\",\n \"parent_message_id\": 196093,\n \"files\": [\n {\n \"id\": 3560,\n \"key\": \"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png\",\n \"name\": \"logo.png\",\n \"file_type\": \"image\",\n \"size\": 12345,\n \"width\": 800,\n \"height\": 600,\n \"duration_ms\": 5400,\n \"waveform\": \"4,8,12,20,16,10,6,3\"\n }\n ],\n \"schedule\": {\n \"start_date\": \"2026-09-17T12:00:00.000Z\",\n \"end_date\": \"2026-12-31T12:00:00.000Z\",\n \"repetition\": {\n \"interval\": \"weekly\",\n \"days\": [\n 1,\n 3\n ],\n \"nth_day\": 2\n }\n }\n }\n}'\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Черновик или отложенное сообщение\n - `id: integer, int32` (required) — Идентификатор черновика. Пример: `4821`\n - `entity_type: string` (required) — Куда уйдёт сообщение: в беседу или канал, в тред либо в личную переписку с сотрудником\n Значения: `discussion` — Беседа или канал, `thread` — Тред, `user` — Пользователь\n - `entity_id: integer, int32` (required, nullable) — Идентификатор того, что названо в `entity_type`: беседы или канала, треда либо сотрудника. Пример: `334`\n - `chat_id: integer, int32` (required, nullable) — Идентификатор чата, в котором лежит черновик. У черновика треда это чат самого треда. Пример: `334`\n - `content: string` (required) — Текст черновика. У черновика из одних вложений приходит пустая строка, а не `null`. Пример: `\"Отчёт за неделю: продажи выросли на 10%\"`\n - `parent_message_id: integer, int32` (required, nullable) — Идентификатор сообщения, ответом на которое уйдёт черновик. `null`, если это не ответ. Пример: `196093`\n - `files: array of object` (required) — Прикреплённые файлы\n - `id: integer, int32` (required) — Идентификатор файла. Пример: `3560`\n - `key: string` (required) — Путь к файлу. Пример: `\"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png\"`\n - `name: string` (required) — Название файла с расширением. Пример: `\"congrat.png\"`\n - `file_type: string` (required) — Тип файла\n Значения: `file` — Обычный файл, `image` — Изображение, `audio` — Аудиофайл, `voice` — Голосовое сообщение, `video` — Видеофайл\n - `url: string` (required) — Ссылка на скачивание файла. Обычно ведёт прямо в хранилище и действует до 7 дней, а оставшийся срок может быть меньше — если такая ссылка вернула `403`, запросите сообщение заново и получите свежую. Если в пространстве включено шифрование или задан безопасный контур, ссылка ведёт на [Скачивание файла](GET /files/{id}): забирать такой файл нужно с заголовком `Authorization`, а токену нужен скоуп `files:read`. Пример: `\"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8\"`\n - `width: integer, int32` (nullable) — Ширина изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке. Пример: `1920`\n - `height: integer, int32` (nullable) — Высота изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке. Пример: `1080`\n - `duration_ms: integer, int32` (nullable) — Длительность в миллисекундах у голосового, аудио- и видеофайла. `null` у остальных файлов и если длительность не была передана при загрузке. Пример: `5400`\n - `voice_content: object` (required) — Голосовое сообщение. `null`, если голосового вложения нет. Расшифровка в `transcript` у черновика всегда `null` — она запускается после отправки.\n - `duration_ms: integer, int32` (required) — Длительность голосового сообщения в миллисекундах. Пример: `5400`\n - `waveform: string` (required) — Форма волны (амплитуды) для визуализации голосового сообщения. Пример: `\"4,8,12,20,16,10,6,3\"`\n - `transcript: string` (required, nullable) — Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна. Пример: `\"Привет, посмотри пожалуйста последний отчёт\"`\n - `schedule: object` (required) — Расписание отправки. `null` у обычного черновика.\n - `start_date: date-time` (required) — Первая отправка (ISO-8601). Из неё берутся время суток, число месяца и день недели, по которым дальше строится повтор. Пример: `\"2026-09-17T12:00:00.000Z\"`\n - `end_date: date-time` (required, nullable) — Дата, после которой повтор прекращается (ISO-8601). `null`, если конец не задан. Пример: `\"2026-12-31T12:00:00.000Z\"`\n - `repetition: object` (required) — Правило повтора\n - `interval: string` (required) — Периодичность\n Значения: `once` — Один раз, `daily` — Каждый день, `weekly` — Каждую неделю, `monthly` — Каждый месяц, `every_2_months` — Раз в два месяца, `every_3_months` — Раз в три месяца, `every_4_months` — Раз в четыре месяца, `every_6_months` — Раз в полгода, `yearly` — Раз в год\n - `days: array of integer` — Дни недели, по которым уходит сообщение: 0 — воскресенье, 6 — суббота. Приходит только при периодичности `weekly`. Пример: `[1,3]`\n - `nth_day: integer, int32` (nullable) — Какой по счёту день недели в месяце: от 1 до 4 — первый, второй, третий, четвёртый, 5 — последний. Приходит только при периодичности по месяцам, а `null` в ней означает повтор по числу месяца из `start_date`. Пример: `2`\n - `next_send_at: date-time` (required, nullable) — Ближайшая отправка (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null` у обычного черновика. Пример: `\"2026-09-17T12:00:00.000Z\"`\n - `created_at: date-time` (required) — Дата и время создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2026-09-16T10:00:00.000Z\"`\n - `updated_at: date-time` (required) — Дата и время последнего изменения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2026-09-16T10:00:00.000Z\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 4821,\n \"entity_type\": \"discussion\",\n \"entity_id\": 334,\n \"chat_id\": 334,\n \"content\": \"Отчёт за неделю: продажи выросли на 10%\",\n \"parent_message_id\": 196093,\n \"files\": [\n {\n \"id\": 3560,\n \"key\": \"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png\",\n \"name\": \"congrat.png\",\n \"file_type\": \"image\",\n \"url\": \"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8\",\n \"width\": 1920,\n \"height\": 1080,\n \"duration_ms\": 5400\n }\n ],\n \"voice_content\": {\n \"duration_ms\": 5400,\n \"waveform\": \"4,8,12,20,16,10,6,3\",\n \"transcript\": \"Привет, посмотри пожалуйста последний отчёт\"\n },\n \"schedule\": {\n \"start_date\": \"2026-09-17T12:00:00.000Z\",\n \"end_date\": \"2026-12-31T12:00:00.000Z\",\n \"repetition\": {\n \"interval\": \"weekly\",\n \"days\": [\n 1,\n 3\n ],\n \"nth_day\": 2\n }\n },\n \"next_send_at\": \"2026-09-17T12:00:00.000Z\",\n \"created_at\": \"2026-09-16T10:00:00.000Z\",\n \"updated_at\": \"2026-09-16T10:00:00.000Z\"\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n**anyOf** - один из вариантов:\n\n- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)\n - `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403)\n - `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n - `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"DELETE","path":"/drafts/{id}","summary":"Удаление черновика","scope":"drafts:write","plan":null,"auth":true,"paginated":false,"command":"pachca drafts delete","docLink":"https://dev.pachca.com/api/drafts/delete","describe":"# DELETE /drafts/{id} — Удаление черновика\n\n> **Скоуп:** `drafts:write`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор черновика\n\n## Эквивалентная команда\n\n```bash\npachca drafts delete 4821 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/drafts/delete\nПолная справка: `pachca api DELETE /drafts/{id} --docs` · схема: `--spec`\n","spec":{"method":"DELETE","path":"/drafts/{id}","description":"Удаление черновика\n\nУбирает свой черновик насовсем: восстановить его нельзя, вложения удаляются вместе с ним. У отложенного сообщения удаление и есть отмена отправки.\n\nРаботает, даже если в чат уже нельзя писать. Повторный вызов отвечает `404`.","parameters":[{"name":"id","in":"path","description":"Идентификатор черновика","required":true,"schema":{"type":"integer","format":"int32","example":4821},"example":4821}],"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"},{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}]}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"drafts:write","scopeRoles":["owner","admin","user","multi_guest"]},"paginated":false},"docs":"# Удаление черновика\n\n**Метод**: `DELETE`\n\n**Путь**: `/drafts/{id}`\n\n> **Скоуп:** `drafts:write`\n\nУбирает свой черновик насовсем: восстановить его нельзя, вложения удаляются вместе с ним. У отложенного сообщения удаление и есть отмена отправки.\n\nРаботает, даже если в чат уже нельзя писать. Повторный вызов отвечает `404`.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор черновика\n\n\n## Пример запроса\n\n```bash\ncurl -X DELETE \"https://api.pachca.com/api/shared/v1/drafts/4821\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n**anyOf** - один из вариантов:\n\n- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)\n - `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403)\n - `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n - `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/files/{id}","summary":"Скачивание файла","scope":"files:read","plan":null,"auth":true,"paginated":false,"command":"pachca files get","docLink":"https://dev.pachca.com/api/files/get","describe":"# GET /files/{id} — Скачивание файла\n\n> **Скоуп:** `files:read`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор файла из поля `id` вложения\n- `target` — query: Что отдать вместо исходного файла: `pdf_preview` — документ, переведённый в PDF, `pdf_first_page` — первая страница картинкой, `thumb` — уменьшенная копия изображения, `image` — изображение как есть. Без параметра приходит исходный файл. Вариант, которого у этого файла нет, приводит к `400`.\n\n## Эквивалентная команда\n\n```bash\npachca files get 3560 \\\n --target=thumb \\\n --save ./file \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/files/get\nПолная справка: `pachca api GET /files/{id} --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/files/{id}","description":"Скачивание файла\n\nОтдаёт сам файл, а не ссылку на него. Нужен для вложений, у которых прямой ссылки на хранилище нет: в поле `url` у них стоит адрес этого метода, и открыть его можно только с токеном. Так отдаются зашифрованные файлы и отправленные из безопасного контура пространства — обе настройки описаны в разделе [Шифрование и безопасный контур](/guides/data-protection).\n\nОтказ приходит `403` с кодом `confidential_download_denied`. Сверяется при этом адрес, с которого пришёл запрос, то есть адрес вашего сервера, а не сотрудника, чьим токеном вы пользуетесь: для серверной интеграции это самая частая причина отказа.\n\nОтвет — тело файла и заголовок `Content-Disposition` с его именем, а не `JSON`. Зашифрованный файл расшифровывается на лету и приходит вложением целиком: `target` для него не действует. Если расшифровать не удалось, ответ — `400` с кодом `decryption_failed`.\n\nВложение сообщения доступно тому, кто видит само сообщение, а вложение черновика — только его автору.","parameters":[{"name":"id","in":"path","description":"Идентификатор файла из поля `id` вложения","required":true,"schema":{"type":"integer","format":"int32","example":3560},"example":3560},{"name":"target","in":"query","description":"Что отдать вместо исходного файла: `pdf_preview` — документ, переведённый в PDF, `pdf_first_page` — первая страница картинкой, `thumb` — уменьшенная копия изображения, `image` — изображение как есть. Без параметра приходит исходный файл. Вариант, которого у этого файла нет, приводит к `400`.","required":false,"schema":{"type":"string","description":"Что отдать вместо исходного файла","enum":["pdf_preview","pdf_first_page","thumb","image"],"x-enum-descriptions":{"pdf_preview":"Документ, переведённый в PDF","pdf_first_page":"Первая страница документа картинкой","thumb":"Уменьшенная копия изображения","image":"Изображение как есть"},"example":"thumb","$ref":"#/components/schemas/FileTarget"},"example":"thumb","explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"},{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}]}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"files:read","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":false},"docs":"# Скачивание файла\n\n**Метод**: `GET`\n\n**Путь**: `/files/{id}`\n\n> **Скоуп:** `files:read`\n\nОтдаёт сам файл, а не ссылку на него. Нужен для вложений, у которых прямой ссылки на хранилище нет: в поле `url` у них стоит адрес этого метода, и открыть его можно только с токеном. Так отдаются зашифрованные файлы и отправленные из безопасного контура пространства — обе настройки описаны в разделе [Шифрование и безопасный контур](/guides/data-protection).\n\nОтказ приходит `403` с кодом `confidential_download_denied`. Сверяется при этом адрес, с которого пришёл запрос, то есть адрес вашего сервера, а не сотрудника, чьим токеном вы пользуетесь: для серверной интеграции это самая частая причина отказа.\n\nОтвет — тело файла и заголовок `Content-Disposition` с его именем, а не `JSON`. Зашифрованный файл расшифровывается на лету и приходит вложением целиком: `target` для него не действует. Если расшифровать не удалось, ответ — `400` с кодом `decryption_failed`.\n\nВложение сообщения доступно тому, кто видит само сообщение, а вложение черновика — только его автору.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор файла из поля `id` вложения\n\n### Query параметры\n\n- `target: string` — Что отдать вместо исходного файла: `pdf_preview` — документ, переведённый в PDF, `pdf_first_page` — первая страница картинкой, `thumb` — уменьшенная копия изображения, `image` — изображение как есть. Без параметра приходит исходный файл. Вариант, которого у этого файла нет, приводит к `400`.\n Значения: `pdf_preview`, `pdf_first_page`, `thumb`, `image`\n\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/files/3560?target=thumb\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n**anyOf** - один из вариантов:\n\n- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)\n - `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403)\n - `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n - `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"POST","path":"/group_tags","summary":"Новый тег","scope":"group_tags:write","plan":null,"auth":true,"paginated":false,"command":"pachca group-tags create","docLink":"https://dev.pachca.com/api/group-tags/create","describe":"# POST /group_tags — Новый тег\n\n> **Скоуп:** `group_tags:write`\n\n## Тело запроса\n\n- `group_tag: object` (required)\n - `name: string` (required, max length: 255) — Название тега\n\n## Эквивалентная команда\n\n```bash\npachca group-tags create \\\n --name='Новое название тега' \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/group-tags/create\nПолная справка: `pachca api POST /group_tags --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/group_tags","description":"Новый тег\n\nСоздаёт тег. Тег — это способ держать состав чатов сам собой: его привязывают к беседе или каналу, и все, у кого этот тег есть, оказываются там автоматически.\n\nСотрудников в тег добавляют не здесь, а в карточке каждого — [Редактирование сотрудника](PUT /users/{id}) с полем `list_tags`. Свежий тег создаётся пустым, с `users_count: 0`. К чату его привязывает метод [Добавление тегов](POST /chats/{id}/group_tags).\n\nНазвание уникально в пространстве без учёта регистра и не может содержать `@`. Создавать теги могут владелец пространства и администратор, боту метод недоступен.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на создание или редактирование тега","required":["group_tag"],"properties":{"group_tag":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Название тега","example":"Новое название тега","maxLength":255}}}},"$ref":"#/components/schemas/GroupTagRequest"}}}},"responses":{"201":{"description":"The request has succeeded and a new resource has been created as a result.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Тег","required":["id","name","users_count"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор тега","example":9111},"name":{"type":"string","description":"Название тега","example":"Design","maxLength":255},"users_count":{"type":"integer","format":"int32","description":"Количество сотрудников, которые имеют этот тег","example":6}},"$ref":"#/components/schemas/GroupTag"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"group_tags:write","scopeRoles":["owner","admin"]},"paginated":false},"docs":"# Новый тег\n\n**Метод**: `POST`\n\n**Путь**: `/group_tags`\n\n> **Скоуп:** `group_tags:write`\n\nСоздаёт тег. Тег — это способ держать состав чатов сам собой: его привязывают к беседе или каналу, и все, у кого этот тег есть, оказываются там автоматически.\n\nСотрудников в тег добавляют не здесь, а в карточке каждого — [Редактирование сотрудника](PUT /users/{id}) с полем `list_tags`. Свежий тег создаётся пустым, с `users_count: 0`. К чату его привязывает метод [Добавление тегов](POST /chats/{id}/group_tags).\n\nНазвание уникально в пространстве без учёта регистра и не может содержать `@`. Создавать теги могут владелец пространства и администратор, боту метод недоступен.\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `group_tag: object` (required)\n - `name: string` (required, max length: 255) — Название тега. Пример: `\"Новое название тега\"`\n\n### Пример\n\n```json\n{\n \"group_tag\": {\n \"name\": \"Новое название тега\"\n }\n}\n```\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/group_tags\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"group_tag\": {\n \"name\": \"Новое название тега\"\n }\n}'\n```\n\n## Ответы\n\n### 201: The request has succeeded and a new resource has been created as a result.\n\n**Схема ответа:**\n\n- `data: object` (required) — Тег\n - `id: integer, int32` (required) — Идентификатор тега. Пример: `9111`\n - `name: string` (required, max length: 255) — Название тега. Пример: `\"Design\"`\n - `users_count: integer, int32` (required) — Количество сотрудников, которые имеют этот тег. Пример: `6`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 9111,\n \"name\": \"Design\",\n \"users_count\": 6\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 409: The request conflicts with the current state of the server.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/group_tags","summary":"Список тегов","scope":"group_tags:read","plan":null,"auth":true,"paginated":true,"command":"pachca group-tags list","docLink":"https://dev.pachca.com/api/group-tags/list","describe":"# GET /group_tags — Список тегов\n\n> **Скоуп:** `group_tags:read`\n\n> Пагинация: добавьте `--all` для автоматического обхода страниц\n\n## Параметры\n\n- `names` — query: Массив названий тегов, по которым вы хотите отфильтровать список\n- `limit` — query: Количество возвращаемых сущностей за один запрос\n- `cursor` — query: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n## Эквивалентная команда\n\n```bash\n# Добавьте --all для автоматической пагинации\npachca group-tags list \\\n --names=Design,Product \\\n --limit=1 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/group-tags/list\nПолная справка: `pachca api GET /group_tags --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/group_tags","description":"Список тегов\n\nВсе теги пространства с числом сотрудников в каждом, независимо от того, к каким чатам они привязаны. Мульти-гостю приходят только теги активных бесед и каналов, где он участник.\n\nПараметр `names` ищет теги по названиям — это способ получить `id` по имени, известному из интерфейса. За один запрос он принимает не больше 100 имён, на большее число метод отвечает `400` с кодом `too_long`.\n\nКто состоит в конкретном теге, отдаёт [Список сотрудников тега](GET /group_tags/{id}/users).","parameters":[{"name":"names","in":"query","description":"Массив названий тегов, по которым вы хотите отфильтровать список","required":false,"schema":{"type":"array","description":"Массив названий тегов","example":["Design","Product"],"maxItems":100,"items":{"type":"string"},"$ref":"#/components/schemas/TagNamesFilter"},"example":["Design","Product"]},{"name":"limit","in":"query","description":"Количество возвращаемых сущностей за один запрос","required":false,"schema":{"type":"integer","format":"int32","default":50,"example":1,"minimum":1,"maximum":50},"example":1,"explode":false},{"name":"cursor","in":"query","description":"Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)","required":false,"schema":{"type":"string","example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9"},"example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9","explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными и пагинацией","required":["data","meta"],"properties":{"data":{"type":"array","items":{"type":"object","description":"Тег","required":["id","name","users_count"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор тега","example":9111},"name":{"type":"string","description":"Название тега","example":"Design","maxLength":255},"users_count":{"type":"integer","format":"int32","description":"Количество сотрудников, которые имеют этот тег","example":6}},"$ref":"#/components/schemas/GroupTag"}},"meta":{"type":"object","description":"Метаданные пагинации","required":["paginate"],"properties":{"paginate":{"type":"object","description":"Вспомогательная информация","required":["next_page"],"properties":{"next_page":{"type":"string","description":"Курсор пагинации следующей страницы","example":"eyJxZCO2MiwiZGlyIjomSNYjIn3"},"prev_page":{"type":"string","description":"Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка.","example":"eyJxZCO2MiwiZGlyIjoiYXNjIn0"},"has_next":{"type":"boolean","description":"Есть ли ещё данные на следующей странице. На последней странице — `false`.","example":true},"has_prev":{"type":"boolean","description":"Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`.","example":false}}}},"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"group_tags:read","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":true},"docs":"# Список тегов\n\n**Метод**: `GET`\n\n**Путь**: `/group_tags`\n\n> **Скоуп:** `group_tags:read`\n\nВсе теги пространства с числом сотрудников в каждом, независимо от того, к каким чатам они привязаны. Мульти-гостю приходят только теги активных бесед и каналов, где он участник.\n\nПараметр `names` ищет теги по названиям — это способ получить `id` по имени, известному из интерфейса. За один запрос он принимает не больше 100 имён, на большее число метод отвечает `400` с кодом `too_long`.\n\nКто состоит в конкретном теге, отдаёт [Список сотрудников тега](GET /group_tags/{id}/users).\n\n## Параметры\n\n### Query параметры\n\n- `names: array` — Массив названий тегов, по которым вы хотите отфильтровать список\n- `limit: integer, int32` (default: 50) — Количество возвращаемых сущностей за один запрос\n- `cursor: string` — Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n\n## Пример запроса\n\n```bash\n# Для получения следующей страницы используйте cursor из meta.paginate.next_page\ncurl \"https://api.pachca.com/api/shared/v1/group_tags?names[]=Design&names[]=Product&limit=1\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: array of object` (required)\n - `id: integer, int32` (required) — Идентификатор тега. Пример: `9111`\n - `name: string` (required, max length: 255) — Название тега. Пример: `\"Design\"`\n - `users_count: integer, int32` (required) — Количество сотрудников, которые имеют этот тег. Пример: `6`\n- `meta: object` (required) — Метаданные пагинации\n - `paginate: object` (required) — Вспомогательная информация\n - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `\"eyJxZCO2MiwiZGlyIjomSNYjIn3\"`\n - `prev_page: string` — Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка. Пример: `\"eyJxZCO2MiwiZGlyIjoiYXNjIn0\"`\n - `has_next: boolean` — Есть ли ещё данные на следующей странице. На последней странице — `false`. Пример: `true`\n - `has_prev: boolean` — Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`. Пример: `false`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": [\n {\n \"id\": 9111,\n \"name\": \"Design\",\n \"users_count\": 6\n }\n ],\n \"meta\": {\n \"paginate\": {\n \"next_page\": \"eyJxZCO2MiwiZGlyIjomSNYjIn3\",\n \"prev_page\": \"eyJxZCO2MiwiZGlyIjoiYXNjIn0\",\n \"has_next\": true,\n \"has_prev\": false\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/group_tags/{id}","summary":"Информация о теге","scope":"group_tags:read","plan":null,"auth":true,"paginated":false,"command":"pachca group-tags get","docLink":"https://dev.pachca.com/api/group-tags/get","describe":"# GET /group_tags/{id} — Информация о теге\n\n> **Скоуп:** `group_tags:read`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор тега\n\n## Эквивалентная команда\n\n```bash\npachca group-tags get 9111 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/group-tags/get\nПолная справка: `pachca api GET /group_tags/{id} --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/group_tags/{id}","description":"Информация о теге\n\nНазвание тега и число сотрудников в нём.\n\nВ `users_count` считаются только действующие сотрудники: приостановленные в счётчик не попадают, хотя в методе [Список сотрудников тега](GET /group_tags/{id}/users) остаются.\n\nМульти-гостю доступны только теги, которые приходят ему в [Список тегов](GET /group_tags), а на остальные метод отвечает `404`.","parameters":[{"name":"id","in":"path","description":"Идентификатор тега","required":true,"schema":{"type":"integer","format":"int32","example":9111},"example":9111}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Тег","required":["id","name","users_count"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор тега","example":9111},"name":{"type":"string","description":"Название тега","example":"Design","maxLength":255},"users_count":{"type":"integer","format":"int32","description":"Количество сотрудников, которые имеют этот тег","example":6}},"$ref":"#/components/schemas/GroupTag"}}}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"group_tags:read","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":false},"docs":"# Информация о теге\n\n**Метод**: `GET`\n\n**Путь**: `/group_tags/{id}`\n\n> **Скоуп:** `group_tags:read`\n\nНазвание тега и число сотрудников в нём.\n\nВ `users_count` считаются только действующие сотрудники: приостановленные в счётчик не попадают, хотя в методе [Список сотрудников тега](GET /group_tags/{id}/users) остаются.\n\nМульти-гостю доступны только теги, которые приходят ему в [Список тегов](GET /group_tags), а на остальные метод отвечает `404`.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор тега\n\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/group_tags/9111\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Тег\n - `id: integer, int32` (required) — Идентификатор тега. Пример: `9111`\n - `name: string` (required, max length: 255) — Название тега. Пример: `\"Design\"`\n - `users_count: integer, int32` (required) — Количество сотрудников, которые имеют этот тег. Пример: `6`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 9111,\n \"name\": \"Design\",\n \"users_count\": 6\n }\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"PUT","path":"/group_tags/{id}","summary":"Редактирование тега","scope":"group_tags:write","plan":null,"auth":true,"paginated":false,"command":"pachca group-tags update","docLink":"https://dev.pachca.com/api/group-tags/update","describe":"# PUT /group_tags/{id} — Редактирование тега\n\n> **Скоуп:** `group_tags:write`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор тега\n\n## Тело запроса\n\n- `group_tag: object` (required)\n - `name: string` (required, max length: 255) — Название тега\n\n## Эквивалентная команда\n\n```bash\npachca group-tags update 9111 \\\n --name='Новое название тега' \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/group-tags/update\nПолная справка: `pachca api PUT /group_tags/{id} --docs` · схема: `--spec`\n","spec":{"method":"PUT","path":"/group_tags/{id}","description":"Редактирование тега\n\nПереименовывает тег. Состав сотрудников и привязки к чатам при этом не меняются: у всех, кто был в теге, он остаётся, только под новым названием.\n\nНазвание уникально в пространстве без учёта регистра и не может содержать `@`. Переименовывать теги могут владелец пространства и администратор, боту метод недоступен.","parameters":[{"name":"id","in":"path","description":"Идентификатор тега","required":true,"schema":{"type":"integer","format":"int32","example":9111},"example":9111}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на создание или редактирование тега","required":["group_tag"],"properties":{"group_tag":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Название тега","example":"Новое название тега","maxLength":255}}}},"$ref":"#/components/schemas/GroupTagRequest"}}}},"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Тег","required":["id","name","users_count"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор тега","example":9111},"name":{"type":"string","description":"Название тега","example":"Design","maxLength":255},"users_count":{"type":"integer","format":"int32","description":"Количество сотрудников, которые имеют этот тег","example":6}},"$ref":"#/components/schemas/GroupTag"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"group_tags:write","scopeRoles":["owner","admin"]},"paginated":false},"docs":"# Редактирование тега\n\n**Метод**: `PUT`\n\n**Путь**: `/group_tags/{id}`\n\n> **Скоуп:** `group_tags:write`\n\nПереименовывает тег. Состав сотрудников и привязки к чатам при этом не меняются: у всех, кто был в теге, он остаётся, только под новым названием.\n\nНазвание уникально в пространстве без учёта регистра и не может содержать `@`. Переименовывать теги могут владелец пространства и администратор, боту метод недоступен.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор тега\n\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `group_tag: object` (required)\n - `name: string` (required, max length: 255) — Название тега. Пример: `\"Новое название тега\"`\n\n### Пример\n\n```json\n{\n \"group_tag\": {\n \"name\": \"Новое название тега\"\n }\n}\n```\n\n## Пример запроса\n\n```bash\ncurl -X PUT \"https://api.pachca.com/api/shared/v1/group_tags/9111\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"group_tag\": {\n \"name\": \"Новое название тега\"\n }\n}'\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Тег\n - `id: integer, int32` (required) — Идентификатор тега. Пример: `9111`\n - `name: string` (required, max length: 255) — Название тега. Пример: `\"Design\"`\n - `users_count: integer, int32` (required) — Количество сотрудников, которые имеют этот тег. Пример: `6`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 9111,\n \"name\": \"Design\",\n \"users_count\": 6\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 409: The request conflicts with the current state of the server.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"DELETE","path":"/group_tags/{id}","summary":"Удаление тега","scope":"group_tags:write","plan":null,"auth":true,"paginated":false,"command":"pachca group-tags delete","docLink":"https://dev.pachca.com/api/group-tags/delete","describe":"# DELETE /group_tags/{id} — Удаление тега\n\n> **Скоуп:** `group_tags:write`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор тега\n\n## Эквивалентная команда\n\n```bash\npachca group-tags delete 9111 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/group-tags/delete\nПолная справка: `pachca api DELETE /group_tags/{id} --docs` · схема: `--spec`\n","spec":{"method":"DELETE","path":"/group_tags/{id}","description":"Удаление тега\n\nУбирает тег из пространства: он снимается со всех сотрудников и отвязывается от всех чатов.\n\nИз чатов при этом никто не выходит. Сотрудники, которых тег привёл в беседу или канал, остаются там обычными участниками, и дальше их состав тегом уже не поддерживается. Чтобы вывести их из конкретного чата, пользуйтесь методом [Исключение тега](DELETE /chats/{id}/group_tags/{tag_id}) до удаления самого тега.\n\nУдалять теги могут владелец пространства и администратор, боту метод недоступен.","parameters":[{"name":"id","in":"path","description":"Идентификатор тега","required":true,"schema":{"type":"integer","format":"int32","example":9111},"example":9111}],"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"group_tags:write","scopeRoles":["owner","admin"]},"paginated":false},"docs":"# Удаление тега\n\n**Метод**: `DELETE`\n\n**Путь**: `/group_tags/{id}`\n\n> **Скоуп:** `group_tags:write`\n\nУбирает тег из пространства: он снимается со всех сотрудников и отвязывается от всех чатов.\n\nИз чатов при этом никто не выходит. Сотрудники, которых тег привёл в беседу или канал, остаются там обычными участниками, и дальше их состав тегом уже не поддерживается. Чтобы вывести их из конкретного чата, пользуйтесь методом [Исключение тега](DELETE /chats/{id}/group_tags/{tag_id}) до удаления самого тега.\n\nУдалять теги могут владелец пространства и администратор, боту метод недоступен.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор тега\n\n\n## Пример запроса\n\n```bash\ncurl -X DELETE \"https://api.pachca.com/api/shared/v1/group_tags/9111\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/group_tags/{id}/users","summary":"Список сотрудников тега","scope":"group_tags:read","plan":null,"auth":true,"paginated":true,"command":"pachca group-tags list-users","docLink":"https://dev.pachca.com/api/group-tags/list-users","describe":"# GET /group_tags/{id}/users — Список сотрудников тега\n\n> **Скоуп:** `group_tags:read`\n\n> Пагинация: добавьте `--all` для автоматического обхода страниц\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор тега\n- `limit` — query: Количество возвращаемых сущностей за один запрос\n- `cursor` — query: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n## Эквивалентная команда\n\n```bash\n# Добавьте --all для автоматической пагинации\npachca group-tags list-users 9111 \\\n --limit=1 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/group-tags/list-users\nПолная справка: `pachca api GET /group_tags/{id}/users --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/group_tags/{id}/users","description":"Список сотрудников тега\n\nКто состоит в теге. Приостановленные сотрудники в списке приходят, хотя в `users_count` самого тега они не учтены. Удалённые не приходят, а боты, помеченные тегом, в выдачу попадают.\n\nСостав тега меняют в карточке сотрудника — [Редактирование сотрудника](PUT /users/{id}) с полем `list_tags`, по одному сотруднику за раз.\n\nМульти-гостю метод отвечает `403`: список сотрудников пространства ему закрыт, как и в интерфейсе.","parameters":[{"name":"id","in":"path","description":"Идентификатор тега","required":true,"schema":{"type":"integer","format":"int32","example":9111},"example":9111},{"name":"limit","in":"query","description":"Количество возвращаемых сущностей за один запрос","required":false,"schema":{"type":"integer","format":"int32","default":50,"example":1,"minimum":1,"maximum":50},"example":1,"explode":false},{"name":"cursor","in":"query","description":"Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)","required":false,"schema":{"type":"string","example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9"},"example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9","explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными и пагинацией","required":["data","meta"],"properties":{"data":{"type":"array","items":{"type":"object","description":"Сотрудник","required":["id","first_name","last_name","nickname","email","phone_number","department","title","role","suspended","invite_status","inviter_id","list_tags","custom_properties","user_status","bot","sso","created_at","last_activity_at","time_zone","image_url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор пользователя","example":12},"first_name":{"type":"string","description":"Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`).","example":"Олег","nullable":true,"maxLength":255},"last_name":{"type":"string","description":"Фамилия. Если не заполнена, возвращается `null` или пустая строка.","example":"Петров","nullable":true,"maxLength":255},"nickname":{"type":"string","description":"Имя пользователя","example":"olegpetrov","maxLength":255},"email":{"type":"string","description":"Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда.","example":"olegp@example.com","nullable":true,"maxLength":255},"phone_number":{"type":"string","description":"Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда.","example":"+79001234567","nullable":true,"maxLength":255},"department":{"type":"string","description":"Департамент. Если не указан, возвращается `null` или пустая строка.","example":"Продукт","nullable":true,"maxLength":255},"title":{"type":"string","description":"Должность. Если не указана, возвращается `null` или пустая строка.","example":"CIO","nullable":true},"role":{"description":"Уровень доступа","example":"admin","allOf":[{"type":"string","description":"Роль пользователя в системе","enum":["admin","user","multi_guest","guest"],"x-enum-descriptions":{"admin":"Администратор","user":"Сотрудник","multi_guest":"Мульти-гость","guest":"Гость"},"$ref":"#/components/schemas/UserRole"}]},"suspended":{"type":"boolean","description":"Деактивация пользователя","example":false},"invite_status":{"description":"Статус приглашения","example":"confirmed","allOf":[{"type":"string","description":"Статус приглашения пользователя","enum":["confirmed","sent"],"x-enum-descriptions":{"confirmed":"Принято","sent":"Отправлено"},"$ref":"#/components/schemas/InviteStatus"}]},"inviter_id":{"type":"integer","format":"int32","description":"Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён.","example":185,"nullable":true},"list_tags":{"type":"array","description":"Массив тегов, привязанных к сотруднику. Мульти-гостю в чужой карточке приходит пустым.","example":["Product","Design"],"items":{"type":"string"}},"custom_properties":{"type":"array","description":"Дополнительные поля сотрудника","items":{"type":"object","description":"Дополнительное поле","required":["id","name","data_type","value"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор поля","example":1678},"name":{"type":"string","description":"Название поля","example":"Город","maxLength":32},"data_type":{"description":"Тип поля","example":"string","allOf":[{"type":"string","description":"Тип данных дополнительного поля","enum":["string","number","date","link"],"x-enum-descriptions":{"string":"Строковое значение","number":"Числовое значение","date":"Дата","link":"Ссылка"},"$ref":"#/components/schemas/CustomPropertyDataType"}]},"value":{"type":"string","description":"Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601.","example":"Санкт-Петербург","nullable":true,"maxLength":768}},"$ref":"#/components/schemas/CustomProperty"}},"user_status":{"type":"object","description":"Статус. `null`, если у сотрудника не установлен статус.","nullable":true,"allOf":[{"type":"object","description":"Статус пользователя","required":["emoji","title","expires_at","is_away","away_message"],"properties":{"emoji":{"type":"string","description":"Emoji символ статуса","example":"🎮"},"title":{"type":"string","description":"Текст статуса","example":"Очень занят","maxLength":50},"expires_at":{"type":"string","format":"date-time","description":"Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически.","example":"2024-04-08T10:00:00.000Z","nullable":true},"is_away":{"type":"boolean","description":"Режим «Нет на месте»","example":false},"away_message":{"type":"object","description":"Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.","required":["text"],"nullable":true,"properties":{"text":{"type":"string","description":"Текст сообщения","example":"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.","maxLength":1024}}}},"$ref":"#/components/schemas/UserStatus"}]},"bot":{"type":"boolean","description":"Является ботом","example":false},"sso":{"type":"boolean","description":"Использует ли пользователь SSO","example":false},"created_at":{"type":"string","format":"date-time","description":"Дата создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2020-06-08T09:32:57.000Z"},"last_activity_at":{"type":"string","format":"date-time","description":"Дата последней активности пользователя (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если сотрудник ещё ни разу не заходил в Пачку — в этом случае `invite_status` возвращает `sent`.","example":"2025-01-20T13:40:07.000Z","nullable":true},"time_zone":{"type":"string","description":"Часовой пояс пользователя. `null`, если сотрудник не задал личный часовой пояс — тогда применяется часовой пояс компании.","example":"Europe/Moscow","nullable":true,"maxLength":32},"image_url":{"type":"string","description":"Ссылка на скачивание аватарки пользователя. `null`, если аватарка не загружена.","example":"https://app.pachca.com/users/12/photo.jpg","nullable":true}},"$ref":"#/components/schemas/User"}},"meta":{"type":"object","description":"Метаданные пагинации","required":["paginate"],"properties":{"paginate":{"type":"object","description":"Вспомогательная информация","required":["next_page"],"properties":{"next_page":{"type":"string","description":"Курсор пагинации следующей страницы","example":"eyJxZCO2MiwiZGlyIjomSNYjIn3"},"prev_page":{"type":"string","description":"Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка.","example":"eyJxZCO2MiwiZGlyIjoiYXNjIn0"},"has_next":{"type":"boolean","description":"Есть ли ещё данные на следующей странице. На последней странице — `false`.","example":true},"has_prev":{"type":"boolean","description":"Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`.","example":false}}}},"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"group_tags:read","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":true},"docs":"# Список сотрудников тега\n\n**Метод**: `GET`\n\n**Путь**: `/group_tags/{id}/users`\n\n> **Скоуп:** `group_tags:read`\n\nКто состоит в теге. Приостановленные сотрудники в списке приходят, хотя в `users_count` самого тега они не учтены. Удалённые не приходят, а боты, помеченные тегом, в выдачу попадают.\n\nСостав тега меняют в карточке сотрудника — [Редактирование сотрудника](PUT /users/{id}) с полем `list_tags`, по одному сотруднику за раз.\n\nМульти-гостю метод отвечает `403`: список сотрудников пространства ему закрыт, как и в интерфейсе.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор тега\n\n### Query параметры\n\n- `limit: integer, int32` (default: 50) — Количество возвращаемых сущностей за один запрос\n- `cursor: string` — Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n\n## Пример запроса\n\n```bash\n# Для получения следующей страницы используйте cursor из meta.paginate.next_page\ncurl \"https://api.pachca.com/api/shared/v1/group_tags/9111/users?limit=1\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: array of object` (required)\n - `id: integer, int32` (required) — Идентификатор пользователя. Пример: `12`\n - `first_name: string` (required, nullable, max length: 255) — Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`). Пример: `\"Олег\"`\n - `last_name: string` (required, nullable, max length: 255) — Фамилия. Если не заполнена, возвращается `null` или пустая строка. Пример: `\"Петров\"`\n - `nickname: string` (required, max length: 255) — Имя пользователя. Пример: `\"olegpetrov\"`\n - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `\"olegp@example.com\"`\n - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `\"+79001234567\"`\n - `department: string` (required, nullable, max length: 255) — Департамент. Если не указан, возвращается `null` или пустая строка. Пример: `\"Продукт\"`\n - `title: string` (required, nullable) — Должность. Если не указана, возвращается `null` или пустая строка. Пример: `\"CIO\"`\n - `role: string` (required) — Уровень доступа\n Значения: `admin` — Администратор, `user` — Сотрудник, `multi_guest` — Мульти-гость, `guest` — Гость\n - `suspended: boolean` (required) — Деактивация пользователя. Пример: `false`\n - `invite_status: string` (required) — Статус приглашения\n Значения: `confirmed` — Принято, `sent` — Отправлено\n - `inviter_id: integer, int32` (required, nullable) — Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён. Пример: `185`\n - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Мульти-гостю в чужой карточке приходит пустым. Пример: `[\"Product\",\"Design\"]`\n - `custom_properties: array of object` (required) — Дополнительные поля сотрудника\n - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678`\n - `name: string` (required, max length: 32) — Название поля. Пример: `\"Город\"`\n - `data_type: string` (required) — Тип поля\n Значения: `string` — Строковое значение, `number` — Числовое значение, `date` — Дата, `link` — Ссылка\n - `value: string` (required, nullable, max length: 768) — Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601. Пример: `\"Санкт-Петербург\"`\n - `user_status: object` (required) — Статус. `null`, если у сотрудника не установлен статус.\n - `emoji: string` (required) — Emoji символ статуса. Пример: `\"🎮\"`\n - `title: string` (required, max length: 50) — Текст статуса. Пример: `\"Очень занят\"`\n - `expires_at: date-time` (required, nullable) — Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически. Пример: `\"2024-04-08T10:00:00.000Z\"`\n - `is_away: boolean` (required) — Режим «Нет на месте». Пример: `false`\n - `away_message: object` (required, nullable) — Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.\n - `text: string` (required, max length: 1024) — Текст сообщения. Пример: `\"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"`\n - `bot: boolean` (required) — Является ботом. Пример: `false`\n - `sso: boolean` (required) — Использует ли пользователь SSO. Пример: `false`\n - `created_at: date-time` (required) — Дата создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2020-06-08T09:32:57.000Z\"`\n - `last_activity_at: date-time` (required, nullable) — Дата последней активности пользователя (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если сотрудник ещё ни разу не заходил в Пачку — в этом случае `invite_status` возвращает `sent`. Пример: `\"2025-01-20T13:40:07.000Z\"`\n - `time_zone: string` (required, nullable, max length: 32) — Часовой пояс пользователя. `null`, если сотрудник не задал личный часовой пояс — тогда применяется часовой пояс компании. Пример: `\"Europe/Moscow\"`\n - `image_url: string` (required, nullable) — Ссылка на скачивание аватарки пользователя. `null`, если аватарка не загружена. Пример: `\"https://app.pachca.com/users/12/photo.jpg\"`\n- `meta: object` (required) — Метаданные пагинации\n - `paginate: object` (required) — Вспомогательная информация\n - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `\"eyJxZCO2MiwiZGlyIjomSNYjIn3\"`\n - `prev_page: string` — Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка. Пример: `\"eyJxZCO2MiwiZGlyIjoiYXNjIn0\"`\n - `has_next: boolean` — Есть ли ещё данные на следующей странице. На последней странице — `false`. Пример: `true`\n - `has_prev: boolean` — Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`. Пример: `false`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": [\n {\n \"id\": 12,\n \"first_name\": \"Олег\",\n \"last_name\": \"Петров\",\n \"nickname\": \"olegpetrov\",\n \"email\": \"olegp@example.com\",\n \"phone_number\": \"+79001234567\",\n \"department\": \"Продукт\",\n \"title\": \"CIO\",\n \"role\": \"admin\",\n \"suspended\": false,\n \"invite_status\": \"confirmed\",\n \"inviter_id\": 185,\n \"list_tags\": [\n \"Product\",\n \"Design\"\n ],\n \"custom_properties\": [\n {\n \"id\": 1678,\n \"name\": \"Город\",\n \"data_type\": \"string\",\n \"value\": \"Санкт-Петербург\"\n }\n ],\n \"user_status\": {\n \"emoji\": \"🎮\",\n \"title\": \"Очень занят\",\n \"expires_at\": \"2024-04-08T10:00:00.000Z\",\n \"is_away\": false,\n \"away_message\": {\n \"text\": \"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"\n }\n },\n \"bot\": false,\n \"sso\": false,\n \"created_at\": \"2020-06-08T09:32:57.000Z\",\n \"last_activity_at\": \"2025-01-20T13:40:07.000Z\",\n \"time_zone\": \"Europe/Moscow\",\n \"image_url\": \"https://app.pachca.com/users/12/photo.jpg\"\n }\n ],\n \"meta\": {\n \"paginate\": {\n \"next_page\": \"eyJxZCO2MiwiZGlyIjomSNYjIn3\",\n \"prev_page\": \"eyJxZCO2MiwiZGlyIjoiYXNjIn0\",\n \"has_next\": true,\n \"has_prev\": false\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"POST","path":"/messages","summary":"Новое сообщение","scope":"messages:create","plan":null,"auth":true,"paginated":false,"command":"pachca messages create","docLink":"https://dev.pachca.com/api/messages/create","describe":"# POST /messages — Новое сообщение\n\n> **Скоуп:** `messages:create`\n\n## Тело запроса\n\n- `message: object` (required) — Собранный объект параметров создаваемого сообщения\n - `entity_type: string` — Тип сущности. Регистр значения не учитывается. Значение вне списка возвращает `400` с кодом `invalid`.\n Значения: `discussion` — Беседа или канал, `thread` — Тред, `user` — Пользователь\n - `entity_id: integer, int32` (required) — Идентификатор того, что названо в `entity_type`: беседы или канала, треда либо сотрудника.\n - `content: string` (required) — Текст сообщения. Поддерживает упоминания: `@nickname` или `<@user_id>` (будет автоматически преобразовано в `@nickname`). У мульти-гостя `<@user_id>` недоступного ему сотрудника остаётся в тексте как есть.\n - `files: array of object` — Прикрепляемые файлы\n - `key: string` (required, max length: 1000) — Путь к файлу, полученный в методе [Загрузка файла](POST /direct_url)\n - `name: string` (required, max length: 255) — Название файла, которое вы хотите отображать пользователю. Расширение должно совпадать с расширением файла в `key`, иначе ответ будет 422 с кодом `wrong_params`.\n - `file_type: string` (required) — Тип файла\n Значения: `file` — Обычный файл, `image` — Изображение, `audio` — Аудиофайл, `voice` — Голосовое сообщение, `video` — Видеофайл\n - `size: integer, int64` (required) — Размер файла в байтах, отображаемый пользователю\n - `width: integer, int32` — Ширина изображения в px (используется в случае, если file_type указан как image)\n - `height: integer, int32` — Высота изображения в px (используется в случае, если file_type указан как image)\n - `duration_ms: integer, int32` (min: 1) — Длительность в миллисекундах. Обязательно для голосовых сообщений (`file_type` — `voice`), для других типов не используется. Голосовое сообщение длиннее 30 минут (1 800 000 мс) отклоняется с `422`.\n - `waveform: string` (max length: 256) — Форма волны для визуализации голосового сообщения. Обязательно для голосовых сообщений (`file_type` — `voice`), для других типов не используется.\n - `buttons: array of array` (max items: 32) — Массив строк, каждая из которых представлена массивом кнопок. Максимум 100 кнопок у сообщения, до 8 кнопок в строке.\n - `parent_message_id: integer, int32` — Идентификатор сообщения, на которое вы отвечаете с цитатой. Ответить можно на сообщение в любом чате, в том числе в треде: ответ отправляют в тот же чат или тред, где лежит это сообщение, иначе запрос вернёт ошибку `422`. Чтобы написать в тред под сообщением, укажите `entity_type: \"thread\"` и идентификатор треда в `entity_id`.\n - `display_avatar_url: string` (max length: 255) — Ссылка на специальную аватарку отправителя для этого сообщения. Использование этого поля возможно только с access_token бота.\n - `display_name: string` (max length: 255) — Полное специальное имя отправителя для этого сообщения. Использование этого поля возможно только с access_token бота.\n - `skip_invite_mentions: boolean` (default: false) — Пропуск добавления упоминаемых пользователей в тред. Работает только при отправке сообщения в тред.\n- `link_preview: boolean` (default: false) — Отображение предпросмотра первой найденной ссылки в тексте сообщения\n\n## Эквивалентная команда\n\n```bash\npachca messages create \\\n --entity-id=334 \\\n --content='Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)' \\\n --files='[{\"key\":\"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png\",\"name\":\"logo.png\",\"file_type\":\"image\",\"size\":12345,\"width\":800,\"height\":600,\"duration_ms\":5400,\"waveform\":\"4,8,12,20,16,10,6,3\"}]' \\\n --buttons='[[{\"text\":\"Подробнее\",\"url\":\"https://example.com/details\"},{\"text\":\"Отлично!\",\"data\":\"awesome\"}]]' \\\n --parent-message-id=194270 \\\n --display-avatar-url=https://example.com/avatar.png \\\n --display-name='Бот Поддержки' \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/messages/create\nПолная справка: `pachca api POST /messages --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/messages","description":"Новое сообщение\n\nОтправляет сообщение в беседу или канал, личное сообщение сотруднику или комментарий в тред.\n\nПри использовании `entity_type: \"discussion\"` (или просто без указания `entity_type`) допускается отправка любого `chat_id` в поле `entity_id`. То есть сообщение можно отправить, зная только идентификатор чата. Сообщение в тред можно отправить и по идентификатору самого треда, а личное — по идентификатору сотрудника, но тогда нужно указать соответствующий `entity_type`: `thread` или `user`.\n\nЛичный чат для этого создавать не требуется: он появится сам, если между вами ещё не было переписки. Между двумя сотрудниками может быть только один личный чат. Со своим собственным идентификатором сообщение уйдёт в чат с самим собой — туда же, куда сотрудник пишет заметки себе.\n\nЧтобы ответить на конкретное сообщение с цитатой, передайте его идентификатор в `parent_message_id`. Так отвечают в любом чате, в том числе в треде: ответ отправляют в тот же чат или тред, где лежит исходное сообщение.\n\nТекст в поле `content` разбирается как markdown: жирный, курсив, зачёркнутый, строчный код, блок кода и ссылки. Списки и таблицы не разбираются — `-`, `1.` и `|` остаются как есть, у цитаты пропадает `>`, а строка с решёткой и пробелом становится жирной. Подробности — в разделе [Форматирование текста](/guides/markdown).\n\n`@all` упоминает всех участников чата, `@here` — тех, кто сейчас в сети, а `@` с названием тега без пробелов — сотрудников этого тега. В треде упоминание работает ещё и как приглашение: упомянутого сотрудника, которого в треде нет, Пачка туда добавляет, и он получает доступ к треду и родительскому сообщению. Чтобы этого не происходило, передайте `skip_invite_mentions: true`. В беседе и канале упоминание никого не добавляет, и этот параметр там ничего не меняет.\n\nПод текстом сообщения можно показать кнопки — массив `buttons`, где каждый вложенный массив это ряд. Работают они только у сообщений, отправленных токеном бота: нажатие на кнопку с `data` приходит событием `button_click` тому самому боту, а вместе с ним `trigger_id` — на открытие формы по нему есть 3 секунды, метод [Открытие представления](POST /views/open). Кнопка с `url` просто ведёт по ссылке и события не создаёт. Подробности в разделе [Кнопки](/guides/buttons).\n\nБот может подписать сообщение чужим именем и аватаром: `display_name` и `display_avatar_url` меняют отправителя только у этого сообщения. Бейдж «Бот» остаётся, а в профиле отправителя видно настоящего бота. Так показывают автора из другой системы, когда переносят в Пачку чужую переписку. С личным токеном поля недоступны, ответ `403`. Подробности — в разделе [Боты](/guides/bots/overview).\n\nК сообщению можно приложить не больше 10 файлов. Превью ссылки строится, только если передать `link_preview` в корне тела запроса.\n\nДействует суточный предел на число сообщений в один чат от одного отправителя. При превышении метод отвечает `429`, а в заголовке `Retry-After` приходит пауза до следующей попытки. Значения пределов — в разделе [Лимиты](/api/limits).","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на создание сообщения","required":["message"],"properties":{"message":{"type":"object","description":"Собранный объект параметров создаваемого сообщения","required":["entity_id","content"],"properties":{"entity_type":{"description":"Тип сущности. Регистр значения не учитывается. Значение вне списка возвращает `400` с кодом `invalid`.","default":"discussion","example":"discussion","allOf":[{"type":"string","description":"Тип сущности для сообщений","enum":["discussion","thread","user"],"x-enum-descriptions":{"discussion":"Беседа или канал","thread":"Тред","user":"Пользователь"},"$ref":"#/components/schemas/MessageEntityType"}]},"entity_id":{"type":"integer","format":"int32","description":"Идентификатор того, что названо в `entity_type`: беседы или канала, треда либо сотрудника.","example":334},"content":{"type":"string","description":"Текст сообщения. Поддерживает упоминания: `@nickname` или `<@user_id>` (будет автоматически преобразовано в `@nickname`). У мульти-гостя `<@user_id>` недоступного ему сотрудника остаётся в тексте как есть.","example":"Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)"},"files":{"type":"array","description":"Прикрепляемые файлы","items":{"type":"object","required":["key","name","file_type","size"],"properties":{"key":{"type":"string","description":"Путь к файлу, полученный в методе [Загрузка файла](POST /direct_url)","example":"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png","maxLength":1000},"name":{"type":"string","description":"Название файла, которое вы хотите отображать пользователю. Расширение должно совпадать с расширением файла в `key`, иначе ответ будет 422 с кодом `wrong_params`.","example":"logo.png","maxLength":255},"file_type":{"description":"Тип файла","example":"image","allOf":[{"type":"string","description":"Тип файла","enum":["file","image","audio","voice","video"],"x-enum-descriptions":{"file":"Обычный файл","image":"Изображение","audio":"Аудиофайл","voice":"Голосовое сообщение","video":"Видеофайл"},"$ref":"#/components/schemas/FileType"}]},"size":{"type":"integer","format":"int64","description":"Размер файла в байтах, отображаемый пользователю","example":12345},"width":{"type":"integer","format":"int32","description":"Ширина изображения в px (используется в случае, если file_type указан как image)","example":800},"height":{"type":"integer","format":"int32","description":"Высота изображения в px (используется в случае, если file_type указан как image)","example":600},"duration_ms":{"type":"integer","format":"int32","description":"Длительность в миллисекундах. Обязательно для голосовых сообщений (`file_type` — `voice`), для других типов не используется. Голосовое сообщение длиннее 30 минут (1 800 000 мс) отклоняется с `422`.","example":5400,"minimum":1},"waveform":{"type":"string","description":"Форма волны для визуализации голосового сообщения. Обязательно для голосовых сообщений (`file_type` — `voice`), для других типов не используется.","example":"4,8,12,20,16,10,6,3","maxLength":256}}}},"buttons":{"type":"array","description":"Массив строк, каждая из которых представлена массивом кнопок. Максимум 100 кнопок у сообщения, до 8 кнопок в строке.","example":[[{"text":"Подробнее","url":"https://example.com/details"},{"text":"Отлично!","data":"awesome"}]],"maxItems":32,"items":{"type":"array","items":{"type":"object","description":"Кнопка","required":["text"],"properties":{"text":{"type":"string","description":"Текст, отображаемый на кнопке","example":"Подробнее","maxLength":255},"url":{"type":"string","description":"Ссылка, которая будет открыта по нажатию кнопки. У кнопки должно быть заполнено ровно одно из полей `url` и `data`.","example":"https://example.com/details","maxLength":1024},"data":{"type":"string","description":"Данные, которые будут отправлены в исходящем вебхуке по нажатию кнопки. У кнопки должно быть заполнено ровно одно из полей `url` и `data`.","example":"awesome","maxLength":255}},"$ref":"#/components/schemas/Button"}}},"parent_message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, на которое вы отвечаете с цитатой. Ответить можно на сообщение в любом чате, в том числе в треде: ответ отправляют в тот же чат или тред, где лежит это сообщение, иначе запрос вернёт ошибку `422`. Чтобы написать в тред под сообщением, укажите `entity_type: \"thread\"` и идентификатор треда в `entity_id`.","example":194270},"display_avatar_url":{"type":"string","description":"Ссылка на специальную аватарку отправителя для этого сообщения. Использование этого поля возможно только с access_token бота.","example":"https://example.com/avatar.png","maxLength":255},"display_name":{"type":"string","description":"Полное специальное имя отправителя для этого сообщения. Использование этого поля возможно только с access_token бота.","example":"Бот Поддержки","maxLength":255},"skip_invite_mentions":{"type":"boolean","description":"Пропуск добавления упоминаемых пользователей в тред. Работает только при отправке сообщения в тред.","default":false,"example":false}}},"link_preview":{"type":"boolean","description":"Отображение предпросмотра первой найденной ссылки в тексте сообщения","default":false,"example":false}},"$ref":"#/components/schemas/MessageCreateRequest"}}}},"responses":{"201":{"description":"The request has succeeded and a new resource has been created as a result.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Сообщение","required":["id","entity_type","entity_id","chat_id","root_chat_id","content","user_id","created_at","url","files","voice_content","buttons","thread","forwarding","parent_message_id","changed_at","deleted_at"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор сообщения","example":194275},"entity_type":{"description":"Тип сущности, к которой относится сообщение","example":"discussion","allOf":[{"type":"string","description":"Тип сущности для сообщений","enum":["discussion","thread","user"],"x-enum-descriptions":{"discussion":"Беседа или канал","thread":"Тред","user":"Пользователь"},"$ref":"#/components/schemas/MessageEntityType"}]},"entity_id":{"type":"integer","format":"int32","description":"Идентификатор сущности, к которой относится сообщение (беседы/канала, треда или пользователя)","example":334},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором находится сообщение","example":334},"root_chat_id":{"type":"integer","format":"int32","description":"Идентификатор корневого чата. Для сообщений в тредах — идентификатор чата, в котором был создан тред. Для обычных сообщений совпадает с `chat_id`.","example":334},"content":{"type":"string","description":"Текст сообщения","example":"Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)"},"user_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, создавшего сообщение","example":12},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2021-08-28T15:57:23.000Z"},"url":{"type":"string","description":"Прямая ссылка на сообщение","example":"https://app.pachca.com/chats/334?message=194275"},"files":{"type":"array","description":"Прикрепленные файлы","items":{"type":"object","description":"Файл","required":["id","key","name","file_type","url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор файла","example":3560},"key":{"type":"string","description":"Путь к файлу","example":"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png"},"name":{"type":"string","description":"Название файла с расширением","example":"congrat.png"},"file_type":{"description":"Тип файла","example":"image","allOf":[{"type":"string","description":"Тип файла","enum":["file","image","audio","voice","video"],"x-enum-descriptions":{"file":"Обычный файл","image":"Изображение","audio":"Аудиофайл","voice":"Голосовое сообщение","video":"Видеофайл"},"$ref":"#/components/schemas/FileType"}]},"url":{"type":"string","description":"Ссылка на скачивание файла. Обычно ведёт прямо в хранилище и действует до 7 дней, а оставшийся срок может быть меньше — если такая ссылка вернула `403`, запросите сообщение заново и получите свежую. Если в пространстве включено шифрование или задан безопасный контур, ссылка ведёт на [Скачивание файла](GET /files/{id}): забирать такой файл нужно с заголовком `Authorization`, а токену нужен скоуп `files:read`.","example":"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8"},"width":{"type":"integer","format":"int32","description":"Ширина изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке.","example":1920,"nullable":true},"height":{"type":"integer","format":"int32","description":"Высота изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке.","example":1080,"nullable":true},"duration_ms":{"type":"integer","format":"int32","description":"Длительность в миллисекундах у голосового, аудио- и видеофайла. `null` у остальных файлов и если длительность не была передана при загрузке.","example":5400,"nullable":true}},"$ref":"#/components/schemas/File"}},"voice_content":{"type":"object","description":"Данные голосового сообщения. Заполняется только для голосовых сообщений (`file_type` файла — `voice`), иначе `null`.","nullable":true,"allOf":[{"type":"object","description":"Данные голосового сообщения","required":["duration_ms","waveform","transcript"],"properties":{"duration_ms":{"type":"integer","format":"int32","description":"Длительность голосового сообщения в миллисекундах","example":5400},"waveform":{"type":"string","description":"Форма волны (амплитуды) для визуализации голосового сообщения","example":"4,8,12,20,16,10,6,3"},"transcript":{"type":"string","description":"Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна.","example":"Привет, посмотри пожалуйста последний отчёт","nullable":true}},"$ref":"#/components/schemas/VoiceContent"}]},"buttons":{"type":"array","description":"Массив строк, каждая из которых представлена массивом кнопок. `null`, если сообщение отправлено без кнопок.","nullable":true,"items":{"type":"array","items":{"type":"object","description":"Кнопка","required":["text"],"properties":{"text":{"type":"string","description":"Текст, отображаемый на кнопке","example":"Подробнее","maxLength":255},"url":{"type":"string","description":"Ссылка, которая будет открыта по нажатию кнопки. У кнопки должно быть заполнено ровно одно из полей `url` и `data`.","example":"https://example.com/details","maxLength":1024},"data":{"type":"string","description":"Данные, которые будут отправлены в исходящем вебхуке по нажатию кнопки. У кнопки должно быть заполнено ровно одно из полей `url` и `data`.","example":"awesome","maxLength":255}},"$ref":"#/components/schemas/Button"}}},"thread":{"type":"object","description":"Тред, созданный к этому сообщению. `null`, если тред не создан, а также у сообщений, которые сами находятся внутри треда.","required":["id","chat_id"],"nullable":true,"properties":{"id":{"type":"integer","format":"int64","description":"Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](POST /messages) с `entity_type: \"thread\"`.","example":265142},"chat_id":{"type":"integer","format":"int64","description":"Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](GET /messages).","example":2637266155}}},"forwarding":{"type":"object","description":"Информация о пересланном сообщении. `null`, если сообщение не является пересланным.","nullable":true,"allOf":[{"type":"object","description":"Информация о пересланном сообщении","required":["original_message_id","original_chat_id","author_id","original_created_at","original_thread_id","original_thread_message_id","original_thread_parent_chat_id"],"properties":{"original_message_id":{"type":"integer","format":"int32","description":"Идентификатор оригинального сообщения","example":194275},"original_chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором находится оригинальное сообщение","example":334},"author_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, создавшего оригинальное сообщение","example":12},"original_created_at":{"type":"string","format":"date-time","description":"Дата и время создания оригинального сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2025-01-15T10:30:00.000Z"},"original_thread_id":{"type":"integer","format":"int32","description":"Идентификатор треда, в котором находится оригинальное сообщение","example":null,"nullable":true},"original_thread_message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, к которому был создан тред, в котором находится оригинальное сообщение. `null`, если оригинальное сообщение было не в треде или тред создан без привязки к сообщению.","example":null,"nullable":true},"original_thread_parent_chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата сообщения, к которому был создан тред, в котором находится оригинальное сообщение. `null`, если оригинальное сообщение было не в треде или тред создан без привязки к сообщению.","example":null,"nullable":true}},"$ref":"#/components/schemas/Forwarding"}]},"parent_message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, к которому написан ответ. `null`, если сообщение не является ответом на другое сообщение.","example":null,"nullable":true},"display_avatar_url":{"type":"string","description":"Ссылка на аватарку отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. `null`, если бот не переопределял значение при отправке.","example":null,"nullable":true},"display_name":{"type":"string","description":"Полное имя отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. `null`, если бот не переопределял значение при отправке.","example":null,"nullable":true},"changed_at":{"type":"string","format":"date-time","description":"Дата и время последнего изменения сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. У неотредактированного сообщения совпадает с датой создания. `null` у сообщений, отправленных до появления этого поля.","example":"2021-08-28T16:10:00.000Z","nullable":true},"deleted_at":{"type":"string","format":"date-time","description":"Дата и время удаления сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null` у неудалённых сообщений. В списке сообщений удалённые не возвращаются.","example":null,"nullable":true}},"$ref":"#/components/schemas/Message"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}},"headers":{"Retry-After":{"schema":{"type":"integer","format":"int32"}}}}},"requirements":{"scope":"messages:create","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":false},"docs":"# Новое сообщение\n\n**Метод**: `POST`\n\n**Путь**: `/messages`\n\n> **Скоуп:** `messages:create`\n\nОтправляет сообщение в беседу или канал, личное сообщение сотруднику или комментарий в тред.\n\nПри использовании `entity_type: \"discussion\"` (или просто без указания `entity_type`) допускается отправка любого `chat_id` в поле `entity_id`. То есть сообщение можно отправить, зная только идентификатор чата. Сообщение в тред можно отправить и по идентификатору самого треда, а личное — по идентификатору сотрудника, но тогда нужно указать соответствующий `entity_type`: `thread` или `user`.\n\nЛичный чат для этого создавать не требуется: он появится сам, если между вами ещё не было переписки. Между двумя сотрудниками может быть только один личный чат. Со своим собственным идентификатором сообщение уйдёт в чат с самим собой — туда же, куда сотрудник пишет заметки себе.\n\nЧтобы ответить на конкретное сообщение с цитатой, передайте его идентификатор в `parent_message_id`. Так отвечают в любом чате, в том числе в треде: ответ отправляют в тот же чат или тред, где лежит исходное сообщение.\n\nТекст в поле `content` разбирается как markdown: жирный, курсив, зачёркнутый, строчный код, блок кода и ссылки. Списки и таблицы не разбираются — `-`, `1.` и `|` остаются как есть, у цитаты пропадает `>`, а строка с решёткой и пробелом становится жирной. Подробности — в разделе [Форматирование текста](/guides/markdown).\n\n`@all` упоминает всех участников чата, `@here` — тех, кто сейчас в сети, а `@` с названием тега без пробелов — сотрудников этого тега. В треде упоминание работает ещё и как приглашение: упомянутого сотрудника, которого в треде нет, Пачка туда добавляет, и он получает доступ к треду и родительскому сообщению. Чтобы этого не происходило, передайте `skip_invite_mentions: true`. В беседе и канале упоминание никого не добавляет, и этот параметр там ничего не меняет.\n\nПод текстом сообщения можно показать кнопки — массив `buttons`, где каждый вложенный массив это ряд. Работают они только у сообщений, отправленных токеном бота: нажатие на кнопку с `data` приходит событием `button_click` тому самому боту, а вместе с ним `trigger_id` — на открытие формы по нему есть 3 секунды, метод [Открытие представления](POST /views/open). Кнопка с `url` просто ведёт по ссылке и события не создаёт. Подробности в разделе [Кнопки](/guides/buttons).\n\nБот может подписать сообщение чужим именем и аватаром: `display_name` и `display_avatar_url` меняют отправителя только у этого сообщения. Бейдж «Бот» остаётся, а в профиле отправителя видно настоящего бота. Так показывают автора из другой системы, когда переносят в Пачку чужую переписку. С личным токеном поля недоступны, ответ `403`. Подробности — в разделе [Боты](/guides/bots/overview).\n\nК сообщению можно приложить не больше 10 файлов. Превью ссылки строится, только если передать `link_preview` в корне тела запроса.\n\nДействует суточный предел на число сообщений в один чат от одного отправителя. При превышении метод отвечает `429`, а в заголовке `Retry-After` приходит пауза до следующей попытки. Значения пределов — в разделе [Лимиты](/api/limits).\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `message: object` (required) — Собранный объект параметров создаваемого сообщения\n - `entity_type: string` — Тип сущности. Регистр значения не учитывается. Значение вне списка возвращает `400` с кодом `invalid`.\n Значения: `discussion` — Беседа или канал, `thread` — Тред, `user` — Пользователь\n - `entity_id: integer, int32` (required) — Идентификатор того, что названо в `entity_type`: беседы или канала, треда либо сотрудника. Пример: `334`\n - `content: string` (required) — Текст сообщения. Поддерживает упоминания: `@nickname` или `<@user_id>` (будет автоматически преобразовано в `@nickname`). У мульти-гостя `<@user_id>` недоступного ему сотрудника остаётся в тексте как есть. Пример: `\"Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)\"`\n - `files: array of object` — Прикрепляемые файлы\n - `key: string` (required, max length: 1000) — Путь к файлу, полученный в методе [Загрузка файла](POST /direct_url). Пример: `\"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png\"`\n - `name: string` (required, max length: 255) — Название файла, которое вы хотите отображать пользователю. Расширение должно совпадать с расширением файла в `key`, иначе ответ будет 422 с кодом `wrong_params`. Пример: `\"logo.png\"`\n - `file_type: string` (required) — Тип файла\n Значения: `file` — Обычный файл, `image` — Изображение, `audio` — Аудиофайл, `voice` — Голосовое сообщение, `video` — Видеофайл\n - `size: integer, int64` (required) — Размер файла в байтах, отображаемый пользователю. Пример: `12345`\n - `width: integer, int32` — Ширина изображения в px (используется в случае, если file_type указан как image). Пример: `800`\n - `height: integer, int32` — Высота изображения в px (используется в случае, если file_type указан как image). Пример: `600`\n - `duration_ms: integer, int32` (min: 1) — Длительность в миллисекундах. Обязательно для голосовых сообщений (`file_type` — `voice`), для других типов не используется. Голосовое сообщение длиннее 30 минут (1 800 000 мс) отклоняется с `422`. Пример: `5400`\n - `waveform: string` (max length: 256) — Форма волны для визуализации голосового сообщения. Обязательно для голосовых сообщений (`file_type` — `voice`), для других типов не используется. Пример: `\"4,8,12,20,16,10,6,3\"`\n - `buttons: array of array` (max items: 32) — Массив строк, каждая из которых представлена массивом кнопок. Максимум 100 кнопок у сообщения, до 8 кнопок в строке. Пример: `[[{\"text\":\"Подробнее\",\"url\":\"https://example.com/details\"},{\"text\":\"Отлично!\",\"data\":\"awesome\"}]]`\n - `parent_message_id: integer, int32` — Идентификатор сообщения, на которое вы отвечаете с цитатой. Ответить можно на сообщение в любом чате, в том числе в треде: ответ отправляют в тот же чат или тред, где лежит это сообщение, иначе запрос вернёт ошибку `422`. Чтобы написать в тред под сообщением, укажите `entity_type: \"thread\"` и идентификатор треда в `entity_id`. Пример: `194270`\n - `display_avatar_url: string` (max length: 255) — Ссылка на специальную аватарку отправителя для этого сообщения. Использование этого поля возможно только с access_token бота. Пример: `\"https://example.com/avatar.png\"`\n - `display_name: string` (max length: 255) — Полное специальное имя отправителя для этого сообщения. Использование этого поля возможно только с access_token бота. Пример: `\"Бот Поддержки\"`\n - `skip_invite_mentions: boolean` (default: false) — Пропуск добавления упоминаемых пользователей в тред. Работает только при отправке сообщения в тред. Пример: `false`\n- `link_preview: boolean` (default: false) — Отображение предпросмотра первой найденной ссылки в тексте сообщения. Пример: `false`\n\n### Пример\n\n```json\n{\n \"message\": {\n \"entity_id\": 334,\n \"content\": \"Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)\",\n \"files\": [\n {\n \"key\": \"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png\",\n \"name\": \"logo.png\",\n \"file_type\": \"image\",\n \"size\": 12345,\n \"width\": 800,\n \"height\": 600,\n \"duration_ms\": 5400,\n \"waveform\": \"4,8,12,20,16,10,6,3\"\n }\n ],\n \"buttons\": [\n [\n {\n \"text\": \"Подробнее\",\n \"url\": \"https://example.com/details\"\n },\n {\n \"text\": \"Отлично!\",\n \"data\": \"awesome\"\n }\n ]\n ],\n \"parent_message_id\": 194270,\n \"display_avatar_url\": \"https://example.com/avatar.png\",\n \"display_name\": \"Бот Поддержки\"\n }\n}\n```\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/messages\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"message\": {\n \"entity_id\": 334,\n \"content\": \"Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)\",\n \"files\": [\n {\n \"key\": \"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png\",\n \"name\": \"logo.png\",\n \"file_type\": \"image\",\n \"size\": 12345,\n \"width\": 800,\n \"height\": 600,\n \"duration_ms\": 5400,\n \"waveform\": \"4,8,12,20,16,10,6,3\"\n }\n ],\n \"buttons\": [\n [\n {\n \"text\": \"Подробнее\",\n \"url\": \"https://example.com/details\"\n },\n {\n \"text\": \"Отлично!\",\n \"data\": \"awesome\"\n }\n ]\n ],\n \"parent_message_id\": 194270,\n \"display_avatar_url\": \"https://example.com/avatar.png\",\n \"display_name\": \"Бот Поддержки\"\n }\n}'\n```\n\n## Ответы\n\n### 201: The request has succeeded and a new resource has been created as a result.\n\n**Схема ответа:**\n\n- `data: object` (required) — Сообщение\n - `id: integer, int32` (required) — Идентификатор сообщения. Пример: `194275`\n - `entity_type: string` (required) — Тип сущности, к которой относится сообщение\n Значения: `discussion` — Беседа или канал, `thread` — Тред, `user` — Пользователь\n - `entity_id: integer, int32` (required) — Идентификатор сущности, к которой относится сообщение (беседы/канала, треда или пользователя). Пример: `334`\n - `chat_id: integer, int32` (required) — Идентификатор чата, в котором находится сообщение. Пример: `334`\n - `root_chat_id: integer, int32` (required) — Идентификатор корневого чата. Для сообщений в тредах — идентификатор чата, в котором был создан тред. Для обычных сообщений совпадает с `chat_id`. Пример: `334`\n - `content: string` (required) — Текст сообщения. Пример: `\"Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)\"`\n - `user_id: integer, int32` (required) — Идентификатор пользователя, создавшего сообщение. Пример: `12`\n - `created_at: date-time` (required) — Дата и время создания сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2021-08-28T15:57:23.000Z\"`\n - `url: string` (required) — Прямая ссылка на сообщение. Пример: `\"https://app.pachca.com/chats/334?message=194275\"`\n - `files: array of object` (required) — Прикрепленные файлы\n - `id: integer, int32` (required) — Идентификатор файла. Пример: `3560`\n - `key: string` (required) — Путь к файлу. Пример: `\"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png\"`\n - `name: string` (required) — Название файла с расширением. Пример: `\"congrat.png\"`\n - `file_type: string` (required) — Тип файла\n Значения: `file` — Обычный файл, `image` — Изображение, `audio` — Аудиофайл, `voice` — Голосовое сообщение, `video` — Видеофайл\n - `url: string` (required) — Ссылка на скачивание файла. Обычно ведёт прямо в хранилище и действует до 7 дней, а оставшийся срок может быть меньше — если такая ссылка вернула `403`, запросите сообщение заново и получите свежую. Если в пространстве включено шифрование или задан безопасный контур, ссылка ведёт на [Скачивание файла](GET /files/{id}): забирать такой файл нужно с заголовком `Authorization`, а токену нужен скоуп `files:read`. Пример: `\"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8\"`\n - `width: integer, int32` (nullable) — Ширина изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке. Пример: `1920`\n - `height: integer, int32` (nullable) — Высота изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке. Пример: `1080`\n - `duration_ms: integer, int32` (nullable) — Длительность в миллисекундах у голосового, аудио- и видеофайла. `null` у остальных файлов и если длительность не была передана при загрузке. Пример: `5400`\n - `voice_content: object` (required) — Данные голосового сообщения. Заполняется только для голосовых сообщений (`file_type` файла — `voice`), иначе `null`.\n - `duration_ms: integer, int32` (required) — Длительность голосового сообщения в миллисекундах. Пример: `5400`\n - `waveform: string` (required) — Форма волны (амплитуды) для визуализации голосового сообщения. Пример: `\"4,8,12,20,16,10,6,3\"`\n - `transcript: string` (required, nullable) — Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна. Пример: `\"Привет, посмотри пожалуйста последний отчёт\"`\n - `buttons: array of array` (required, nullable) — Массив строк, каждая из которых представлена массивом кнопок. `null`, если сообщение отправлено без кнопок.\n - `thread: object` (required, nullable) — Тред, созданный к этому сообщению. `null`, если тред не создан, а также у сообщений, которые сами находятся внутри треда.\n - `id: integer, int64` (required) — Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](POST /messages) с `entity_type: \"thread\"`. Пример: `265142`\n - `chat_id: integer, int64` (required) — Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](GET /messages). Пример: `2637266155`\n - `forwarding: object` (required) — Информация о пересланном сообщении. `null`, если сообщение не является пересланным.\n - `original_message_id: integer, int32` (required) — Идентификатор оригинального сообщения. Пример: `194275`\n - `original_chat_id: integer, int32` (required) — Идентификатор чата, в котором находится оригинальное сообщение. Пример: `334`\n - `author_id: integer, int32` (required) — Идентификатор пользователя, создавшего оригинальное сообщение. Пример: `12`\n - `original_created_at: date-time` (required) — Дата и время создания оригинального сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2025-01-15T10:30:00.000Z\"`\n - `original_thread_id: integer, int32` (required, nullable) — Идентификатор треда, в котором находится оригинальное сообщение. Пример: `null`\n - `original_thread_message_id: integer, int32` (required, nullable) — Идентификатор сообщения, к которому был создан тред, в котором находится оригинальное сообщение. `null`, если оригинальное сообщение было не в треде или тред создан без привязки к сообщению. Пример: `null`\n - `original_thread_parent_chat_id: integer, int32` (required, nullable) — Идентификатор чата сообщения, к которому был создан тред, в котором находится оригинальное сообщение. `null`, если оригинальное сообщение было не в треде или тред создан без привязки к сообщению. Пример: `null`\n - `parent_message_id: integer, int32` (required, nullable) — Идентификатор сообщения, к которому написан ответ. `null`, если сообщение не является ответом на другое сообщение. Пример: `null`\n - `display_avatar_url: string` (nullable) — Ссылка на аватарку отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. `null`, если бот не переопределял значение при отправке. Пример: `null`\n - `display_name: string` (nullable) — Полное имя отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. `null`, если бот не переопределял значение при отправке. Пример: `null`\n - `changed_at: date-time` (required, nullable) — Дата и время последнего изменения сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. У неотредактированного сообщения совпадает с датой создания. `null` у сообщений, отправленных до появления этого поля. Пример: `\"2021-08-28T16:10:00.000Z\"`\n - `deleted_at: date-time` (required, nullable) — Дата и время удаления сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null` у неудалённых сообщений. В списке сообщений удалённые не возвращаются. Пример: `null`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 194275,\n \"entity_type\": \"discussion\",\n \"entity_id\": 334,\n \"chat_id\": 334,\n \"root_chat_id\": 334,\n \"content\": \"Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)\",\n \"user_id\": 12,\n \"created_at\": \"2021-08-28T15:57:23.000Z\",\n \"url\": \"https://app.pachca.com/chats/334?message=194275\",\n \"files\": [\n {\n \"id\": 3560,\n \"key\": \"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png\",\n \"name\": \"congrat.png\",\n \"file_type\": \"image\",\n \"url\": \"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8\",\n \"width\": 1920,\n \"height\": 1080,\n \"duration_ms\": 5400\n }\n ],\n \"voice_content\": {\n \"duration_ms\": 5400,\n \"waveform\": \"4,8,12,20,16,10,6,3\",\n \"transcript\": \"Привет, посмотри пожалуйста последний отчёт\"\n },\n \"buttons\": [\n [\n {\n \"text\": \"Подробнее\",\n \"url\": \"https://example.com/details\",\n \"data\": \"awesome\"\n }\n ]\n ],\n \"thread\": {\n \"id\": 265142,\n \"chat_id\": 2637266155\n },\n \"forwarding\": {\n \"original_message_id\": 194275,\n \"original_chat_id\": 334,\n \"author_id\": 12,\n \"original_created_at\": \"2025-01-15T10:30:00.000Z\",\n \"original_thread_id\": null,\n \"original_thread_message_id\": null,\n \"original_thread_parent_chat_id\": null\n },\n \"parent_message_id\": null,\n \"display_avatar_url\": null,\n \"display_name\": null,\n \"changed_at\": \"2021-08-28T16:10:00.000Z\",\n \"deleted_at\": null\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 429: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/messages","summary":"Список сообщений чата","scope":"messages:read","plan":null,"auth":true,"paginated":true,"command":"pachca messages list","docLink":"https://dev.pachca.com/api/messages/list","describe":"# GET /messages — Список сообщений чата\n\n> **Скоуп:** `messages:read`\n\n> Пагинация: добавьте `--all` для автоматического обхода страниц\n\n## Параметры\n\n- `chat_id` — query (обязательный): Идентификатор чата (беседа, канал, диалог или чат треда)\n- `sort` — query: Поле сортировки\n- `order` — query: Направление сортировки\n- `limit` — query: Количество возвращаемых сущностей за один запрос\n- `cursor` — query: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n## Эквивалентная команда\n\n```bash\n# Добавьте --all для автоматической пагинации\npachca messages list \\\n --chat-id=198 \\\n --sort=id \\\n --order=desc \\\n --limit=1 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/messages/list\nПолная справка: `pachca api GET /messages --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/messages","description":"Список сообщений чата\n\nЛента сообщений беседы, канала, треда или личной переписки — по `chat_id` нужного чата.\n\nСообщения приходят от новых к старым, то есть первыми идут последние сообщения чата. За более ранними обращайтесь с параметрами `limit` и `cursor`.\n\nУдалённые сообщения в список не попадают.\n\nСообщения треда отдаются по `chat_id` самого треда, а не по чату, где висит родительское сообщение. Этот `chat_id` приходит в поле `thread.chat_id` родительского сообщения.","parameters":[{"name":"chat_id","in":"query","description":"Идентификатор чата (беседа, канал, диалог или чат треда)","required":true,"schema":{"type":"integer","format":"int32","example":198},"example":198,"explode":false},{"name":"sort","in":"query","description":"Поле сортировки","required":false,"schema":{"default":"id","allOf":[{"type":"string","description":"Поле сортировки сообщений","enum":["id"],"x-enum-descriptions":{"id":"По идентификатору сообщения"},"$ref":"#/components/schemas/MessageSortField"}]},"example":"id","explode":false},{"name":"order","in":"query","description":"Направление сортировки","required":false,"schema":{"default":"desc","allOf":[{"type":"string","description":"Порядок сортировки","enum":["asc","desc"],"x-enum-descriptions":{"asc":"По возрастанию","desc":"По убыванию"},"$ref":"#/components/schemas/SortOrder"}]},"example":"desc","explode":false},{"name":"limit","in":"query","description":"Количество возвращаемых сущностей за один запрос","required":false,"schema":{"type":"integer","format":"int32","default":50,"example":1,"minimum":1,"maximum":50},"example":1,"explode":false},{"name":"cursor","in":"query","description":"Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)","required":false,"schema":{"type":"string","example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9"},"example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9","explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными и пагинацией","required":["data","meta"],"properties":{"data":{"type":"array","items":{"type":"object","description":"Сообщение","required":["id","entity_type","entity_id","chat_id","root_chat_id","content","user_id","created_at","url","files","voice_content","buttons","thread","forwarding","parent_message_id","changed_at","deleted_at"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор сообщения","example":194275},"entity_type":{"description":"Тип сущности, к которой относится сообщение","example":"discussion","allOf":[{"type":"string","description":"Тип сущности для сообщений","enum":["discussion","thread","user"],"x-enum-descriptions":{"discussion":"Беседа или канал","thread":"Тред","user":"Пользователь"},"$ref":"#/components/schemas/MessageEntityType"}]},"entity_id":{"type":"integer","format":"int32","description":"Идентификатор сущности, к которой относится сообщение (беседы/канала, треда или пользователя)","example":334},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором находится сообщение","example":334},"root_chat_id":{"type":"integer","format":"int32","description":"Идентификатор корневого чата. Для сообщений в тредах — идентификатор чата, в котором был создан тред. Для обычных сообщений совпадает с `chat_id`.","example":334},"content":{"type":"string","description":"Текст сообщения","example":"Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)"},"user_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, создавшего сообщение","example":12},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2021-08-28T15:57:23.000Z"},"url":{"type":"string","description":"Прямая ссылка на сообщение","example":"https://app.pachca.com/chats/334?message=194275"},"files":{"type":"array","description":"Прикрепленные файлы","items":{"type":"object","description":"Файл","required":["id","key","name","file_type","url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор файла","example":3560},"key":{"type":"string","description":"Путь к файлу","example":"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png"},"name":{"type":"string","description":"Название файла с расширением","example":"congrat.png"},"file_type":{"description":"Тип файла","example":"image","allOf":[{"type":"string","description":"Тип файла","enum":["file","image","audio","voice","video"],"x-enum-descriptions":{"file":"Обычный файл","image":"Изображение","audio":"Аудиофайл","voice":"Голосовое сообщение","video":"Видеофайл"},"$ref":"#/components/schemas/FileType"}]},"url":{"type":"string","description":"Ссылка на скачивание файла. Обычно ведёт прямо в хранилище и действует до 7 дней, а оставшийся срок может быть меньше — если такая ссылка вернула `403`, запросите сообщение заново и получите свежую. Если в пространстве включено шифрование или задан безопасный контур, ссылка ведёт на [Скачивание файла](GET /files/{id}): забирать такой файл нужно с заголовком `Authorization`, а токену нужен скоуп `files:read`.","example":"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8"},"width":{"type":"integer","format":"int32","description":"Ширина изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке.","example":1920,"nullable":true},"height":{"type":"integer","format":"int32","description":"Высота изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке.","example":1080,"nullable":true},"duration_ms":{"type":"integer","format":"int32","description":"Длительность в миллисекундах у голосового, аудио- и видеофайла. `null` у остальных файлов и если длительность не была передана при загрузке.","example":5400,"nullable":true}},"$ref":"#/components/schemas/File"}},"voice_content":{"type":"object","description":"Данные голосового сообщения. Заполняется только для голосовых сообщений (`file_type` файла — `voice`), иначе `null`.","nullable":true,"allOf":[{"type":"object","description":"Данные голосового сообщения","required":["duration_ms","waveform","transcript"],"properties":{"duration_ms":{"type":"integer","format":"int32","description":"Длительность голосового сообщения в миллисекундах","example":5400},"waveform":{"type":"string","description":"Форма волны (амплитуды) для визуализации голосового сообщения","example":"4,8,12,20,16,10,6,3"},"transcript":{"type":"string","description":"Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна.","example":"Привет, посмотри пожалуйста последний отчёт","nullable":true}},"$ref":"#/components/schemas/VoiceContent"}]},"buttons":{"type":"array","description":"Массив строк, каждая из которых представлена массивом кнопок. `null`, если сообщение отправлено без кнопок.","nullable":true,"items":{"type":"array","items":{"type":"object","description":"Кнопка","required":["text"],"properties":{"text":{"type":"string","description":"Текст, отображаемый на кнопке","example":"Подробнее","maxLength":255},"url":{"type":"string","description":"Ссылка, которая будет открыта по нажатию кнопки. У кнопки должно быть заполнено ровно одно из полей `url` и `data`.","example":"https://example.com/details","maxLength":1024},"data":{"type":"string","description":"Данные, которые будут отправлены в исходящем вебхуке по нажатию кнопки. У кнопки должно быть заполнено ровно одно из полей `url` и `data`.","example":"awesome","maxLength":255}},"$ref":"#/components/schemas/Button"}}},"thread":{"type":"object","description":"Тред, созданный к этому сообщению. `null`, если тред не создан, а также у сообщений, которые сами находятся внутри треда.","required":["id","chat_id"],"nullable":true,"properties":{"id":{"type":"integer","format":"int64","description":"Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](POST /messages) с `entity_type: \"thread\"`.","example":265142},"chat_id":{"type":"integer","format":"int64","description":"Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](GET /messages).","example":2637266155}}},"forwarding":{"type":"object","description":"Информация о пересланном сообщении. `null`, если сообщение не является пересланным.","nullable":true,"allOf":[{"type":"object","description":"Информация о пересланном сообщении","required":["original_message_id","original_chat_id","author_id","original_created_at","original_thread_id","original_thread_message_id","original_thread_parent_chat_id"],"properties":{"original_message_id":{"type":"integer","format":"int32","description":"Идентификатор оригинального сообщения","example":194275},"original_chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором находится оригинальное сообщение","example":334},"author_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, создавшего оригинальное сообщение","example":12},"original_created_at":{"type":"string","format":"date-time","description":"Дата и время создания оригинального сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2025-01-15T10:30:00.000Z"},"original_thread_id":{"type":"integer","format":"int32","description":"Идентификатор треда, в котором находится оригинальное сообщение","example":null,"nullable":true},"original_thread_message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, к которому был создан тред, в котором находится оригинальное сообщение. `null`, если оригинальное сообщение было не в треде или тред создан без привязки к сообщению.","example":null,"nullable":true},"original_thread_parent_chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата сообщения, к которому был создан тред, в котором находится оригинальное сообщение. `null`, если оригинальное сообщение было не в треде или тред создан без привязки к сообщению.","example":null,"nullable":true}},"$ref":"#/components/schemas/Forwarding"}]},"parent_message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, к которому написан ответ. `null`, если сообщение не является ответом на другое сообщение.","example":null,"nullable":true},"display_avatar_url":{"type":"string","description":"Ссылка на аватарку отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. `null`, если бот не переопределял значение при отправке.","example":null,"nullable":true},"display_name":{"type":"string","description":"Полное имя отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. `null`, если бот не переопределял значение при отправке.","example":null,"nullable":true},"changed_at":{"type":"string","format":"date-time","description":"Дата и время последнего изменения сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. У неотредактированного сообщения совпадает с датой создания. `null` у сообщений, отправленных до появления этого поля.","example":"2021-08-28T16:10:00.000Z","nullable":true},"deleted_at":{"type":"string","format":"date-time","description":"Дата и время удаления сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null` у неудалённых сообщений. В списке сообщений удалённые не возвращаются.","example":null,"nullable":true}},"$ref":"#/components/schemas/Message"}},"meta":{"type":"object","description":"Метаданные пагинации","required":["paginate"],"properties":{"paginate":{"type":"object","description":"Вспомогательная информация","required":["next_page"],"properties":{"next_page":{"type":"string","description":"Курсор пагинации следующей страницы","example":"eyJxZCO2MiwiZGlyIjomSNYjIn3"},"prev_page":{"type":"string","description":"Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка.","example":"eyJxZCO2MiwiZGlyIjoiYXNjIn0"},"has_next":{"type":"boolean","description":"Есть ли ещё данные на следующей странице. На последней странице — `false`.","example":true},"has_prev":{"type":"boolean","description":"Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`.","example":false}}}},"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"messages:read","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":true},"docs":"# Список сообщений чата\n\n**Метод**: `GET`\n\n**Путь**: `/messages`\n\n> **Скоуп:** `messages:read`\n\nЛента сообщений беседы, канала, треда или личной переписки — по `chat_id` нужного чата.\n\nСообщения приходят от новых к старым, то есть первыми идут последние сообщения чата. За более ранними обращайтесь с параметрами `limit` и `cursor`.\n\nУдалённые сообщения в список не попадают.\n\nСообщения треда отдаются по `chat_id` самого треда, а не по чату, где висит родительское сообщение. Этот `chat_id` приходит в поле `thread.chat_id` родительского сообщения.\n\n## Параметры\n\n### Query параметры\n\n- `chat_id: integer, int32` (required) — Идентификатор чата (беседа, канал, диалог или чат треда)\n- `sort: string` (default: id) — Поле сортировки\n- `order: string` (default: desc) — Направление сортировки\n- `limit: integer, int32` (default: 50) — Количество возвращаемых сущностей за один запрос\n- `cursor: string` — Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n\n## Пример запроса\n\n```bash\n# Для получения следующей страницы используйте cursor из meta.paginate.next_page\ncurl \"https://api.pachca.com/api/shared/v1/messages?chat_id=198&sort=id&order=desc&limit=1\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: array of object` (required)\n - `id: integer, int32` (required) — Идентификатор сообщения. Пример: `194275`\n - `entity_type: string` (required) — Тип сущности, к которой относится сообщение\n Значения: `discussion` — Беседа или канал, `thread` — Тред, `user` — Пользователь\n - `entity_id: integer, int32` (required) — Идентификатор сущности, к которой относится сообщение (беседы/канала, треда или пользователя). Пример: `334`\n - `chat_id: integer, int32` (required) — Идентификатор чата, в котором находится сообщение. Пример: `334`\n - `root_chat_id: integer, int32` (required) — Идентификатор корневого чата. Для сообщений в тредах — идентификатор чата, в котором был создан тред. Для обычных сообщений совпадает с `chat_id`. Пример: `334`\n - `content: string` (required) — Текст сообщения. Пример: `\"Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)\"`\n - `user_id: integer, int32` (required) — Идентификатор пользователя, создавшего сообщение. Пример: `12`\n - `created_at: date-time` (required) — Дата и время создания сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2021-08-28T15:57:23.000Z\"`\n - `url: string` (required) — Прямая ссылка на сообщение. Пример: `\"https://app.pachca.com/chats/334?message=194275\"`\n - `files: array of object` (required) — Прикрепленные файлы\n - `id: integer, int32` (required) — Идентификатор файла. Пример: `3560`\n - `key: string` (required) — Путь к файлу. Пример: `\"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png\"`\n - `name: string` (required) — Название файла с расширением. Пример: `\"congrat.png\"`\n - `file_type: string` (required) — Тип файла\n Значения: `file` — Обычный файл, `image` — Изображение, `audio` — Аудиофайл, `voice` — Голосовое сообщение, `video` — Видеофайл\n - `url: string` (required) — Ссылка на скачивание файла. Обычно ведёт прямо в хранилище и действует до 7 дней, а оставшийся срок может быть меньше — если такая ссылка вернула `403`, запросите сообщение заново и получите свежую. Если в пространстве включено шифрование или задан безопасный контур, ссылка ведёт на [Скачивание файла](GET /files/{id}): забирать такой файл нужно с заголовком `Authorization`, а токену нужен скоуп `files:read`. Пример: `\"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8\"`\n - `width: integer, int32` (nullable) — Ширина изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке. Пример: `1920`\n - `height: integer, int32` (nullable) — Высота изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке. Пример: `1080`\n - `duration_ms: integer, int32` (nullable) — Длительность в миллисекундах у голосового, аудио- и видеофайла. `null` у остальных файлов и если длительность не была передана при загрузке. Пример: `5400`\n - `voice_content: object` (required) — Данные голосового сообщения. Заполняется только для голосовых сообщений (`file_type` файла — `voice`), иначе `null`.\n - `duration_ms: integer, int32` (required) — Длительность голосового сообщения в миллисекундах. Пример: `5400`\n - `waveform: string` (required) — Форма волны (амплитуды) для визуализации голосового сообщения. Пример: `\"4,8,12,20,16,10,6,3\"`\n - `transcript: string` (required, nullable) — Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна. Пример: `\"Привет, посмотри пожалуйста последний отчёт\"`\n - `buttons: array of array` (required, nullable) — Массив строк, каждая из которых представлена массивом кнопок. `null`, если сообщение отправлено без кнопок.\n - `thread: object` (required, nullable) — Тред, созданный к этому сообщению. `null`, если тред не создан, а также у сообщений, которые сами находятся внутри треда.\n - `id: integer, int64` (required) — Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](POST /messages) с `entity_type: \"thread\"`. Пример: `265142`\n - `chat_id: integer, int64` (required) — Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](GET /messages). Пример: `2637266155`\n - `forwarding: object` (required) — Информация о пересланном сообщении. `null`, если сообщение не является пересланным.\n - `original_message_id: integer, int32` (required) — Идентификатор оригинального сообщения. Пример: `194275`\n - `original_chat_id: integer, int32` (required) — Идентификатор чата, в котором находится оригинальное сообщение. Пример: `334`\n - `author_id: integer, int32` (required) — Идентификатор пользователя, создавшего оригинальное сообщение. Пример: `12`\n - `original_created_at: date-time` (required) — Дата и время создания оригинального сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2025-01-15T10:30:00.000Z\"`\n - `original_thread_id: integer, int32` (required, nullable) — Идентификатор треда, в котором находится оригинальное сообщение. Пример: `null`\n - `original_thread_message_id: integer, int32` (required, nullable) — Идентификатор сообщения, к которому был создан тред, в котором находится оригинальное сообщение. `null`, если оригинальное сообщение было не в треде или тред создан без привязки к сообщению. Пример: `null`\n - `original_thread_parent_chat_id: integer, int32` (required, nullable) — Идентификатор чата сообщения, к которому был создан тред, в котором находится оригинальное сообщение. `null`, если оригинальное сообщение было не в треде или тред создан без привязки к сообщению. Пример: `null`\n - `parent_message_id: integer, int32` (required, nullable) — Идентификатор сообщения, к которому написан ответ. `null`, если сообщение не является ответом на другое сообщение. Пример: `null`\n - `display_avatar_url: string` (nullable) — Ссылка на аватарку отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. `null`, если бот не переопределял значение при отправке. Пример: `null`\n - `display_name: string` (nullable) — Полное имя отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. `null`, если бот не переопределял значение при отправке. Пример: `null`\n - `changed_at: date-time` (required, nullable) — Дата и время последнего изменения сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. У неотредактированного сообщения совпадает с датой создания. `null` у сообщений, отправленных до появления этого поля. Пример: `\"2021-08-28T16:10:00.000Z\"`\n - `deleted_at: date-time` (required, nullable) — Дата и время удаления сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null` у неудалённых сообщений. В списке сообщений удалённые не возвращаются. Пример: `null`\n- `meta: object` (required) — Метаданные пагинации\n - `paginate: object` (required) — Вспомогательная информация\n - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `\"eyJxZCO2MiwiZGlyIjomSNYjIn3\"`\n - `prev_page: string` — Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка. Пример: `\"eyJxZCO2MiwiZGlyIjoiYXNjIn0\"`\n - `has_next: boolean` — Есть ли ещё данные на следующей странице. На последней странице — `false`. Пример: `true`\n - `has_prev: boolean` — Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`. Пример: `false`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": [\n {\n \"id\": 194275,\n \"entity_type\": \"discussion\",\n \"entity_id\": 334,\n \"chat_id\": 334,\n \"root_chat_id\": 334,\n \"content\": \"Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)\",\n \"user_id\": 12,\n \"created_at\": \"2021-08-28T15:57:23.000Z\",\n \"url\": \"https://app.pachca.com/chats/334?message=194275\",\n \"files\": [\n {\n \"id\": 3560,\n \"key\": \"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png\",\n \"name\": \"congrat.png\",\n \"file_type\": \"image\",\n \"url\": \"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8\",\n \"width\": 1920,\n \"height\": 1080,\n \"duration_ms\": 5400\n }\n ],\n \"voice_content\": {\n \"duration_ms\": 5400,\n \"waveform\": \"4,8,12,20,16,10,6,3\",\n \"transcript\": \"Привет, посмотри пожалуйста последний отчёт\"\n },\n \"buttons\": [\n [\n {\n \"text\": null\n }\n ]\n ],\n \"thread\": {\n \"id\": 265142,\n \"chat_id\": 2637266155\n },\n \"forwarding\": {\n \"original_message_id\": 194275,\n \"original_chat_id\": 334,\n \"author_id\": 12,\n \"original_created_at\": \"2025-01-15T10:30:00.000Z\",\n \"original_thread_id\": null,\n \"original_thread_message_id\": null,\n \"original_thread_parent_chat_id\": null\n },\n \"parent_message_id\": null,\n \"display_avatar_url\": null,\n \"display_name\": null,\n \"changed_at\": \"2021-08-28T16:10:00.000Z\",\n \"deleted_at\": null\n }\n ],\n \"meta\": {\n \"paginate\": {\n \"next_page\": \"eyJxZCO2MiwiZGlyIjomSNYjIn3\",\n \"prev_page\": \"eyJxZCO2MiwiZGlyIjoiYXNjIn0\",\n \"has_next\": true,\n \"has_prev\": false\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/messages/{id}","summary":"Информация о сообщении","scope":"messages:read","plan":null,"auth":true,"paginated":false,"command":"pachca messages get","docLink":"https://dev.pachca.com/api/messages/get","describe":"# GET /messages/{id} — Информация о сообщении\n\n> **Скоуп:** `messages:read`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор сообщения\n\n## Эквивалентная команда\n\n```bash\npachca messages get 194275 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/messages/get\nПолная справка: `pachca api GET /messages/{id} --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/messages/{id}","description":"Информация о сообщении\n\nСообщение вместе с автором, вложениями и кнопками.\n\nУдалённое сообщение метод всё равно отдаёт — с пустым `content` и заполненным `deleted_at`, без файлов и реакций.\n\nСсылки на файлы в ответе временные. Обычный файл отдаётся прямой ссылкой на хранилище, а защищённый и зашифрованный — адресом API, по которому нужен токен со скоупом `files:read`.","parameters":[{"name":"id","in":"path","description":"Идентификатор сообщения","required":true,"schema":{"type":"integer","format":"int32","example":194275},"example":194275}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Сообщение","required":["id","entity_type","entity_id","chat_id","root_chat_id","content","user_id","created_at","url","files","voice_content","buttons","thread","forwarding","parent_message_id","changed_at","deleted_at"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор сообщения","example":194275},"entity_type":{"description":"Тип сущности, к которой относится сообщение","example":"discussion","allOf":[{"type":"string","description":"Тип сущности для сообщений","enum":["discussion","thread","user"],"x-enum-descriptions":{"discussion":"Беседа или канал","thread":"Тред","user":"Пользователь"},"$ref":"#/components/schemas/MessageEntityType"}]},"entity_id":{"type":"integer","format":"int32","description":"Идентификатор сущности, к которой относится сообщение (беседы/канала, треда или пользователя)","example":334},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором находится сообщение","example":334},"root_chat_id":{"type":"integer","format":"int32","description":"Идентификатор корневого чата. Для сообщений в тредах — идентификатор чата, в котором был создан тред. Для обычных сообщений совпадает с `chat_id`.","example":334},"content":{"type":"string","description":"Текст сообщения","example":"Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)"},"user_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, создавшего сообщение","example":12},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2021-08-28T15:57:23.000Z"},"url":{"type":"string","description":"Прямая ссылка на сообщение","example":"https://app.pachca.com/chats/334?message=194275"},"files":{"type":"array","description":"Прикрепленные файлы","items":{"type":"object","description":"Файл","required":["id","key","name","file_type","url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор файла","example":3560},"key":{"type":"string","description":"Путь к файлу","example":"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png"},"name":{"type":"string","description":"Название файла с расширением","example":"congrat.png"},"file_type":{"description":"Тип файла","example":"image","allOf":[{"type":"string","description":"Тип файла","enum":["file","image","audio","voice","video"],"x-enum-descriptions":{"file":"Обычный файл","image":"Изображение","audio":"Аудиофайл","voice":"Голосовое сообщение","video":"Видеофайл"},"$ref":"#/components/schemas/FileType"}]},"url":{"type":"string","description":"Ссылка на скачивание файла. Обычно ведёт прямо в хранилище и действует до 7 дней, а оставшийся срок может быть меньше — если такая ссылка вернула `403`, запросите сообщение заново и получите свежую. Если в пространстве включено шифрование или задан безопасный контур, ссылка ведёт на [Скачивание файла](GET /files/{id}): забирать такой файл нужно с заголовком `Authorization`, а токену нужен скоуп `files:read`.","example":"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8"},"width":{"type":"integer","format":"int32","description":"Ширина изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке.","example":1920,"nullable":true},"height":{"type":"integer","format":"int32","description":"Высота изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке.","example":1080,"nullable":true},"duration_ms":{"type":"integer","format":"int32","description":"Длительность в миллисекундах у голосового, аудио- и видеофайла. `null` у остальных файлов и если длительность не была передана при загрузке.","example":5400,"nullable":true}},"$ref":"#/components/schemas/File"}},"voice_content":{"type":"object","description":"Данные голосового сообщения. Заполняется только для голосовых сообщений (`file_type` файла — `voice`), иначе `null`.","nullable":true,"allOf":[{"type":"object","description":"Данные голосового сообщения","required":["duration_ms","waveform","transcript"],"properties":{"duration_ms":{"type":"integer","format":"int32","description":"Длительность голосового сообщения в миллисекундах","example":5400},"waveform":{"type":"string","description":"Форма волны (амплитуды) для визуализации голосового сообщения","example":"4,8,12,20,16,10,6,3"},"transcript":{"type":"string","description":"Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна.","example":"Привет, посмотри пожалуйста последний отчёт","nullable":true}},"$ref":"#/components/schemas/VoiceContent"}]},"buttons":{"type":"array","description":"Массив строк, каждая из которых представлена массивом кнопок. `null`, если сообщение отправлено без кнопок.","nullable":true,"items":{"type":"array","items":{"type":"object","description":"Кнопка","required":["text"],"properties":{"text":{"type":"string","description":"Текст, отображаемый на кнопке","example":"Подробнее","maxLength":255},"url":{"type":"string","description":"Ссылка, которая будет открыта по нажатию кнопки. У кнопки должно быть заполнено ровно одно из полей `url` и `data`.","example":"https://example.com/details","maxLength":1024},"data":{"type":"string","description":"Данные, которые будут отправлены в исходящем вебхуке по нажатию кнопки. У кнопки должно быть заполнено ровно одно из полей `url` и `data`.","example":"awesome","maxLength":255}},"$ref":"#/components/schemas/Button"}}},"thread":{"type":"object","description":"Тред, созданный к этому сообщению. `null`, если тред не создан, а также у сообщений, которые сами находятся внутри треда.","required":["id","chat_id"],"nullable":true,"properties":{"id":{"type":"integer","format":"int64","description":"Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](POST /messages) с `entity_type: \"thread\"`.","example":265142},"chat_id":{"type":"integer","format":"int64","description":"Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](GET /messages).","example":2637266155}}},"forwarding":{"type":"object","description":"Информация о пересланном сообщении. `null`, если сообщение не является пересланным.","nullable":true,"allOf":[{"type":"object","description":"Информация о пересланном сообщении","required":["original_message_id","original_chat_id","author_id","original_created_at","original_thread_id","original_thread_message_id","original_thread_parent_chat_id"],"properties":{"original_message_id":{"type":"integer","format":"int32","description":"Идентификатор оригинального сообщения","example":194275},"original_chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором находится оригинальное сообщение","example":334},"author_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, создавшего оригинальное сообщение","example":12},"original_created_at":{"type":"string","format":"date-time","description":"Дата и время создания оригинального сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2025-01-15T10:30:00.000Z"},"original_thread_id":{"type":"integer","format":"int32","description":"Идентификатор треда, в котором находится оригинальное сообщение","example":null,"nullable":true},"original_thread_message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, к которому был создан тред, в котором находится оригинальное сообщение. `null`, если оригинальное сообщение было не в треде или тред создан без привязки к сообщению.","example":null,"nullable":true},"original_thread_parent_chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата сообщения, к которому был создан тред, в котором находится оригинальное сообщение. `null`, если оригинальное сообщение было не в треде или тред создан без привязки к сообщению.","example":null,"nullable":true}},"$ref":"#/components/schemas/Forwarding"}]},"parent_message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, к которому написан ответ. `null`, если сообщение не является ответом на другое сообщение.","example":null,"nullable":true},"display_avatar_url":{"type":"string","description":"Ссылка на аватарку отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. `null`, если бот не переопределял значение при отправке.","example":null,"nullable":true},"display_name":{"type":"string","description":"Полное имя отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. `null`, если бот не переопределял значение при отправке.","example":null,"nullable":true},"changed_at":{"type":"string","format":"date-time","description":"Дата и время последнего изменения сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. У неотредактированного сообщения совпадает с датой создания. `null` у сообщений, отправленных до появления этого поля.","example":"2021-08-28T16:10:00.000Z","nullable":true},"deleted_at":{"type":"string","format":"date-time","description":"Дата и время удаления сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null` у неудалённых сообщений. В списке сообщений удалённые не возвращаются.","example":null,"nullable":true}},"$ref":"#/components/schemas/Message"}}}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"messages:read","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":false},"docs":"# Информация о сообщении\n\n**Метод**: `GET`\n\n**Путь**: `/messages/{id}`\n\n> **Скоуп:** `messages:read`\n\nСообщение вместе с автором, вложениями и кнопками.\n\nУдалённое сообщение метод всё равно отдаёт — с пустым `content` и заполненным `deleted_at`, без файлов и реакций.\n\nСсылки на файлы в ответе временные. Обычный файл отдаётся прямой ссылкой на хранилище, а защищённый и зашифрованный — адресом API, по которому нужен токен со скоупом `files:read`.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор сообщения\n\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/messages/194275\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Сообщение\n - `id: integer, int32` (required) — Идентификатор сообщения. Пример: `194275`\n - `entity_type: string` (required) — Тип сущности, к которой относится сообщение\n Значения: `discussion` — Беседа или канал, `thread` — Тред, `user` — Пользователь\n - `entity_id: integer, int32` (required) — Идентификатор сущности, к которой относится сообщение (беседы/канала, треда или пользователя). Пример: `334`\n - `chat_id: integer, int32` (required) — Идентификатор чата, в котором находится сообщение. Пример: `334`\n - `root_chat_id: integer, int32` (required) — Идентификатор корневого чата. Для сообщений в тредах — идентификатор чата, в котором был создан тред. Для обычных сообщений совпадает с `chat_id`. Пример: `334`\n - `content: string` (required) — Текст сообщения. Пример: `\"Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)\"`\n - `user_id: integer, int32` (required) — Идентификатор пользователя, создавшего сообщение. Пример: `12`\n - `created_at: date-time` (required) — Дата и время создания сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2021-08-28T15:57:23.000Z\"`\n - `url: string` (required) — Прямая ссылка на сообщение. Пример: `\"https://app.pachca.com/chats/334?message=194275\"`\n - `files: array of object` (required) — Прикрепленные файлы\n - `id: integer, int32` (required) — Идентификатор файла. Пример: `3560`\n - `key: string` (required) — Путь к файлу. Пример: `\"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png\"`\n - `name: string` (required) — Название файла с расширением. Пример: `\"congrat.png\"`\n - `file_type: string` (required) — Тип файла\n Значения: `file` — Обычный файл, `image` — Изображение, `audio` — Аудиофайл, `voice` — Голосовое сообщение, `video` — Видеофайл\n - `url: string` (required) — Ссылка на скачивание файла. Обычно ведёт прямо в хранилище и действует до 7 дней, а оставшийся срок может быть меньше — если такая ссылка вернула `403`, запросите сообщение заново и получите свежую. Если в пространстве включено шифрование или задан безопасный контур, ссылка ведёт на [Скачивание файла](GET /files/{id}): забирать такой файл нужно с заголовком `Authorization`, а токену нужен скоуп `files:read`. Пример: `\"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8\"`\n - `width: integer, int32` (nullable) — Ширина изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке. Пример: `1920`\n - `height: integer, int32` (nullable) — Высота изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке. Пример: `1080`\n - `duration_ms: integer, int32` (nullable) — Длительность в миллисекундах у голосового, аудио- и видеофайла. `null` у остальных файлов и если длительность не была передана при загрузке. Пример: `5400`\n - `voice_content: object` (required) — Данные голосового сообщения. Заполняется только для голосовых сообщений (`file_type` файла — `voice`), иначе `null`.\n - `duration_ms: integer, int32` (required) — Длительность голосового сообщения в миллисекундах. Пример: `5400`\n - `waveform: string` (required) — Форма волны (амплитуды) для визуализации голосового сообщения. Пример: `\"4,8,12,20,16,10,6,3\"`\n - `transcript: string` (required, nullable) — Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна. Пример: `\"Привет, посмотри пожалуйста последний отчёт\"`\n - `buttons: array of array` (required, nullable) — Массив строк, каждая из которых представлена массивом кнопок. `null`, если сообщение отправлено без кнопок.\n - `thread: object` (required, nullable) — Тред, созданный к этому сообщению. `null`, если тред не создан, а также у сообщений, которые сами находятся внутри треда.\n - `id: integer, int64` (required) — Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](POST /messages) с `entity_type: \"thread\"`. Пример: `265142`\n - `chat_id: integer, int64` (required) — Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](GET /messages). Пример: `2637266155`\n - `forwarding: object` (required) — Информация о пересланном сообщении. `null`, если сообщение не является пересланным.\n - `original_message_id: integer, int32` (required) — Идентификатор оригинального сообщения. Пример: `194275`\n - `original_chat_id: integer, int32` (required) — Идентификатор чата, в котором находится оригинальное сообщение. Пример: `334`\n - `author_id: integer, int32` (required) — Идентификатор пользователя, создавшего оригинальное сообщение. Пример: `12`\n - `original_created_at: date-time` (required) — Дата и время создания оригинального сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2025-01-15T10:30:00.000Z\"`\n - `original_thread_id: integer, int32` (required, nullable) — Идентификатор треда, в котором находится оригинальное сообщение. Пример: `null`\n - `original_thread_message_id: integer, int32` (required, nullable) — Идентификатор сообщения, к которому был создан тред, в котором находится оригинальное сообщение. `null`, если оригинальное сообщение было не в треде или тред создан без привязки к сообщению. Пример: `null`\n - `original_thread_parent_chat_id: integer, int32` (required, nullable) — Идентификатор чата сообщения, к которому был создан тред, в котором находится оригинальное сообщение. `null`, если оригинальное сообщение было не в треде или тред создан без привязки к сообщению. Пример: `null`\n - `parent_message_id: integer, int32` (required, nullable) — Идентификатор сообщения, к которому написан ответ. `null`, если сообщение не является ответом на другое сообщение. Пример: `null`\n - `display_avatar_url: string` (nullable) — Ссылка на аватарку отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. `null`, если бот не переопределял значение при отправке. Пример: `null`\n - `display_name: string` (nullable) — Полное имя отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. `null`, если бот не переопределял значение при отправке. Пример: `null`\n - `changed_at: date-time` (required, nullable) — Дата и время последнего изменения сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. У неотредактированного сообщения совпадает с датой создания. `null` у сообщений, отправленных до появления этого поля. Пример: `\"2021-08-28T16:10:00.000Z\"`\n - `deleted_at: date-time` (required, nullable) — Дата и время удаления сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null` у неудалённых сообщений. В списке сообщений удалённые не возвращаются. Пример: `null`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 194275,\n \"entity_type\": \"discussion\",\n \"entity_id\": 334,\n \"chat_id\": 334,\n \"root_chat_id\": 334,\n \"content\": \"Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)\",\n \"user_id\": 12,\n \"created_at\": \"2021-08-28T15:57:23.000Z\",\n \"url\": \"https://app.pachca.com/chats/334?message=194275\",\n \"files\": [\n {\n \"id\": 3560,\n \"key\": \"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png\",\n \"name\": \"congrat.png\",\n \"file_type\": \"image\",\n \"url\": \"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8\",\n \"width\": 1920,\n \"height\": 1080,\n \"duration_ms\": 5400\n }\n ],\n \"voice_content\": {\n \"duration_ms\": 5400,\n \"waveform\": \"4,8,12,20,16,10,6,3\",\n \"transcript\": \"Привет, посмотри пожалуйста последний отчёт\"\n },\n \"buttons\": [\n [\n {\n \"text\": \"Подробнее\",\n \"url\": \"https://example.com/details\",\n \"data\": \"awesome\"\n }\n ]\n ],\n \"thread\": {\n \"id\": 265142,\n \"chat_id\": 2637266155\n },\n \"forwarding\": {\n \"original_message_id\": 194275,\n \"original_chat_id\": 334,\n \"author_id\": 12,\n \"original_created_at\": \"2025-01-15T10:30:00.000Z\",\n \"original_thread_id\": null,\n \"original_thread_message_id\": null,\n \"original_thread_parent_chat_id\": null\n },\n \"parent_message_id\": null,\n \"display_avatar_url\": null,\n \"display_name\": null,\n \"changed_at\": \"2021-08-28T16:10:00.000Z\",\n \"deleted_at\": null\n }\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"PUT","path":"/messages/{id}","summary":"Редактирование сообщения","scope":"messages:update","plan":null,"auth":true,"paginated":false,"command":"pachca messages update","docLink":"https://dev.pachca.com/api/messages/update","describe":"# PUT /messages/{id} — Редактирование сообщения\n\n> **Скоуп:** `messages:update`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор сообщения\n\n## Тело запроса\n\n- `message: object` (required) — Собранный объект параметров редактируемого сообщения\n - `content: string` — Текст сообщения. Поддерживает упоминания: `@nickname` или `<@user_id>` (будет автоматически преобразовано в `@nickname`). У мульти-гостя `<@user_id>` недоступного ему сотрудника остаётся в тексте как есть.\n - `files: array of object` — Прикрепляемые файлы\n - `key: string` (required, max length: 1000) — Путь к файлу, полученный в методе [Загрузка файла](POST /direct_url)\n - `name: string` (required, max length: 255) — Название файла, которое вы хотите отображать пользователю. Расширение должно совпадать с расширением файла в `key`, иначе ответ будет 422 с кодом `wrong_params`.\n - `file_type: string` — Тип файла\n Значения: `file` — Обычный файл, `image` — Изображение, `audio` — Аудиофайл, `voice` — Голосовое сообщение, `video` — Видеофайл\n - `size: integer, int64` — Размер файла в байтах, отображаемый пользователю\n - `width: integer, int32` — Ширина изображения в px (используется в случае, если file_type указан как image)\n - `height: integer, int32` — Высота изображения в px (используется в случае, если file_type указан как image)\n - `duration_ms: integer, int32` (min: 1) — Длительность в миллисекундах. Обязательно для голосовых сообщений (`file_type` — `voice`), для других типов не используется. Голосовое сообщение длиннее 30 минут (1 800 000 мс) отклоняется с `422`.\n - `waveform: string` (max length: 256) — Форма волны для визуализации голосового сообщения. Без неё запрос с голосовым файлом (`file_type` — `voice`) не пройдёт проверку, но при редактировании присланное значение не сохраняется. Для других типов не используется.\n - `buttons: array of array` (max items: 32) — Массив строк, каждая из которых представлена массивом кнопок. Максимум 100 кнопок у сообщения, до 8 кнопок в строке. Для удаления кнопок пришлите пустой массив.\n - `display_avatar_url: string` — Ссылка на специальную аватарку отправителя для этого сообщения. Использование этого поля возможно только с access_token бота.\n - `display_name: string` — Полное специальное имя отправителя для этого сообщения. Использование этого поля возможно только с access_token бота.\n\n## Эквивалентная команда\n\n```bash\npachca messages update 194275 \\\n --content='Вот попробуйте написать правильно это с первого раза: Будущий, Полощи, Прийти, Грейпфрут, Мозаика, Бюллетень, Дуршлаг, Винегрет.' \\\n --files='[{\"key\":\"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png\",\"name\":\"logo.png\",\"file_type\":\"image\",\"size\":12345,\"width\":800,\"height\":600,\"duration_ms\":5400,\"waveform\":\"4,8,12,20,16,10,6,3\"}]' \\\n --buttons='[[{\"text\":\"Подробнее\",\"url\":\"https://example.com/details\"}]]' \\\n --display-avatar-url=https://example.com/avatar.png \\\n --display-name='Бот Поддержки' \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/messages/update\nПолная справка: `pachca api PUT /messages/{id} --docs` · схема: `--spec`\n","spec":{"method":"PUT","path":"/messages/{id}","description":"Редактирование сообщения\n\nМеняет текст, файлы и кнопки уже отправленного сообщения. В интерфейсе у него появляется пометка о правке.\n\nПравить можно только свои сообщения, и только обычные: системное, пересланное и голосовое метод не меняет. Ограничений по давности отправки нет.\n\nФайлы и кнопки заменяются целиком: пустой массив снимает их все, а отсутствие поля в теле оставляет как было. Любая правка убирает превью ссылок, и заново оно не строится.","parameters":[{"name":"id","in":"path","description":"Идентификатор сообщения","required":true,"schema":{"type":"integer","format":"int32","example":194275},"example":194275}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на редактирование сообщения","required":["message"],"properties":{"message":{"type":"object","description":"Собранный объект параметров редактируемого сообщения","properties":{"content":{"type":"string","description":"Текст сообщения. Поддерживает упоминания: `@nickname` или `<@user_id>` (будет автоматически преобразовано в `@nickname`). У мульти-гостя `<@user_id>` недоступного ему сотрудника остаётся в тексте как есть.","example":"Вот попробуйте написать правильно это с первого раза: Будущий, Полощи, Прийти, Грейпфрут, Мозаика, Бюллетень, Дуршлаг, Винегрет."},"files":{"type":"array","description":"Прикрепляемые файлы","items":{"type":"object","required":["key","name"],"properties":{"key":{"type":"string","description":"Путь к файлу, полученный в методе [Загрузка файла](POST /direct_url)","example":"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png","maxLength":1000},"name":{"type":"string","description":"Название файла, которое вы хотите отображать пользователю. Расширение должно совпадать с расширением файла в `key`, иначе ответ будет 422 с кодом `wrong_params`.","example":"logo.png","maxLength":255},"file_type":{"description":"Тип файла","default":"file","example":"image","allOf":[{"type":"string","description":"Тип файла","enum":["file","image","audio","voice","video"],"x-enum-descriptions":{"file":"Обычный файл","image":"Изображение","audio":"Аудиофайл","voice":"Голосовое сообщение","video":"Видеофайл"},"$ref":"#/components/schemas/FileType"}]},"size":{"type":"integer","format":"int64","description":"Размер файла в байтах, отображаемый пользователю","example":12345},"width":{"type":"integer","format":"int32","description":"Ширина изображения в px (используется в случае, если file_type указан как image)","example":800},"height":{"type":"integer","format":"int32","description":"Высота изображения в px (используется в случае, если file_type указан как image)","example":600},"duration_ms":{"type":"integer","format":"int32","description":"Длительность в миллисекундах. Обязательно для голосовых сообщений (`file_type` — `voice`), для других типов не используется. Голосовое сообщение длиннее 30 минут (1 800 000 мс) отклоняется с `422`.","example":5400,"minimum":1},"waveform":{"type":"string","description":"Форма волны для визуализации голосового сообщения. Без неё запрос с голосовым файлом (`file_type` — `voice`) не пройдёт проверку, но при редактировании присланное значение не сохраняется. Для других типов не используется.","example":"4,8,12,20,16,10,6,3","maxLength":256}}}},"buttons":{"type":"array","description":"Массив строк, каждая из которых представлена массивом кнопок. Максимум 100 кнопок у сообщения, до 8 кнопок в строке. Для удаления кнопок пришлите пустой массив.","example":[[{"text":"Подробнее","url":"https://example.com/details"}]],"maxItems":32,"items":{"type":"array","items":{"type":"object","description":"Кнопка","required":["text"],"properties":{"text":{"type":"string","description":"Текст, отображаемый на кнопке","example":"Подробнее","maxLength":255},"url":{"type":"string","description":"Ссылка, которая будет открыта по нажатию кнопки. У кнопки должно быть заполнено ровно одно из полей `url` и `data`.","example":"https://example.com/details","maxLength":1024},"data":{"type":"string","description":"Данные, которые будут отправлены в исходящем вебхуке по нажатию кнопки. У кнопки должно быть заполнено ровно одно из полей `url` и `data`.","example":"awesome","maxLength":255}},"$ref":"#/components/schemas/Button"}}},"display_avatar_url":{"type":"string","description":"Ссылка на специальную аватарку отправителя для этого сообщения. Использование этого поля возможно только с access_token бота.","example":"https://example.com/avatar.png"},"display_name":{"type":"string","description":"Полное специальное имя отправителя для этого сообщения. Использование этого поля возможно только с access_token бота.","example":"Бот Поддержки"}}}},"$ref":"#/components/schemas/MessageUpdateRequest"}}}},"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Сообщение","required":["id","entity_type","entity_id","chat_id","root_chat_id","content","user_id","created_at","url","files","voice_content","buttons","thread","forwarding","parent_message_id","changed_at","deleted_at"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор сообщения","example":194275},"entity_type":{"description":"Тип сущности, к которой относится сообщение","example":"discussion","allOf":[{"type":"string","description":"Тип сущности для сообщений","enum":["discussion","thread","user"],"x-enum-descriptions":{"discussion":"Беседа или канал","thread":"Тред","user":"Пользователь"},"$ref":"#/components/schemas/MessageEntityType"}]},"entity_id":{"type":"integer","format":"int32","description":"Идентификатор сущности, к которой относится сообщение (беседы/канала, треда или пользователя)","example":334},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором находится сообщение","example":334},"root_chat_id":{"type":"integer","format":"int32","description":"Идентификатор корневого чата. Для сообщений в тредах — идентификатор чата, в котором был создан тред. Для обычных сообщений совпадает с `chat_id`.","example":334},"content":{"type":"string","description":"Текст сообщения","example":"Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)"},"user_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, создавшего сообщение","example":12},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2021-08-28T15:57:23.000Z"},"url":{"type":"string","description":"Прямая ссылка на сообщение","example":"https://app.pachca.com/chats/334?message=194275"},"files":{"type":"array","description":"Прикрепленные файлы","items":{"type":"object","description":"Файл","required":["id","key","name","file_type","url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор файла","example":3560},"key":{"type":"string","description":"Путь к файлу","example":"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png"},"name":{"type":"string","description":"Название файла с расширением","example":"congrat.png"},"file_type":{"description":"Тип файла","example":"image","allOf":[{"type":"string","description":"Тип файла","enum":["file","image","audio","voice","video"],"x-enum-descriptions":{"file":"Обычный файл","image":"Изображение","audio":"Аудиофайл","voice":"Голосовое сообщение","video":"Видеофайл"},"$ref":"#/components/schemas/FileType"}]},"url":{"type":"string","description":"Ссылка на скачивание файла. Обычно ведёт прямо в хранилище и действует до 7 дней, а оставшийся срок может быть меньше — если такая ссылка вернула `403`, запросите сообщение заново и получите свежую. Если в пространстве включено шифрование или задан безопасный контур, ссылка ведёт на [Скачивание файла](GET /files/{id}): забирать такой файл нужно с заголовком `Authorization`, а токену нужен скоуп `files:read`.","example":"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8"},"width":{"type":"integer","format":"int32","description":"Ширина изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке.","example":1920,"nullable":true},"height":{"type":"integer","format":"int32","description":"Высота изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке.","example":1080,"nullable":true},"duration_ms":{"type":"integer","format":"int32","description":"Длительность в миллисекундах у голосового, аудио- и видеофайла. `null` у остальных файлов и если длительность не была передана при загрузке.","example":5400,"nullable":true}},"$ref":"#/components/schemas/File"}},"voice_content":{"type":"object","description":"Данные голосового сообщения. Заполняется только для голосовых сообщений (`file_type` файла — `voice`), иначе `null`.","nullable":true,"allOf":[{"type":"object","description":"Данные голосового сообщения","required":["duration_ms","waveform","transcript"],"properties":{"duration_ms":{"type":"integer","format":"int32","description":"Длительность голосового сообщения в миллисекундах","example":5400},"waveform":{"type":"string","description":"Форма волны (амплитуды) для визуализации голосового сообщения","example":"4,8,12,20,16,10,6,3"},"transcript":{"type":"string","description":"Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна.","example":"Привет, посмотри пожалуйста последний отчёт","nullable":true}},"$ref":"#/components/schemas/VoiceContent"}]},"buttons":{"type":"array","description":"Массив строк, каждая из которых представлена массивом кнопок. `null`, если сообщение отправлено без кнопок.","nullable":true,"items":{"type":"array","items":{"type":"object","description":"Кнопка","required":["text"],"properties":{"text":{"type":"string","description":"Текст, отображаемый на кнопке","example":"Подробнее","maxLength":255},"url":{"type":"string","description":"Ссылка, которая будет открыта по нажатию кнопки. У кнопки должно быть заполнено ровно одно из полей `url` и `data`.","example":"https://example.com/details","maxLength":1024},"data":{"type":"string","description":"Данные, которые будут отправлены в исходящем вебхуке по нажатию кнопки. У кнопки должно быть заполнено ровно одно из полей `url` и `data`.","example":"awesome","maxLength":255}},"$ref":"#/components/schemas/Button"}}},"thread":{"type":"object","description":"Тред, созданный к этому сообщению. `null`, если тред не создан, а также у сообщений, которые сами находятся внутри треда.","required":["id","chat_id"],"nullable":true,"properties":{"id":{"type":"integer","format":"int64","description":"Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](POST /messages) с `entity_type: \"thread\"`.","example":265142},"chat_id":{"type":"integer","format":"int64","description":"Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](GET /messages).","example":2637266155}}},"forwarding":{"type":"object","description":"Информация о пересланном сообщении. `null`, если сообщение не является пересланным.","nullable":true,"allOf":[{"type":"object","description":"Информация о пересланном сообщении","required":["original_message_id","original_chat_id","author_id","original_created_at","original_thread_id","original_thread_message_id","original_thread_parent_chat_id"],"properties":{"original_message_id":{"type":"integer","format":"int32","description":"Идентификатор оригинального сообщения","example":194275},"original_chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором находится оригинальное сообщение","example":334},"author_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, создавшего оригинальное сообщение","example":12},"original_created_at":{"type":"string","format":"date-time","description":"Дата и время создания оригинального сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2025-01-15T10:30:00.000Z"},"original_thread_id":{"type":"integer","format":"int32","description":"Идентификатор треда, в котором находится оригинальное сообщение","example":null,"nullable":true},"original_thread_message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, к которому был создан тред, в котором находится оригинальное сообщение. `null`, если оригинальное сообщение было не в треде или тред создан без привязки к сообщению.","example":null,"nullable":true},"original_thread_parent_chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата сообщения, к которому был создан тред, в котором находится оригинальное сообщение. `null`, если оригинальное сообщение было не в треде или тред создан без привязки к сообщению.","example":null,"nullable":true}},"$ref":"#/components/schemas/Forwarding"}]},"parent_message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, к которому написан ответ. `null`, если сообщение не является ответом на другое сообщение.","example":null,"nullable":true},"display_avatar_url":{"type":"string","description":"Ссылка на аватарку отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. `null`, если бот не переопределял значение при отправке.","example":null,"nullable":true},"display_name":{"type":"string","description":"Полное имя отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. `null`, если бот не переопределял значение при отправке.","example":null,"nullable":true},"changed_at":{"type":"string","format":"date-time","description":"Дата и время последнего изменения сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. У неотредактированного сообщения совпадает с датой создания. `null` у сообщений, отправленных до появления этого поля.","example":"2021-08-28T16:10:00.000Z","nullable":true},"deleted_at":{"type":"string","format":"date-time","description":"Дата и время удаления сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null` у неудалённых сообщений. В списке сообщений удалённые не возвращаются.","example":null,"nullable":true}},"$ref":"#/components/schemas/Message"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"messages:update","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":false},"docs":"# Редактирование сообщения\n\n**Метод**: `PUT`\n\n**Путь**: `/messages/{id}`\n\n> **Скоуп:** `messages:update`\n\nМеняет текст, файлы и кнопки уже отправленного сообщения. В интерфейсе у него появляется пометка о правке.\n\nПравить можно только свои сообщения, и только обычные: системное, пересланное и голосовое метод не меняет. Ограничений по давности отправки нет.\n\nФайлы и кнопки заменяются целиком: пустой массив снимает их все, а отсутствие поля в теле оставляет как было. Любая правка убирает превью ссылок, и заново оно не строится.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор сообщения\n\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `message: object` (required) — Собранный объект параметров редактируемого сообщения\n - `content: string` — Текст сообщения. Поддерживает упоминания: `@nickname` или `<@user_id>` (будет автоматически преобразовано в `@nickname`). У мульти-гостя `<@user_id>` недоступного ему сотрудника остаётся в тексте как есть. Пример: `\"Вот попробуйте написать правильно это с первого раза: Будущий, Полощи, Прийти, Грейпфрут, Мозаика, Бюллетень, Дуршлаг, Винегрет.\"`\n - `files: array of object` — Прикрепляемые файлы\n - `key: string` (required, max length: 1000) — Путь к файлу, полученный в методе [Загрузка файла](POST /direct_url). Пример: `\"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png\"`\n - `name: string` (required, max length: 255) — Название файла, которое вы хотите отображать пользователю. Расширение должно совпадать с расширением файла в `key`, иначе ответ будет 422 с кодом `wrong_params`. Пример: `\"logo.png\"`\n - `file_type: string` — Тип файла\n Значения: `file` — Обычный файл, `image` — Изображение, `audio` — Аудиофайл, `voice` — Голосовое сообщение, `video` — Видеофайл\n - `size: integer, int64` — Размер файла в байтах, отображаемый пользователю. Пример: `12345`\n - `width: integer, int32` — Ширина изображения в px (используется в случае, если file_type указан как image). Пример: `800`\n - `height: integer, int32` — Высота изображения в px (используется в случае, если file_type указан как image). Пример: `600`\n - `duration_ms: integer, int32` (min: 1) — Длительность в миллисекундах. Обязательно для голосовых сообщений (`file_type` — `voice`), для других типов не используется. Голосовое сообщение длиннее 30 минут (1 800 000 мс) отклоняется с `422`. Пример: `5400`\n - `waveform: string` (max length: 256) — Форма волны для визуализации голосового сообщения. Без неё запрос с голосовым файлом (`file_type` — `voice`) не пройдёт проверку, но при редактировании присланное значение не сохраняется. Для других типов не используется. Пример: `\"4,8,12,20,16,10,6,3\"`\n - `buttons: array of array` (max items: 32) — Массив строк, каждая из которых представлена массивом кнопок. Максимум 100 кнопок у сообщения, до 8 кнопок в строке. Для удаления кнопок пришлите пустой массив. Пример: `[[{\"text\":\"Подробнее\",\"url\":\"https://example.com/details\"}]]`\n - `display_avatar_url: string` — Ссылка на специальную аватарку отправителя для этого сообщения. Использование этого поля возможно только с access_token бота. Пример: `\"https://example.com/avatar.png\"`\n - `display_name: string` — Полное специальное имя отправителя для этого сообщения. Использование этого поля возможно только с access_token бота. Пример: `\"Бот Поддержки\"`\n\n### Пример\n\n```json\n{\n \"message\": {\n \"content\": \"Вот попробуйте написать правильно это с первого раза: Будущий, Полощи, Прийти, Грейпфрут, Мозаика, Бюллетень, Дуршлаг, Винегрет.\",\n \"files\": [\n {\n \"key\": \"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png\",\n \"name\": \"logo.png\",\n \"file_type\": \"image\",\n \"size\": 12345,\n \"width\": 800,\n \"height\": 600,\n \"duration_ms\": 5400,\n \"waveform\": \"4,8,12,20,16,10,6,3\"\n }\n ],\n \"buttons\": [\n [\n {\n \"text\": \"Подробнее\",\n \"url\": \"https://example.com/details\"\n }\n ]\n ],\n \"display_avatar_url\": \"https://example.com/avatar.png\",\n \"display_name\": \"Бот Поддержки\"\n }\n}\n```\n\n## Пример запроса\n\n```bash\ncurl -X PUT \"https://api.pachca.com/api/shared/v1/messages/194275\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"message\": {\n \"content\": \"Вот попробуйте написать правильно это с первого раза: Будущий, Полощи, Прийти, Грейпфрут, Мозаика, Бюллетень, Дуршлаг, Винегрет.\",\n \"files\": [\n {\n \"key\": \"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png\",\n \"name\": \"logo.png\",\n \"file_type\": \"image\",\n \"size\": 12345,\n \"width\": 800,\n \"height\": 600,\n \"duration_ms\": 5400,\n \"waveform\": \"4,8,12,20,16,10,6,3\"\n }\n ],\n \"buttons\": [\n [\n {\n \"text\": \"Подробнее\",\n \"url\": \"https://example.com/details\"\n }\n ]\n ],\n \"display_avatar_url\": \"https://example.com/avatar.png\",\n \"display_name\": \"Бот Поддержки\"\n }\n}'\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Сообщение\n - `id: integer, int32` (required) — Идентификатор сообщения. Пример: `194275`\n - `entity_type: string` (required) — Тип сущности, к которой относится сообщение\n Значения: `discussion` — Беседа или канал, `thread` — Тред, `user` — Пользователь\n - `entity_id: integer, int32` (required) — Идентификатор сущности, к которой относится сообщение (беседы/канала, треда или пользователя). Пример: `334`\n - `chat_id: integer, int32` (required) — Идентификатор чата, в котором находится сообщение. Пример: `334`\n - `root_chat_id: integer, int32` (required) — Идентификатор корневого чата. Для сообщений в тредах — идентификатор чата, в котором был создан тред. Для обычных сообщений совпадает с `chat_id`. Пример: `334`\n - `content: string` (required) — Текст сообщения. Пример: `\"Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)\"`\n - `user_id: integer, int32` (required) — Идентификатор пользователя, создавшего сообщение. Пример: `12`\n - `created_at: date-time` (required) — Дата и время создания сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2021-08-28T15:57:23.000Z\"`\n - `url: string` (required) — Прямая ссылка на сообщение. Пример: `\"https://app.pachca.com/chats/334?message=194275\"`\n - `files: array of object` (required) — Прикрепленные файлы\n - `id: integer, int32` (required) — Идентификатор файла. Пример: `3560`\n - `key: string` (required) — Путь к файлу. Пример: `\"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png\"`\n - `name: string` (required) — Название файла с расширением. Пример: `\"congrat.png\"`\n - `file_type: string` (required) — Тип файла\n Значения: `file` — Обычный файл, `image` — Изображение, `audio` — Аудиофайл, `voice` — Голосовое сообщение, `video` — Видеофайл\n - `url: string` (required) — Ссылка на скачивание файла. Обычно ведёт прямо в хранилище и действует до 7 дней, а оставшийся срок может быть меньше — если такая ссылка вернула `403`, запросите сообщение заново и получите свежую. Если в пространстве включено шифрование или задан безопасный контур, ссылка ведёт на [Скачивание файла](GET /files/{id}): забирать такой файл нужно с заголовком `Authorization`, а токену нужен скоуп `files:read`. Пример: `\"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8\"`\n - `width: integer, int32` (nullable) — Ширина изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке. Пример: `1920`\n - `height: integer, int32` (nullable) — Высота изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке. Пример: `1080`\n - `duration_ms: integer, int32` (nullable) — Длительность в миллисекундах у голосового, аудио- и видеофайла. `null` у остальных файлов и если длительность не была передана при загрузке. Пример: `5400`\n - `voice_content: object` (required) — Данные голосового сообщения. Заполняется только для голосовых сообщений (`file_type` файла — `voice`), иначе `null`.\n - `duration_ms: integer, int32` (required) — Длительность голосового сообщения в миллисекундах. Пример: `5400`\n - `waveform: string` (required) — Форма волны (амплитуды) для визуализации голосового сообщения. Пример: `\"4,8,12,20,16,10,6,3\"`\n - `transcript: string` (required, nullable) — Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна. Пример: `\"Привет, посмотри пожалуйста последний отчёт\"`\n - `buttons: array of array` (required, nullable) — Массив строк, каждая из которых представлена массивом кнопок. `null`, если сообщение отправлено без кнопок.\n - `thread: object` (required, nullable) — Тред, созданный к этому сообщению. `null`, если тред не создан, а также у сообщений, которые сами находятся внутри треда.\n - `id: integer, int64` (required) — Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](POST /messages) с `entity_type: \"thread\"`. Пример: `265142`\n - `chat_id: integer, int64` (required) — Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](GET /messages). Пример: `2637266155`\n - `forwarding: object` (required) — Информация о пересланном сообщении. `null`, если сообщение не является пересланным.\n - `original_message_id: integer, int32` (required) — Идентификатор оригинального сообщения. Пример: `194275`\n - `original_chat_id: integer, int32` (required) — Идентификатор чата, в котором находится оригинальное сообщение. Пример: `334`\n - `author_id: integer, int32` (required) — Идентификатор пользователя, создавшего оригинальное сообщение. Пример: `12`\n - `original_created_at: date-time` (required) — Дата и время создания оригинального сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2025-01-15T10:30:00.000Z\"`\n - `original_thread_id: integer, int32` (required, nullable) — Идентификатор треда, в котором находится оригинальное сообщение. Пример: `null`\n - `original_thread_message_id: integer, int32` (required, nullable) — Идентификатор сообщения, к которому был создан тред, в котором находится оригинальное сообщение. `null`, если оригинальное сообщение было не в треде или тред создан без привязки к сообщению. Пример: `null`\n - `original_thread_parent_chat_id: integer, int32` (required, nullable) — Идентификатор чата сообщения, к которому был создан тред, в котором находится оригинальное сообщение. `null`, если оригинальное сообщение было не в треде или тред создан без привязки к сообщению. Пример: `null`\n - `parent_message_id: integer, int32` (required, nullable) — Идентификатор сообщения, к которому написан ответ. `null`, если сообщение не является ответом на другое сообщение. Пример: `null`\n - `display_avatar_url: string` (nullable) — Ссылка на аватарку отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. `null`, если бот не переопределял значение при отправке. Пример: `null`\n - `display_name: string` (nullable) — Полное имя отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. `null`, если бот не переопределял значение при отправке. Пример: `null`\n - `changed_at: date-time` (required, nullable) — Дата и время последнего изменения сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. У неотредактированного сообщения совпадает с датой создания. `null` у сообщений, отправленных до появления этого поля. Пример: `\"2021-08-28T16:10:00.000Z\"`\n - `deleted_at: date-time` (required, nullable) — Дата и время удаления сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null` у неудалённых сообщений. В списке сообщений удалённые не возвращаются. Пример: `null`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 194275,\n \"entity_type\": \"discussion\",\n \"entity_id\": 334,\n \"chat_id\": 334,\n \"root_chat_id\": 334,\n \"content\": \"Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)\",\n \"user_id\": 12,\n \"created_at\": \"2021-08-28T15:57:23.000Z\",\n \"url\": \"https://app.pachca.com/chats/334?message=194275\",\n \"files\": [\n {\n \"id\": 3560,\n \"key\": \"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png\",\n \"name\": \"congrat.png\",\n \"file_type\": \"image\",\n \"url\": \"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8\",\n \"width\": 1920,\n \"height\": 1080,\n \"duration_ms\": 5400\n }\n ],\n \"voice_content\": {\n \"duration_ms\": 5400,\n \"waveform\": \"4,8,12,20,16,10,6,3\",\n \"transcript\": \"Привет, посмотри пожалуйста последний отчёт\"\n },\n \"buttons\": [\n [\n {\n \"text\": \"Подробнее\",\n \"url\": \"https://example.com/details\",\n \"data\": \"awesome\"\n }\n ]\n ],\n \"thread\": {\n \"id\": 265142,\n \"chat_id\": 2637266155\n },\n \"forwarding\": {\n \"original_message_id\": 194275,\n \"original_chat_id\": 334,\n \"author_id\": 12,\n \"original_created_at\": \"2025-01-15T10:30:00.000Z\",\n \"original_thread_id\": null,\n \"original_thread_message_id\": null,\n \"original_thread_parent_chat_id\": null\n },\n \"parent_message_id\": null,\n \"display_avatar_url\": null,\n \"display_name\": null,\n \"changed_at\": \"2021-08-28T16:10:00.000Z\",\n \"deleted_at\": null\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"DELETE","path":"/messages/{id}","summary":"Удаление сообщения","scope":"messages:delete","plan":null,"auth":true,"paginated":false,"command":"pachca messages delete","docLink":"https://dev.pachca.com/api/messages/delete","describe":"# DELETE /messages/{id} — Удаление сообщения\n\n> **Скоуп:** `messages:delete`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор сообщения\n\n## Эквивалентная команда\n\n```bash\npachca messages delete 194275 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/messages/delete\nПолная справка: `pachca api DELETE /messages/{id} --docs` · схема: `--spec`\n","spec":{"method":"DELETE","path":"/messages/{id}","description":"Удаление сообщения\n\nУдаление сообщения доступно отправителю, админам и редакторам в чате. В личных сообщениях оба пользователя являются редакторами. Ограничений по давности отправки сообщения нет.\n\nТекст, файлы и реакции пропадают у всех и не восстанавливаются, закрепление снимается, а в переписке на месте сообщения остаётся пометка «Сообщение удалено».\n\nТред, заведённый под этим сообщением, остаётся вместе со всей перепиской в нём. Повторное удаление отвечает `204` и уже ничего не меняет.","parameters":[{"name":"id","in":"path","description":"Идентификатор сообщения","required":true,"schema":{"type":"integer","format":"int32","example":194275},"example":194275}],"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"messages:delete","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":false},"docs":"# Удаление сообщения\n\n**Метод**: `DELETE`\n\n**Путь**: `/messages/{id}`\n\n> **Скоуп:** `messages:delete`\n\nУдаление сообщения доступно отправителю, админам и редакторам в чате. В личных сообщениях оба пользователя являются редакторами. Ограничений по давности отправки сообщения нет.\n\nТекст, файлы и реакции пропадают у всех и не восстанавливаются, закрепление снимается, а в переписке на месте сообщения остаётся пометка «Сообщение удалено».\n\nТред, заведённый под этим сообщением, остаётся вместе со всей перепиской в нём. Повторное удаление отвечает `204` и уже ничего не меняет.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор сообщения\n\n\n## Пример запроса\n\n```bash\ncurl -X DELETE \"https://api.pachca.com/api/shared/v1/messages/194275\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"POST","path":"/messages/{id}/link_previews","summary":"Unfurl (разворачивание ссылок)","scope":"link_previews:write","plan":null,"auth":true,"paginated":false,"command":"pachca messages unfurl","docLink":"https://dev.pachca.com/api/messages/unfurl","describe":"# POST /messages/{id}/link_previews — Unfurl (разворачивание ссылок)\n\n> **Скоуп:** `link_previews:write`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор сообщения\n\n## Тело запроса\n\n- `link_previews: Record` (required) — `JSON` карта предпросмотров ссылок, где каждый ключ — `URL`, который был получен в исходящем вебхуке о новом сообщении\n **Структура значений Record:**\n - `title: string` (required) — Заголовок\n - `description: string` (required) — Описание\n - `image_url: string` — Публичная ссылка на изображение (если вы хотите загрузить файл изображения в Пачку, то используйте параметр image)\n - `image: object` — Изображение\n - `key: string` (required) — Путь к изображению, полученный в методе [Загрузка файла](POST /direct_url)\n - `name: string` (required) — Название изображения (рекомендуется писать вместе с расширением)\n - `size: integer, int32` — Размер изображения в байтах\n\n## Эквивалентная команда\n\n```bash\npachca messages unfurl 194275 \\\n --link-previews='{\"https://website.com/articles/123\":{\"title\":\"Статья: Отправка файлов\",\"description\":\"Пример отправки файлов на удаленный сервер\",\"image_url\":\"https://website.com/img/landing.png\",\"image\":{\"key\":\"attaches/files/93746/e354fd79-9jh6-f2hd-fj83-709dae24c763/${filename}\",\"name\":\"files-to-server.jpg\",\"size\":695604}}}' \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/messages/unfurl\nПолная справка: `pachca api POST /messages/{id}/link_previews --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/messages/{id}/link_previews","description":"Unfurl (разворачивание ссылок)\n\nПодставляет в сообщение предпросмотр ссылки, собранный самим ботом: заголовок, описание и картинку. Так внутренние адреса компании, которые Пачка сама открыть не может, показываются в переписке карточкой.\n\nМетод доступен только боту, у которого исходящий вебхук настроен на разворачивание ссылок. Такой бот получает событие `message_link_shared` и отвечает на него этим методом, причём состоять в чате с сообщением ему не нужно — достаточно, чтобы чат был в его пространстве.\n\nДомен ссылки должен быть в списке разрешённых у бота, а сама ссылка — присутствовать в тексте сообщения, иначе метод ответит ошибкой. Ответ приходит пустым даже тогда, когда ни одно превью не применилось: результат проверяют повторным чтением сообщения.","parameters":[{"name":"id","in":"path","description":"Идентификатор сообщения","required":true,"schema":{"type":"integer","format":"int32","example":194275},"example":194275}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на разворачивание ссылок","required":["link_previews"],"properties":{"link_previews":{"type":"object","description":"`JSON` карта предпросмотров ссылок, где каждый ключ — `URL`, который был получен в исходящем вебхуке о новом сообщении","x-record-key-example":"https://website.com/articles/123","additionalProperties":{"type":"object","description":"Данные для предпросмотра ссылки","required":["title","description"],"properties":{"title":{"type":"string","description":"Заголовок","example":"Статья: Отправка файлов"},"description":{"type":"string","description":"Описание","example":"Пример отправки файлов на удаленный сервер"},"image_url":{"type":"string","description":"Публичная ссылка на изображение (если вы хотите загрузить файл изображения в Пачку, то используйте параметр image)","example":"https://website.com/img/landing.png"},"image":{"type":"object","description":"Изображение","required":["key","name"],"properties":{"key":{"type":"string","description":"Путь к изображению, полученный в методе [Загрузка файла](POST /direct_url)","example":"attaches/files/93746/e354fd79-9jh6-f2hd-fj83-709dae24c763/${filename}"},"name":{"type":"string","description":"Название изображения (рекомендуется писать вместе с расширением)","example":"files-to-server.jpg"},"size":{"type":"integer","format":"int32","description":"Размер изображения в байтах","example":695604}}}},"$ref":"#/components/schemas/LinkPreview"}}},"$ref":"#/components/schemas/LinkPreviewsRequest"}}}},"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"link_previews:write","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Unfurl (разворачивание ссылок)\n\n**Метод**: `POST`\n\n**Путь**: `/messages/{id}/link_previews`\n\n> **Скоуп:** `link_previews:write`\n\nПодставляет в сообщение предпросмотр ссылки, собранный самим ботом: заголовок, описание и картинку. Так внутренние адреса компании, которые Пачка сама открыть не может, показываются в переписке карточкой.\n\nМетод доступен только боту, у которого исходящий вебхук настроен на разворачивание ссылок. Такой бот получает событие `message_link_shared` и отвечает на него этим методом, причём состоять в чате с сообщением ему не нужно — достаточно, чтобы чат был в его пространстве.\n\nДомен ссылки должен быть в списке разрешённых у бота, а сама ссылка — присутствовать в тексте сообщения, иначе метод ответит ошибкой. Ответ приходит пустым даже тогда, когда ни одно превью не применилось: результат проверяют повторным чтением сообщения.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор сообщения\n\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `link_previews: Record` (required) — `JSON` карта предпросмотров ссылок, где каждый ключ — `URL`, который был получен в исходящем вебхуке о новом сообщении\n **Структура значений Record:**\n - `title: string` (required) — Заголовок. Пример: `\"Статья: Отправка файлов\"`\n - `description: string` (required) — Описание. Пример: `\"Пример отправки файлов на удаленный сервер\"`\n - `image_url: string` — Публичная ссылка на изображение (если вы хотите загрузить файл изображения в Пачку, то используйте параметр image). Пример: `\"https://website.com/img/landing.png\"`\n - `image: object` — Изображение\n - `key: string` (required) — Путь к изображению, полученный в методе [Загрузка файла](POST /direct_url). Пример: `\"attaches/files/93746/e354fd79-9jh6-f2hd-fj83-709dae24c763/${filename}\"`\n - `name: string` (required) — Название изображения (рекомендуется писать вместе с расширением). Пример: `\"files-to-server.jpg\"`\n - `size: integer, int32` — Размер изображения в байтах. Пример: `695604`\n\n### Пример\n\n```json\n{\n \"link_previews\": {\n \"https://website.com/articles/123\": {\n \"title\": \"Статья: Отправка файлов\",\n \"description\": \"Пример отправки файлов на удаленный сервер\",\n \"image_url\": \"https://website.com/img/landing.png\",\n \"image\": {\n \"key\": \"attaches/files/93746/e354fd79-9jh6-f2hd-fj83-709dae24c763/${filename}\",\n \"name\": \"files-to-server.jpg\",\n \"size\": 695604\n }\n }\n }\n}\n```\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/messages/194275/link_previews\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"link_previews\": {\n \"https://website.com/articles/123\": {\n \"title\": \"Статья: Отправка файлов\",\n \"description\": \"Пример отправки файлов на удаленный сервер\",\n \"image_url\": \"https://website.com/img/landing.png\",\n \"image\": {\n \"key\": \"attaches/files/93746/e354fd79-9jh6-f2hd-fj83-709dae24c763/${filename}\",\n \"name\": \"files-to-server.jpg\",\n \"size\": 695604\n }\n }\n }\n}'\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"POST","path":"/messages/{id}/pin","summary":"Закрепление сообщения","scope":"pins:write","plan":null,"auth":true,"paginated":false,"command":"pachca messages pin","docLink":"https://dev.pachca.com/api/messages/pin","describe":"# POST /messages/{id}/pin — Закрепление сообщения\n\n> **Скоуп:** `pins:write`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор сообщения\n\n## Эквивалентная команда\n\n```bash\npachca messages pin 194275 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/messages/pin\nПолная справка: `pachca api POST /messages/{id}/pin --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/messages/{id}/pin","description":"Закрепление сообщения\n\nЗакрепляет сообщение в шапке беседы или канала, где его видят все участники. Ограничения на число закреплённых сообщений нет.\n\nВ тредах метод не работает. Уже закреплённое сообщение отвечает `409`, а удалённое — `422`.","parameters":[{"name":"id","in":"path","description":"Идентификатор сообщения","required":true,"schema":{"type":"integer","format":"int32","example":194275},"example":194275}],"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error"}},"requirements":{"scope":"pins:write","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":false},"docs":"# Закрепление сообщения\n\n**Метод**: `POST`\n\n**Путь**: `/messages/{id}/pin`\n\n> **Скоуп:** `pins:write`\n\nЗакрепляет сообщение в шапке беседы или канала, где его видят все участники. Ограничения на число закреплённых сообщений нет.\n\nВ тредах метод не работает. Уже закреплённое сообщение отвечает `409`, а удалённое — `422`.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор сообщения\n\n\n## Пример запроса\n\n```bash\ncurl -X POST \"https://api.pachca.com/api/shared/v1/messages/194275/pin\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 409: The request conflicts with the current state of the server.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n"},{"method":"DELETE","path":"/messages/{id}/pin","summary":"Открепление сообщения","scope":"pins:write","plan":null,"auth":true,"paginated":false,"command":"pachca messages unpin","docLink":"https://dev.pachca.com/api/messages/unpin","describe":"# DELETE /messages/{id}/pin — Открепление сообщения\n\n> **Скоуп:** `pins:write`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор сообщения\n\n## Эквивалентная команда\n\n```bash\npachca messages unpin 194275 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/messages/unpin\nПолная справка: `pachca api DELETE /messages/{id}/pin --docs` · схема: `--spec`\n","spec":{"method":"DELETE","path":"/messages/{id}/pin","description":"Открепление сообщения\n\nСнимает закрепление с сообщения. Если сообщение не было закреплено, ответ всё равно `204`, поэтому повторный вызов безопасен.","parameters":[{"name":"id","in":"path","description":"Идентификатор сообщения","required":true,"schema":{"type":"integer","format":"int32","example":194275},"example":194275}],"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"pins:write","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":false},"docs":"# Открепление сообщения\n\n**Метод**: `DELETE`\n\n**Путь**: `/messages/{id}/pin`\n\n> **Скоуп:** `pins:write`\n\nСнимает закрепление с сообщения. Если сообщение не было закреплено, ответ всё равно `204`, поэтому повторный вызов безопасен.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор сообщения\n\n\n## Пример запроса\n\n```bash\ncurl -X DELETE \"https://api.pachca.com/api/shared/v1/messages/194275/pin\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"POST","path":"/messages/{id}/reactions","summary":"Добавление реакции","scope":"reactions:write","plan":null,"auth":true,"paginated":false,"command":"pachca reactions add","docLink":"https://dev.pachca.com/api/reactions/add","describe":"# POST /messages/{id}/reactions — Добавление реакции\n\n> **Скоуп:** `reactions:write`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор сообщения\n\n## Тело запроса\n\n- `code: string` (required) — Emoji символ реакции. Именно символ: текстовые записи вроде `+1` или `:+1:` отклоняются как неизвестный эмодзи.\n- `name: string` — Текстовое имя эмодзи (используется для кастомных эмодзи)\n\n## Эквивалентная команда\n\n```bash\npachca reactions add 7231942 \\\n --code=👍 \\\n --name=:+1: \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/reactions/add\nПолная справка: `pachca api POST /messages/{id}/reactions --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/messages/{id}/reactions","description":"Добавление реакции\n\nСтавит эмодзи-реакцию на сообщение от имени владельца токена.\n\nВ поле `code` передаётся сам символ эмодзи: текстовые записи вроде `+1` или `:+1:` метод не принимает. Если пользователь уже ставил реакцию, повторно она установлена не будет. Для удаления реакции надо воспользоваться методом [Удаление реакции](DELETE /messages/{id}/reactions).\n\nЕсли под сообщением есть тред, реагирующий заодно подписывается на него и начинает получать новые сообщения треда.\n\n**Лимиты реакций:**\n\n- Каждый пользователь может установить на сообщение не более **20 уникальных** реакций\n- Сообщение может иметь не более **30 уникальных** реакций\n- Общее количество реакций на сообщение не может превышать **1000**","parameters":[{"name":"id","in":"path","description":"Идентификатор сообщения","required":true,"schema":{"type":"integer","format":"int32","example":7231942},"example":7231942}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на добавление реакции","required":["code"],"properties":{"code":{"type":"string","description":"Emoji символ реакции. Именно символ: текстовые записи вроде `+1` или `:+1:` отклоняются как неизвестный эмодзи.","example":"👍"},"name":{"type":"string","description":"Текстовое имя эмодзи (используется для кастомных эмодзи)","example":":+1:"}},"$ref":"#/components/schemas/ReactionRequest"}}}},"responses":{"201":{"description":"The request has succeeded and a new resource has been created as a result.","content":{"application/json":{"schema":{"type":"object","description":"Реакция на сообщение","required":["user_id","created_at","code","name"],"properties":{"user_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, который добавил реакцию","example":12},"created_at":{"type":"string","format":"date-time","description":"Дата и время добавления реакции (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2024-01-20T10:30:00.000Z"},"code":{"type":"string","description":"Emoji символ реакции","example":"👍"},"name":{"type":"string","description":"Название emoji реакции","example":":+1::skin-tone-1:"}},"$ref":"#/components/schemas/Reaction"}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"reactions:write","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":false},"docs":"# Добавление реакции\n\n**Метод**: `POST`\n\n**Путь**: `/messages/{id}/reactions`\n\n> **Скоуп:** `reactions:write`\n\nСтавит эмодзи-реакцию на сообщение от имени владельца токена.\n\nВ поле `code` передаётся сам символ эмодзи: текстовые записи вроде `+1` или `:+1:` метод не принимает. Если пользователь уже ставил реакцию, повторно она установлена не будет. Для удаления реакции надо воспользоваться методом [Удаление реакции](DELETE /messages/{id}/reactions).\n\nЕсли под сообщением есть тред, реагирующий заодно подписывается на него и начинает получать новые сообщения треда.\n\n**Лимиты реакций:**\n\n- Каждый пользователь может установить на сообщение не более **20 уникальных** реакций\n- Сообщение может иметь не более **30 уникальных** реакций\n- Общее количество реакций на сообщение не может превышать **1000**\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор сообщения\n\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `code: string` (required) — Emoji символ реакции. Именно символ: текстовые записи вроде `+1` или `:+1:` отклоняются как неизвестный эмодзи. Пример: `\"👍\"`\n- `name: string` — Текстовое имя эмодзи (используется для кастомных эмодзи). Пример: `\":+1:\"`\n\n### Пример\n\n```json\n{\n \"code\": \"👍\",\n \"name\": \":+1:\"\n}\n```\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/messages/7231942/reactions\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"code\": \"👍\",\n \"name\": \":+1:\"\n}'\n```\n\n## Ответы\n\n### 201: The request has succeeded and a new resource has been created as a result.\n\n**Схема ответа:**\n\n- `user_id: integer, int32` (required) — Идентификатор пользователя, который добавил реакцию. Пример: `12`\n- `created_at: date-time` (required) — Дата и время добавления реакции (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2024-01-20T10:30:00.000Z\"`\n- `code: string` (required) — Emoji символ реакции. Пример: `\"👍\"`\n- `name: string` (required) — Название emoji реакции. Пример: `\":+1::skin-tone-1:\"`\n\n**Пример ответа:**\n\n```json\n{\n \"user_id\": 12,\n \"created_at\": \"2024-01-20T10:30:00.000Z\",\n \"code\": \"👍\",\n \"name\": \":+1::skin-tone-1:\"\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"DELETE","path":"/messages/{id}/reactions","summary":"Удаление реакции","scope":"reactions:write","plan":null,"auth":true,"paginated":false,"command":"pachca reactions remove","docLink":"https://dev.pachca.com/api/reactions/remove","describe":"# DELETE /messages/{id}/reactions — Удаление реакции\n\n> **Скоуп:** `reactions:write`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор сообщения\n- `code` — query (обязательный): Emoji символ реакции. Именно символ: текстовые записи вроде `+1` или `:+1:` отклоняются как неизвестный эмодзи.\n- `name` — query: Текстовое имя эмодзи (используется для кастомных эмодзи)\n\n## Эквивалентная команда\n\n```bash\npachca reactions remove 7231942 \\\n --code=👍 \\\n --name=:+1: \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/reactions/remove\nПолная справка: `pachca api DELETE /messages/{id}/reactions --docs` · схема: `--spec`\n","spec":{"method":"DELETE","path":"/messages/{id}/reactions","description":"Удаление реакции\n\nСнимает с сообщения свою реакцию.\n\nЧужая реакция и реакция, которой нет, отвечают `404`. Подписку на тред, если она появилась вместе с реакцией, снятие реакции не отменяет.","parameters":[{"name":"id","in":"path","description":"Идентификатор сообщения","required":true,"schema":{"type":"integer","format":"int32","example":7231942},"example":7231942},{"name":"code","in":"query","description":"Emoji символ реакции. Именно символ: текстовые записи вроде `+1` или `:+1:` отклоняются как неизвестный эмодзи.","required":true,"schema":{"type":"string","example":"👍"},"example":"👍","explode":false},{"name":"name","in":"query","description":"Текстовое имя эмодзи (используется для кастомных эмодзи)","required":false,"schema":{"type":"string","example":":+1:"},"example":":+1:","explode":false}],"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"reactions:write","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":false},"docs":"# Удаление реакции\n\n**Метод**: `DELETE`\n\n**Путь**: `/messages/{id}/reactions`\n\n> **Скоуп:** `reactions:write`\n\nСнимает с сообщения свою реакцию.\n\nЧужая реакция и реакция, которой нет, отвечают `404`. Подписку на тред, если она появилась вместе с реакцией, снятие реакции не отменяет.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор сообщения\n\n### Query параметры\n\n- `code: string` (required) — Emoji символ реакции. Именно символ: текстовые записи вроде `+1` или `:+1:` отклоняются как неизвестный эмодзи.\n- `name: string` — Текстовое имя эмодзи (используется для кастомных эмодзи)\n\n\n## Пример запроса\n\n```bash\ncurl -X DELETE \"https://api.pachca.com/api/shared/v1/messages/7231942/reactions?code=👍&name=:+1:\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/messages/{id}/reactions","summary":"Список реакций","scope":"reactions:read","plan":null,"auth":true,"paginated":true,"command":"pachca reactions list","docLink":"https://dev.pachca.com/api/reactions/list","describe":"# GET /messages/{id}/reactions — Список реакций\n\n> **Скоуп:** `reactions:read`\n\n> Пагинация: добавьте `--all` для автоматического обхода страниц\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор сообщения\n- `limit` — query: Количество возвращаемых сущностей за один запрос\n- `cursor` — query: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n## Эквивалентная команда\n\n```bash\n# Добавьте --all для автоматической пагинации\npachca reactions list 194275 \\\n --limit=1 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/reactions/list\nПолная справка: `pachca api GET /messages/{id}/reactions --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/messages/{id}/reactions","description":"Список реакций\n\nВсе реакции на сообщении и кто их поставил: в каждой записи приходит `user_id` и сам символ.\n\nУ удалённого сообщения список пуст — реакции пропадают вместе с текстом и файлами.","parameters":[{"name":"id","in":"path","description":"Идентификатор сообщения","required":true,"schema":{"type":"integer","format":"int32","example":194275},"example":194275},{"name":"limit","in":"query","description":"Количество возвращаемых сущностей за один запрос","required":false,"schema":{"type":"integer","format":"int32","default":50,"example":1,"minimum":1,"maximum":50},"example":1,"explode":false},{"name":"cursor","in":"query","description":"Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)","required":false,"schema":{"type":"string","example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9"},"example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9","explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными и пагинацией","required":["data","meta"],"properties":{"data":{"type":"array","items":{"type":"object","description":"Реакция на сообщение","required":["user_id","created_at","code","name"],"properties":{"user_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, который добавил реакцию","example":12},"created_at":{"type":"string","format":"date-time","description":"Дата и время добавления реакции (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2024-01-20T10:30:00.000Z"},"code":{"type":"string","description":"Emoji символ реакции","example":"👍"},"name":{"type":"string","description":"Название emoji реакции","example":":+1::skin-tone-1:"}},"$ref":"#/components/schemas/Reaction"}},"meta":{"type":"object","description":"Метаданные пагинации","required":["paginate"],"properties":{"paginate":{"type":"object","description":"Вспомогательная информация","required":["next_page"],"properties":{"next_page":{"type":"string","description":"Курсор пагинации следующей страницы","example":"eyJxZCO2MiwiZGlyIjomSNYjIn3"},"prev_page":{"type":"string","description":"Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка.","example":"eyJxZCO2MiwiZGlyIjoiYXNjIn0"},"has_next":{"type":"boolean","description":"Есть ли ещё данные на следующей странице. На последней странице — `false`.","example":true},"has_prev":{"type":"boolean","description":"Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`.","example":false}}}},"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"reactions:read","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":true},"docs":"# Список реакций\n\n**Метод**: `GET`\n\n**Путь**: `/messages/{id}/reactions`\n\n> **Скоуп:** `reactions:read`\n\nВсе реакции на сообщении и кто их поставил: в каждой записи приходит `user_id` и сам символ.\n\nУ удалённого сообщения список пуст — реакции пропадают вместе с текстом и файлами.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор сообщения\n\n### Query параметры\n\n- `limit: integer, int32` (default: 50) — Количество возвращаемых сущностей за один запрос\n- `cursor: string` — Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n\n## Пример запроса\n\n```bash\n# Для получения следующей страницы используйте cursor из meta.paginate.next_page\ncurl \"https://api.pachca.com/api/shared/v1/messages/194275/reactions?limit=1\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: array of object` (required)\n - `user_id: integer, int32` (required) — Идентификатор пользователя, который добавил реакцию. Пример: `12`\n - `created_at: date-time` (required) — Дата и время добавления реакции (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2024-01-20T10:30:00.000Z\"`\n - `code: string` (required) — Emoji символ реакции. Пример: `\"👍\"`\n - `name: string` (required) — Название emoji реакции. Пример: `\":+1::skin-tone-1:\"`\n- `meta: object` (required) — Метаданные пагинации\n - `paginate: object` (required) — Вспомогательная информация\n - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `\"eyJxZCO2MiwiZGlyIjomSNYjIn3\"`\n - `prev_page: string` — Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка. Пример: `\"eyJxZCO2MiwiZGlyIjoiYXNjIn0\"`\n - `has_next: boolean` — Есть ли ещё данные на следующей странице. На последней странице — `false`. Пример: `true`\n - `has_prev: boolean` — Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`. Пример: `false`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": [\n {\n \"user_id\": 12,\n \"created_at\": \"2024-01-20T10:30:00.000Z\",\n \"code\": \"👍\",\n \"name\": \":+1::skin-tone-1:\"\n }\n ],\n \"meta\": {\n \"paginate\": {\n \"next_page\": \"eyJxZCO2MiwiZGlyIjomSNYjIn3\",\n \"prev_page\": \"eyJxZCO2MiwiZGlyIjoiYXNjIn0\",\n \"has_next\": true,\n \"has_prev\": false\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/messages/{id}/read_member_ids","summary":"Список прочитавших сообщение","scope":"messages:read","plan":null,"auth":true,"paginated":true,"command":"pachca read-member list-readers","docLink":"https://dev.pachca.com/api/read-member/list-readers","describe":"# GET /messages/{id}/read_member_ids — Список прочитавших сообщение\n\n> **Скоуп:** `messages:read`\n\n> Пагинация: добавьте `--all` для автоматического обхода страниц\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор сообщения\n- `limit` — query: Количество возвращаемых сущностей за один запрос\n- `cursor` — query: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n## Эквивалентная команда\n\n```bash\n# Добавьте --all для автоматической пагинации\npachca read-member list-readers 194275 \\\n --limit=300 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/read-member/list-readers\nПолная справка: `pachca api GET /messages/{id}/read_member_ids --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/messages/{id}/read_member_ids","description":"Список прочитавших сообщение\n\nКто из участников чата дочитал ленту до этого сообщения. Отдаётся плоский массив идентификаторов.\n\nСамого вызывающего и автора сообщения в списке не будет никогда — считаются только остальные участники. Для сообщения в треде это участники треда, а не родительского чата.\n\nИмён метод не отдаёт. За ними ходят методом [Информация о сотруднике](GET /users/{id}) по каждому идентификатору.","parameters":[{"name":"id","in":"path","description":"Идентификатор сообщения","required":true,"schema":{"type":"integer","format":"int32","example":194275},"example":194275},{"name":"limit","in":"query","description":"Количество возвращаемых сущностей за один запрос","required":false,"schema":{"type":"integer","format":"int32","default":300,"example":300,"minimum":1,"maximum":300},"example":300,"explode":false},{"name":"cursor","in":"query","description":"Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)","required":false,"schema":{"type":"string","example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9"},"example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9","explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными и пагинацией","required":["data","meta"],"properties":{"data":{"type":"array","items":{"type":"integer","format":"int32"}},"meta":{"type":"object","description":"Метаданные пагинации","required":["paginate"],"properties":{"paginate":{"type":"object","description":"Вспомогательная информация","required":["next_page"],"properties":{"next_page":{"type":"string","description":"Курсор пагинации следующей страницы","example":"eyJxZCO2MiwiZGlyIjomSNYjIn3"},"prev_page":{"type":"string","description":"Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка.","example":"eyJxZCO2MiwiZGlyIjoiYXNjIn0"},"has_next":{"type":"boolean","description":"Есть ли ещё данные на следующей странице. На последней странице — `false`.","example":true},"has_prev":{"type":"boolean","description":"Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`.","example":false}}}},"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"messages:read","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":true},"docs":"# Список прочитавших сообщение\n\n**Метод**: `GET`\n\n**Путь**: `/messages/{id}/read_member_ids`\n\n> **Скоуп:** `messages:read`\n\nКто из участников чата дочитал ленту до этого сообщения. Отдаётся плоский массив идентификаторов.\n\nСамого вызывающего и автора сообщения в списке не будет никогда — считаются только остальные участники. Для сообщения в треде это участники треда, а не родительского чата.\n\nИмён метод не отдаёт. За ними ходят методом [Информация о сотруднике](GET /users/{id}) по каждому идентификатору.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор сообщения\n\n### Query параметры\n\n- `limit: integer, int32` (default: 300) — Количество возвращаемых сущностей за один запрос\n- `cursor: string` — Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n\n## Пример запроса\n\n```bash\n# Для получения следующей страницы используйте cursor из meta.paginate.next_page\ncurl \"https://api.pachca.com/api/shared/v1/messages/194275/read_member_ids?limit=300\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: array of integer` (required)\n- `meta: object` (required) — Метаданные пагинации\n - `paginate: object` (required) — Вспомогательная информация\n - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `\"eyJxZCO2MiwiZGlyIjomSNYjIn3\"`\n - `prev_page: string` — Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка. Пример: `\"eyJxZCO2MiwiZGlyIjoiYXNjIn0\"`\n - `has_next: boolean` — Есть ли ещё данные на следующей странице. На последней странице — `false`. Пример: `true`\n - `has_prev: boolean` — Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`. Пример: `false`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": [\n 100\n ],\n \"meta\": {\n \"paginate\": {\n \"next_page\": \"eyJxZCO2MiwiZGlyIjomSNYjIn3\",\n \"prev_page\": \"eyJxZCO2MiwiZGlyIjoiYXNjIn0\",\n \"has_next\": true,\n \"has_prev\": false\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"POST","path":"/messages/{id}/thread","summary":"Новый тред","scope":"threads:create","plan":null,"auth":true,"paginated":false,"command":"pachca threads add","docLink":"https://dev.pachca.com/api/threads/add","describe":"# POST /messages/{id}/thread — Новый тред\n\n> **Скоуп:** `threads:create`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор сообщения\n\n## Эквивалентная команда\n\n```bash\npachca threads add 154332686 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/threads/add\nПолная справка: `pachca api POST /messages/{id}/thread --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/messages/{id}/thread","description":"Новый тред\n\nЗаводит тред под сообщением — место, где обсуждают сказанное, не засоряя ленту чата. Тред — это отдельный доступ: в него можно позвать сотрудника, не открывая ему сам чат, и он увидит только тред и родительское сообщение.\n\nВ новый тред сразу попадают тот, кто его создал, автор сообщения, все, кто ставил на сообщение реакции, и участники чата, включившие уведомления о тредах. Упомянутых в родительском сообщении — и поимённо, и тегом — добавляет фоновая задача сразу после создания, поэтому в первом ответе их может ещё не быть. Общие упоминания вроде `@all` в тред никого не приводят, а упомянутого, которого нет в самом чате, тред не подхватит.\n\nПустой тред разговором ещё не является: сразу отправьте в него первое сообщение методом [Новое сообщение](POST /messages) с `entity_type: \"thread\"`. Названия у треда нет, и удалить его нельзя ни через API, ни в приложении.\n\nЕсли у сообщения уже был создан тред, то в ответе на запрос вернётся информация об уже созданном ранее треде. Тред под сообщением, которое само лежит в треде, завести нельзя: вложенных тредов в Пачке нет.","parameters":[{"name":"id","in":"path","description":"Идентификатор сообщения","required":true,"schema":{"type":"integer","format":"int32","example":154332686},"example":154332686}],"responses":{"201":{"description":"The request has succeeded and a new resource has been created as a result.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Тред","required":["id","chat_id","message_id","message_chat_id","updated_at"],"properties":{"id":{"type":"integer","format":"int64","description":"Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](POST /messages) с `entity_type: \"thread\"`.","example":265142},"chat_id":{"type":"integer","format":"int64","description":"Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](GET /messages) и работают с его участниками.","example":2637266155},"message_id":{"type":"integer","format":"int64","description":"Идентификатор сообщения, к которому был создан тред. `null` для самостоятельного треда, созданного без привязки к сообщению.","example":154332686,"nullable":true},"message_chat_id":{"type":"integer","format":"int64","description":"Идентификатор чата сообщения. `null` для самостоятельного треда, созданного без привязки к сообщению.","example":2637266154,"nullable":true},"updated_at":{"type":"string","format":"date-time","description":"Дата и время обновления треда (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2023-02-01T19:20:47.204Z"}},"$ref":"#/components/schemas/Thread"}}}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"threads:create","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":false},"docs":"# Новый тред\n\n**Метод**: `POST`\n\n**Путь**: `/messages/{id}/thread`\n\n> **Скоуп:** `threads:create`\n\nЗаводит тред под сообщением — место, где обсуждают сказанное, не засоряя ленту чата. Тред — это отдельный доступ: в него можно позвать сотрудника, не открывая ему сам чат, и он увидит только тред и родительское сообщение.\n\nВ новый тред сразу попадают тот, кто его создал, автор сообщения, все, кто ставил на сообщение реакции, и участники чата, включившие уведомления о тредах. Упомянутых в родительском сообщении — и поимённо, и тегом — добавляет фоновая задача сразу после создания, поэтому в первом ответе их может ещё не быть. Общие упоминания вроде `@all` в тред никого не приводят, а упомянутого, которого нет в самом чате, тред не подхватит.\n\nПустой тред разговором ещё не является: сразу отправьте в него первое сообщение методом [Новое сообщение](POST /messages) с `entity_type: \"thread\"`. Названия у треда нет, и удалить его нельзя ни через API, ни в приложении.\n\nЕсли у сообщения уже был создан тред, то в ответе на запрос вернётся информация об уже созданном ранее треде. Тред под сообщением, которое само лежит в треде, завести нельзя: вложенных тредов в Пачке нет.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор сообщения\n\n\n## Пример запроса\n\n```bash\ncurl -X POST \"https://api.pachca.com/api/shared/v1/messages/154332686/thread\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 201: The request has succeeded and a new resource has been created as a result.\n\n**Схема ответа:**\n\n- `data: object` (required) — Тред\n - `id: integer, int64` (required) — Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](POST /messages) с `entity_type: \"thread\"`. Пример: `265142`\n - `chat_id: integer, int64` (required) — Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](GET /messages) и работают с его участниками. Пример: `2637266155`\n - `message_id: integer, int64` (required, nullable) — Идентификатор сообщения, к которому был создан тред. `null` для самостоятельного треда, созданного без привязки к сообщению. Пример: `154332686`\n - `message_chat_id: integer, int64` (required, nullable) — Идентификатор чата сообщения. `null` для самостоятельного треда, созданного без привязки к сообщению. Пример: `2637266154`\n - `updated_at: date-time` (required) — Дата и время обновления треда (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2023-02-01T19:20:47.204Z\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 265142,\n \"chat_id\": 2637266155,\n \"message_id\": 154332686,\n \"message_chat_id\": 2637266154,\n \"updated_at\": \"2023-02-01T19:20:47.204Z\"\n }\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/oauth/token/info","summary":"Информация о токене","scope":null,"plan":null,"auth":true,"paginated":false,"command":"pachca oauth token-info","docLink":"https://dev.pachca.com/api/oauth/token-info","describe":"# GET /oauth/token/info — Информация о токене\n\n## Эквивалентная команда\n\n```bash\npachca oauth token-info \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/oauth/token-info\nПолная справка: `pachca api GET /oauth/token/info --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/oauth/token/info","description":"Информация о токене\n\nСведения о токене, которым сделан сам запрос: его скоупы, владелец, даты создания и последнего использования. Сам токен приходит замаскированным — видны только первые 8 и последние 4 символа.\n\nМетод не требует скоупа и отвечает на любой действующий токен, личный или бота. Поэтому им удобно проверять токен перед работой: живой отвечает `200`, отозванный или просроченный — `401`, а список скоупов сразу показывает, какие методы этому токену доступны.\n\nЧей это токен, видно по `user_id`. Полную карточку владельца отдаёт [Свой профиль](GET /profile).","parameters":[],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Токен доступа","required":["id","token","name","user_id","scopes","created_at","revoked_at","expires_in","last_used_at"],"properties":{"id":{"type":"integer","format":"int64","description":"Идентификатор токена","example":4827},"token":{"type":"string","description":"Маскированный токен (видны первые 8 и последние 4 символа)","example":"cH5kR9mN...x7Qp"},"name":{"type":"string","description":"Пользовательское имя токена. `null` у токена бота — имя задаётся только при создании токена вручную.","example":"Мой API токен","nullable":true},"user_id":{"type":"integer","format":"int64","description":"Идентификатор владельца токена","example":12},"scopes":{"type":"array","description":"Список скоупов токена","example":["messages:read","chats:read"],"items":{"type":"string","description":"Скоуп доступа OAuth токена","enum":["chats:read","chats:create","chats:update","chats:mark_unread","chats:archive","chats:leave","chat_members:read","chat_members:write","chat_exports:read","chat_exports:write","messages:read","messages:create","messages:update","messages:delete","reactions:read","reactions:write","pins:write","threads:read","threads:create","link_previews:write","users:read","users:create","users:update","users:delete","group_tags:read","group_tags:write","bots:read","bots:write","bot_self:webhook:write","bot_self:write","profile:read","profile_status:read","profile_status:write","profile_avatar:write","user_status:read","user_status:write","user_avatar:write","custom_properties:read","audit_events:read","company_chats:read","company_bots:read","tasks:read","tasks:create","tasks:update","tasks:delete","files:read","files:write","uploads:write","views:write","webhooks:read","webhooks:write","webhooks:events:read","webhooks:events:delete","search:users","search:chats","search:messages","drafts:read","drafts:write"],"x-enum-descriptions":{"chats:read":"Просмотр чатов и списка чатов","chats:create":"Создание новых чатов","chats:update":"Изменение настроек чата","chats:mark_unread":"Отметка чатов непрочитанными","chats:archive":"Архивация и разархивация чатов","chats:leave":"Выход из чатов","chat_members:read":"Просмотр участников чата","chat_members:write":"Добавление, изменение и удаление участников чата","chat_exports:read":"Скачивание экспортов чата","chat_exports:write":"Создание экспортов чата","messages:read":"Просмотр сообщений в чатах","messages:create":"Отправка сообщений","messages:update":"Редактирование сообщений","messages:delete":"Удаление сообщений","reactions:read":"Просмотр реакций на сообщения","reactions:write":"Добавление и удаление реакций","pins:write":"Закрепление и открепление сообщений","threads:read":"Просмотр тредов (комментариев)","threads:create":"Создание тредов (комментариев)","link_previews:write":"Unfurl (разворачивание ссылок)","views:write":"Открытие форм (представлений)","users:read":"Просмотр информации о сотрудниках и списка сотрудников","users:create":"Создание новых сотрудников","users:update":"Редактирование данных сотрудника","users:delete":"Удаление сотрудников","group_tags:read":"Просмотр тегов","group_tags:write":"Создание, редактирование и удаление тегов","bots:read":"Просмотр ботов","bots:write":"Управление ботами","bot_self:webhook:write":"Самостоятельное управление адресом вебхука бота","bot_self:write":"Самостоятельное управление настройками бота","profile:read":"Просмотр информации о своем профиле","profile_status:read":"Просмотр статуса профиля","profile_status:write":"Изменение и удаление статуса профиля","profile_avatar:write":"Изменение и удаление аватара профиля","user_status:read":"Просмотр статуса сотрудника","user_status:write":"Изменение и удаление статуса сотрудника","user_avatar:write":"Изменение и удаление аватара сотрудника","custom_properties:read":"Просмотр дополнительных полей","audit_events:read":"Просмотр журнала аудита","company_chats:read":"Просмотр списка всех чатов пространства","company_bots:read":"Просмотр списка всех ботов пространства","tasks:read":"Просмотр задач","tasks:create":"Создание задач","tasks:update":"Изменение задачи","tasks:delete":"Удаление задачи","files:read":"Скачивание файлов","files:write":"Загрузка файлов","uploads:write":"Получение данных для загрузки файлов","webhooks:read":"Просмотр вебхуков","webhooks:write":"Создание и управление вебхуками","webhooks:events:read":"Просмотр лога вебхуков","webhooks:events:delete":"Удаление записи в логе вебхука","search:users":"Поиск сотрудников","search:chats":"Поиск чатов","search:messages":"Поиск сообщений","drafts:read":"Просмотр черновиков и отложенных сообщений","drafts:write":"Создание, изменение и удаление черновиков и отложенных сообщений"},"x-scope-roles":{"chats:read":["owner","admin","user","multi_guest","bot"],"chats:create":["owner","admin","user","bot"],"chats:update":["owner","admin","user","multi_guest","bot"],"chats:mark_unread":["owner","admin","user","multi_guest","bot"],"chats:archive":["owner","admin","user","multi_guest","bot"],"chats:leave":["owner","admin","user","bot"],"chat_members:read":["owner","admin","user","multi_guest","bot"],"chat_members:write":["owner","admin","user","multi_guest","bot"],"chat_exports:read":["owner"],"chat_exports:write":["owner"],"messages:read":["owner","admin","user","multi_guest","bot"],"messages:create":["owner","admin","user","multi_guest","bot"],"messages:update":["owner","admin","user","multi_guest","bot"],"messages:delete":["owner","admin","user","multi_guest","bot"],"reactions:read":["owner","admin","user","multi_guest","bot"],"reactions:write":["owner","admin","user","multi_guest","bot"],"pins:write":["owner","admin","user","multi_guest","bot"],"threads:read":["owner","admin","user","multi_guest","bot"],"threads:create":["owner","admin","user","multi_guest","bot"],"link_previews:write":["owner","admin","user","bot"],"views:write":["owner","admin","user","multi_guest","bot"],"users:read":["owner","admin","user","multi_guest","bot"],"users:create":["owner","admin"],"users:update":["owner","admin"],"users:delete":["owner","admin"],"group_tags:read":["owner","admin","user","multi_guest","bot"],"group_tags:write":["owner","admin"],"bots:read":["owner","admin","user"],"bots:write":["owner","admin","user"],"bot_self:webhook:write":["bot"],"bot_self:write":["bot"],"profile:read":["owner","admin","user","multi_guest","bot"],"profile_status:read":["owner","admin","user","multi_guest","bot"],"profile_status:write":["owner","admin","user","multi_guest","bot"],"profile_avatar:write":["owner","admin","user","multi_guest","bot"],"user_status:read":["owner","admin","user","multi_guest","bot"],"user_status:write":["owner","admin"],"user_avatar:write":["owner","admin"],"custom_properties:read":["owner","admin","user","multi_guest","bot"],"audit_events:read":["owner"],"company_chats:read":["owner"],"company_bots:read":["owner"],"tasks:read":["owner","admin","user","multi_guest","bot"],"tasks:create":["owner","admin","user","multi_guest","bot"],"tasks:update":["owner","admin","user","multi_guest","bot"],"tasks:delete":["owner","admin","user","multi_guest","bot"],"files:read":["owner","admin","user","multi_guest","bot"],"files:write":["owner","admin","user","bot"],"uploads:write":["owner","admin","user","multi_guest","bot"],"webhooks:read":["owner","admin","user","bot"],"webhooks:write":["owner","admin","user","bot"],"webhooks:events:read":["owner","admin","user","bot"],"webhooks:events:delete":["owner","admin","user","bot"],"search:users":["owner","admin","user","multi_guest","bot"],"search:chats":["owner","admin","user","multi_guest","bot"],"search:messages":["owner","admin","user","multi_guest","bot"],"drafts:read":["owner","admin","user","multi_guest"],"drafts:write":["owner","admin","user","multi_guest"]},"$ref":"#/components/schemas/OAuthScope"}},"created_at":{"type":"string","format":"date-time","description":"Дата создания токена","example":"2025-01-15T10:30:00.000Z"},"revoked_at":{"type":"string","format":"date-time","description":"Дата отзыва токена. Всегда `null`: по отозванному токену метод возвращает 401.","example":null,"nullable":true},"expires_in":{"type":"integer","format":"int32","description":"Время жизни токена в секундах. `null` у бессрочного токена — такие выдаёт интерфейс. У токена, полученного входом из CLI, здесь `3600`: он живёт час и продлевается сам.","example":null,"nullable":true},"last_used_at":{"type":"string","format":"date-time","description":"Дата последнего использования токена. `null`, пока по токену не было ни одного запроса. Обновляется не чаще раза в час, поэтому может отставать.","example":"2025-02-24T14:20:00.000Z","nullable":true}},"$ref":"#/components/schemas/AccessTokenInfo"}}}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}}},"paginated":false},"docs":"# Информация о токене\n\n**Метод**: `GET`\n\n**Путь**: `/oauth/token/info`\n\nСведения о токене, которым сделан сам запрос: его скоупы, владелец, даты создания и последнего использования. Сам токен приходит замаскированным — видны только первые 8 и последние 4 символа.\n\nМетод не требует скоупа и отвечает на любой действующий токен, личный или бота. Поэтому им удобно проверять токен перед работой: живой отвечает `200`, отозванный или просроченный — `401`, а список скоупов сразу показывает, какие методы этому токену доступны.\n\nЧей это токен, видно по `user_id`. Полную карточку владельца отдаёт [Свой профиль](GET /profile).\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/oauth/token/info\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Токен доступа\n - `id: integer, int64` (required) — Идентификатор токена. Пример: `4827`\n - `token: string` (required) — Маскированный токен (видны первые 8 и последние 4 символа). Пример: `\"cH5kR9mN...x7Qp\"`\n - `name: string` (required, nullable) — Пользовательское имя токена. `null` у токена бота — имя задаётся только при создании токена вручную. Пример: `\"Мой API токен\"`\n - `user_id: integer, int64` (required) — Идентификатор владельца токена. Пример: `12`\n - `scopes: array of string` (required) — Список скоупов токена. Пример: `[\"messages:read\",\"chats:read\"]`\n - `created_at: date-time` (required) — Дата создания токена. Пример: `\"2025-01-15T10:30:00.000Z\"`\n - `revoked_at: date-time` (required, nullable) — Дата отзыва токена. Всегда `null`: по отозванному токену метод возвращает 401. Пример: `null`\n - `expires_in: integer, int32` (required, nullable) — Время жизни токена в секундах. `null` у бессрочного токена — такие выдаёт интерфейс. У токена, полученного входом из CLI, здесь `3600`: он живёт час и продлевается сам. Пример: `null`\n - `last_used_at: date-time` (required, nullable) — Дата последнего использования токена. `null`, пока по токену не было ни одного запроса. Обновляется не чаще раза в час, поэтому может отставать. Пример: `\"2025-02-24T14:20:00.000Z\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 4827,\n \"token\": \"cH5kR9mN...x7Qp\",\n \"name\": \"Мой API токен\",\n \"user_id\": 12,\n \"scopes\": [\n \"messages:read\",\n \"chats:read\"\n ],\n \"created_at\": \"2025-01-15T10:30:00.000Z\",\n \"revoked_at\": null,\n \"expires_in\": null,\n \"last_used_at\": \"2025-02-24T14:20:00.000Z\"\n }\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n"},{"method":"GET","path":"/profile","summary":"Свой профиль","scope":"profile:read","plan":null,"auth":true,"paginated":false,"command":"pachca profile get","docLink":"https://dev.pachca.com/api/profile/get","describe":"# GET /profile — Свой профиль\n\n> **Скоуп:** `profile:read`\n\n## Эквивалентная команда\n\n```bash\npachca profile get \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/profile/get\nПолная справка: `pachca api GET /profile --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/profile","description":"Свой профиль\n\nКарточка владельца токена. У бот-токена это карточка самого бота.\n\nЧасовой пояс нужен, чтобы правильно понимать сроки, названные словами: «до 15:00» и «к пятнице» считаются в поясе сотрудника, а не в UTC. Пустое значение означает часовой пояс пространства.\n\nЧужую карточку отдаёт [Информация о сотруднике](GET /users/{id}).","parameters":[],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Сотрудник","required":["id","first_name","last_name","nickname","email","phone_number","department","title","role","suspended","invite_status","inviter_id","list_tags","custom_properties","user_status","bot","sso","created_at","last_activity_at","time_zone","image_url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор пользователя","example":12},"first_name":{"type":"string","description":"Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`).","example":"Олег","nullable":true,"maxLength":255},"last_name":{"type":"string","description":"Фамилия. Если не заполнена, возвращается `null` или пустая строка.","example":"Петров","nullable":true,"maxLength":255},"nickname":{"type":"string","description":"Имя пользователя","example":"olegpetrov","maxLength":255},"email":{"type":"string","description":"Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда.","example":"olegp@example.com","nullable":true,"maxLength":255},"phone_number":{"type":"string","description":"Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда.","example":"+79001234567","nullable":true,"maxLength":255},"department":{"type":"string","description":"Департамент. Если не указан, возвращается `null` или пустая строка.","example":"Продукт","nullable":true,"maxLength":255},"title":{"type":"string","description":"Должность. Если не указана, возвращается `null` или пустая строка.","example":"CIO","nullable":true},"role":{"description":"Уровень доступа","example":"admin","allOf":[{"type":"string","description":"Роль пользователя в системе","enum":["admin","user","multi_guest","guest"],"x-enum-descriptions":{"admin":"Администратор","user":"Сотрудник","multi_guest":"Мульти-гость","guest":"Гость"},"$ref":"#/components/schemas/UserRole"}]},"suspended":{"type":"boolean","description":"Деактивация пользователя","example":false},"invite_status":{"description":"Статус приглашения","example":"confirmed","allOf":[{"type":"string","description":"Статус приглашения пользователя","enum":["confirmed","sent"],"x-enum-descriptions":{"confirmed":"Принято","sent":"Отправлено"},"$ref":"#/components/schemas/InviteStatus"}]},"inviter_id":{"type":"integer","format":"int32","description":"Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён.","example":185,"nullable":true},"list_tags":{"type":"array","description":"Массив тегов, привязанных к сотруднику. Мульти-гостю в чужой карточке приходит пустым.","example":["Product","Design"],"items":{"type":"string"}},"custom_properties":{"type":"array","description":"Дополнительные поля сотрудника","items":{"type":"object","description":"Дополнительное поле","required":["id","name","data_type","value"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор поля","example":1678},"name":{"type":"string","description":"Название поля","example":"Город","maxLength":32},"data_type":{"description":"Тип поля","example":"string","allOf":[{"type":"string","description":"Тип данных дополнительного поля","enum":["string","number","date","link"],"x-enum-descriptions":{"string":"Строковое значение","number":"Числовое значение","date":"Дата","link":"Ссылка"},"$ref":"#/components/schemas/CustomPropertyDataType"}]},"value":{"type":"string","description":"Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601.","example":"Санкт-Петербург","nullable":true,"maxLength":768}},"$ref":"#/components/schemas/CustomProperty"}},"user_status":{"type":"object","description":"Статус. `null`, если у сотрудника не установлен статус.","nullable":true,"allOf":[{"type":"object","description":"Статус пользователя","required":["emoji","title","expires_at","is_away","away_message"],"properties":{"emoji":{"type":"string","description":"Emoji символ статуса","example":"🎮"},"title":{"type":"string","description":"Текст статуса","example":"Очень занят","maxLength":50},"expires_at":{"type":"string","format":"date-time","description":"Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически.","example":"2024-04-08T10:00:00.000Z","nullable":true},"is_away":{"type":"boolean","description":"Режим «Нет на месте»","example":false},"away_message":{"type":"object","description":"Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.","required":["text"],"nullable":true,"properties":{"text":{"type":"string","description":"Текст сообщения","example":"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.","maxLength":1024}}}},"$ref":"#/components/schemas/UserStatus"}]},"bot":{"type":"boolean","description":"Является ботом","example":false},"sso":{"type":"boolean","description":"Использует ли пользователь SSO","example":false},"created_at":{"type":"string","format":"date-time","description":"Дата создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2020-06-08T09:32:57.000Z"},"last_activity_at":{"type":"string","format":"date-time","description":"Дата последней активности пользователя (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если сотрудник ещё ни разу не заходил в Пачку — в этом случае `invite_status` возвращает `sent`.","example":"2025-01-20T13:40:07.000Z","nullable":true},"time_zone":{"type":"string","description":"Часовой пояс пользователя. `null`, если сотрудник не задал личный часовой пояс — тогда применяется часовой пояс компании.","example":"Europe/Moscow","nullable":true,"maxLength":32},"image_url":{"type":"string","description":"Ссылка на скачивание аватарки пользователя. `null`, если аватарка не загружена.","example":"https://app.pachca.com/users/12/photo.jpg","nullable":true}},"$ref":"#/components/schemas/User"}}}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}}},"requirements":{"scope":"profile:read","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":false},"docs":"# Свой профиль\n\n**Метод**: `GET`\n\n**Путь**: `/profile`\n\n> **Скоуп:** `profile:read`\n\nКарточка владельца токена. У бот-токена это карточка самого бота.\n\nЧасовой пояс нужен, чтобы правильно понимать сроки, названные словами: «до 15:00» и «к пятнице» считаются в поясе сотрудника, а не в UTC. Пустое значение означает часовой пояс пространства.\n\nЧужую карточку отдаёт [Информация о сотруднике](GET /users/{id}).\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/profile\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Сотрудник\n - `id: integer, int32` (required) — Идентификатор пользователя. Пример: `12`\n - `first_name: string` (required, nullable, max length: 255) — Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`). Пример: `\"Олег\"`\n - `last_name: string` (required, nullable, max length: 255) — Фамилия. Если не заполнена, возвращается `null` или пустая строка. Пример: `\"Петров\"`\n - `nickname: string` (required, max length: 255) — Имя пользователя. Пример: `\"olegpetrov\"`\n - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `\"olegp@example.com\"`\n - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `\"+79001234567\"`\n - `department: string` (required, nullable, max length: 255) — Департамент. Если не указан, возвращается `null` или пустая строка. Пример: `\"Продукт\"`\n - `title: string` (required, nullable) — Должность. Если не указана, возвращается `null` или пустая строка. Пример: `\"CIO\"`\n - `role: string` (required) — Уровень доступа\n Значения: `admin` — Администратор, `user` — Сотрудник, `multi_guest` — Мульти-гость, `guest` — Гость\n - `suspended: boolean` (required) — Деактивация пользователя. Пример: `false`\n - `invite_status: string` (required) — Статус приглашения\n Значения: `confirmed` — Принято, `sent` — Отправлено\n - `inviter_id: integer, int32` (required, nullable) — Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён. Пример: `185`\n - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Мульти-гостю в чужой карточке приходит пустым. Пример: `[\"Product\",\"Design\"]`\n - `custom_properties: array of object` (required) — Дополнительные поля сотрудника\n - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678`\n - `name: string` (required, max length: 32) — Название поля. Пример: `\"Город\"`\n - `data_type: string` (required) — Тип поля\n Значения: `string` — Строковое значение, `number` — Числовое значение, `date` — Дата, `link` — Ссылка\n - `value: string` (required, nullable, max length: 768) — Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601. Пример: `\"Санкт-Петербург\"`\n - `user_status: object` (required) — Статус. `null`, если у сотрудника не установлен статус.\n - `emoji: string` (required) — Emoji символ статуса. Пример: `\"🎮\"`\n - `title: string` (required, max length: 50) — Текст статуса. Пример: `\"Очень занят\"`\n - `expires_at: date-time` (required, nullable) — Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически. Пример: `\"2024-04-08T10:00:00.000Z\"`\n - `is_away: boolean` (required) — Режим «Нет на месте». Пример: `false`\n - `away_message: object` (required, nullable) — Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.\n - `text: string` (required, max length: 1024) — Текст сообщения. Пример: `\"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"`\n - `bot: boolean` (required) — Является ботом. Пример: `false`\n - `sso: boolean` (required) — Использует ли пользователь SSO. Пример: `false`\n - `created_at: date-time` (required) — Дата создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2020-06-08T09:32:57.000Z\"`\n - `last_activity_at: date-time` (required, nullable) — Дата последней активности пользователя (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если сотрудник ещё ни разу не заходил в Пачку — в этом случае `invite_status` возвращает `sent`. Пример: `\"2025-01-20T13:40:07.000Z\"`\n - `time_zone: string` (required, nullable, max length: 32) — Часовой пояс пользователя. `null`, если сотрудник не задал личный часовой пояс — тогда применяется часовой пояс компании. Пример: `\"Europe/Moscow\"`\n - `image_url: string` (required, nullable) — Ссылка на скачивание аватарки пользователя. `null`, если аватарка не загружена. Пример: `\"https://app.pachca.com/users/12/photo.jpg\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 12,\n \"first_name\": \"Олег\",\n \"last_name\": \"Петров\",\n \"nickname\": \"olegpetrov\",\n \"email\": \"olegp@example.com\",\n \"phone_number\": \"+79001234567\",\n \"department\": \"Продукт\",\n \"title\": \"CIO\",\n \"role\": \"admin\",\n \"suspended\": false,\n \"invite_status\": \"confirmed\",\n \"inviter_id\": 185,\n \"list_tags\": [\n \"Product\",\n \"Design\"\n ],\n \"custom_properties\": [\n {\n \"id\": 1678,\n \"name\": \"Город\",\n \"data_type\": \"string\",\n \"value\": \"Санкт-Петербург\"\n }\n ],\n \"user_status\": {\n \"emoji\": \"🎮\",\n \"title\": \"Очень занят\",\n \"expires_at\": \"2024-04-08T10:00:00.000Z\",\n \"is_away\": false,\n \"away_message\": {\n \"text\": \"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"\n }\n },\n \"bot\": false,\n \"sso\": false,\n \"created_at\": \"2020-06-08T09:32:57.000Z\",\n \"last_activity_at\": \"2025-01-20T13:40:07.000Z\",\n \"time_zone\": \"Europe/Moscow\",\n \"image_url\": \"https://app.pachca.com/users/12/photo.jpg\"\n }\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n"},{"method":"PUT","path":"/profile/avatar","summary":"Загрузка своего аватара","scope":"profile_avatar:write","plan":null,"auth":true,"paginated":false,"command":"pachca profile update-avatar","docLink":"https://dev.pachca.com/api/profile/update-avatar","describe":"# PUT /profile/avatar — Загрузка своего аватара\n\n> **Скоуп:** `profile_avatar:write`\n\n## Тело запроса\n\n- `image: binary` (required) — Файл изображения для аватара\n\n## Эквивалентная команда\n\n```bash\npachca profile update-avatar \\\n --file=./image.jpg \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/profile/update-avatar\nПолная справка: `pachca api PUT /profile/avatar --docs` · схема: `--spec`\n","spec":{"method":"PUT","path":"/profile/avatar","description":"Загрузка своего аватара\n\nСтавит или заменяет аватар владельца токена. Файл передаётся в формате `multipart/form-data`, в ответе приходит только ссылка на новое изображение.\n\nПринимаются `jpg`, `jpeg`, `png` и `gif`, причём анимированный `gif` — не больше 2 МБ. Картинка уменьшается до 1024 на 1024 пикселя, а непрозрачный `png` сохраняется как `jpg`.\n\nАватар другого сотрудника ставит [Загрузка аватара сотрудника](PUT /users/{user_id}/avatar), и это доступно только владельцу пространства и администратору.","parameters":[],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"type":"string","format":"binary","description":"Файл изображения для аватара"}}}}}},"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Данные аватара","required":["image_url"],"properties":{"image_url":{"type":"string","description":"URL аватара","example":"https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg"}},"$ref":"#/components/schemas/AvatarData"}}}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"},{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}]}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"profile_avatar:write","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":false},"docs":"# Загрузка своего аватара\n\n**Метод**: `PUT`\n\n**Путь**: `/profile/avatar`\n\n> **Скоуп:** `profile_avatar:write`\n\nСтавит или заменяет аватар владельца токена. Файл передаётся в формате `multipart/form-data`, в ответе приходит только ссылка на новое изображение.\n\nПринимаются `jpg`, `jpeg`, `png` и `gif`, причём анимированный `gif` — не больше 2 МБ. Картинка уменьшается до 1024 на 1024 пикселя, а непрозрачный `png` сохраняется как `jpg`.\n\nАватар другого сотрудника ставит [Загрузка аватара сотрудника](PUT /users/{user_id}/avatar), и это доступно только владельцу пространства и администратору.\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `multipart/form-data`\n\n### Схема\n\n- `image: binary` (required) — Файл изображения для аватара\n\n\n## Пример запроса\n\n```bash\ncurl -X PUT \"https://api.pachca.com/api/shared/v1/profile/avatar\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -F 'image=@filename.png'\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Данные аватара\n - `image_url: string` (required) — URL аватара. Пример: `\"https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"image_url\": \"https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg\"\n }\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n**anyOf** - один из вариантов:\n\n- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)\n - `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403)\n - `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n - `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"DELETE","path":"/profile/avatar","summary":"Удаление своего аватара","scope":"profile_avatar:write","plan":null,"auth":true,"paginated":false,"command":"pachca profile delete-avatar","docLink":"https://dev.pachca.com/api/profile/delete-avatar","describe":"# DELETE /profile/avatar — Удаление своего аватара\n\n> **Скоуп:** `profile_avatar:write`\n\n## Эквивалентная команда\n\n```bash\npachca profile delete-avatar \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/profile/delete-avatar\nПолная справка: `pachca api DELETE /profile/avatar --docs` · схема: `--spec`\n","spec":{"method":"DELETE","path":"/profile/avatar","description":"Удаление своего аватара\n\nУбирает аватар владельца токена, дальше в интерфейсе показываются инициалы. Если аватара не было, ответ всё равно `204`.","parameters":[],"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"},{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}]}}}}},"requirements":{"scope":"profile_avatar:write","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":false},"docs":"# Удаление своего аватара\n\n**Метод**: `DELETE`\n\n**Путь**: `/profile/avatar`\n\n> **Скоуп:** `profile_avatar:write`\n\nУбирает аватар владельца токена, дальше в интерфейсе показываются инициалы. Если аватара не было, ответ всё равно `204`.\n\n## Пример запроса\n\n```bash\ncurl -X DELETE \"https://api.pachca.com/api/shared/v1/profile/avatar\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n**anyOf** - один из вариантов:\n\n- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)\n - `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403)\n - `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n - `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/profile/status","summary":"Свой статус","scope":"profile_status:read","plan":null,"auth":true,"paginated":false,"command":"pachca profile get-status","docLink":"https://dev.pachca.com/api/profile/get-status","describe":"# GET /profile/status — Свой статус\n\n> **Скоуп:** `profile_status:read`\n\n## Эквивалентная команда\n\n```bash\npachca profile get-status \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/profile/get-status\nПолная справка: `pachca api GET /profile/status --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/profile/status","description":"Свой статус\n\nСтатус владельца токена: эмодзи, подпись, срок и режим «Нет на месте».\n\nЕсли статус не установлен, метод возвращает `200` и `null` в теле ответа — без объекта-обёртки. Статус с истёкшим `expires_at` какое-то время ещё возвращается, пока не будет очищен, поэтому проверяйте `expires_at` на стороне клиента.","parameters":[],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"nullable":true,"properties":{"data":{"type":"object","description":"Статус пользователя","required":["emoji","title","expires_at","is_away","away_message"],"properties":{"emoji":{"type":"string","description":"Emoji символ статуса","example":"🎮"},"title":{"type":"string","description":"Текст статуса","example":"Очень занят","maxLength":50},"expires_at":{"type":"string","format":"date-time","description":"Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически.","example":"2024-04-08T10:00:00.000Z","nullable":true},"is_away":{"type":"boolean","description":"Режим «Нет на месте»","example":false},"away_message":{"type":"object","description":"Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.","required":["text"],"nullable":true,"properties":{"text":{"type":"string","description":"Текст сообщения","example":"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.","maxLength":1024}}}},"$ref":"#/components/schemas/UserStatus"}}}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}}},"requirements":{"scope":"profile_status:read","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":false},"docs":"# Свой статус\n\n**Метод**: `GET`\n\n**Путь**: `/profile/status`\n\n> **Скоуп:** `profile_status:read`\n\nСтатус владельца токена: эмодзи, подпись, срок и режим «Нет на месте».\n\nЕсли статус не установлен, метод возвращает `200` и `null` в теле ответа — без объекта-обёртки. Статус с истёкшим `expires_at` какое-то время ещё возвращается, пока не будет очищен, поэтому проверяйте `expires_at` на стороне клиента.\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/profile/status\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Статус пользователя\n - `emoji: string` (required) — Emoji символ статуса. Пример: `\"🎮\"`\n - `title: string` (required, max length: 50) — Текст статуса. Пример: `\"Очень занят\"`\n - `expires_at: date-time` (required, nullable) — Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически. Пример: `\"2024-04-08T10:00:00.000Z\"`\n - `is_away: boolean` (required) — Режим «Нет на месте». Пример: `false`\n - `away_message: object` (required, nullable) — Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.\n - `text: string` (required, max length: 1024) — Текст сообщения. Пример: `\"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"emoji\": \"🎮\",\n \"title\": \"Очень занят\",\n \"expires_at\": \"2024-04-08T10:00:00.000Z\",\n \"is_away\": false,\n \"away_message\": {\n \"text\": \"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"\n }\n }\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n"},{"method":"PUT","path":"/profile/status","summary":"Новый свой статус","scope":"profile_status:write","plan":null,"auth":true,"paginated":false,"command":"pachca profile update-status","docLink":"https://dev.pachca.com/api/profile/update-status","describe":"# PUT /profile/status — Новый свой статус\n\n> **Скоуп:** `profile_status:write`\n\n## Тело запроса\n\n- `status: object` (required)\n - `emoji: string` (required) — Emoji символ статуса\n - `title: string` (required, max length: 50) — Текст статуса\n - `expires_at: date-time` — Срок жизни статуса (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Сюда идёт срок, названный словами: «до трёх» это значение поля, а не часть подписи.\n - `is_away: boolean` — Режим «Нет на месте»\n - `away_message: string` (max length: 1024) — Текст сообщения при режиме «Нет на месте». Отображается в профиле и при личных сообщениях/упоминаниях.\n\n## Эквивалентная команда\n\n```bash\npachca profile update-status \\\n --emoji=🎮 \\\n --title='Очень занят' \\\n --expires-at=2024-04-08T10:00:00.000Z \\\n --is-away \\\n --away-message='Вернусь после 15:00' \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/profile/update-status\nПолная справка: `pachca api PUT /profile/status --docs` · схема: `--spec`\n","spec":{"method":"PUT","path":"/profile/status","description":"Новый свой статус\n\nСтавит статус владельцу токена: эмодзи, подпись и, если нужно, срок. Метод доступен и боту — статус появится в карточке самого бота.\n\nРежим «Нет на месте» включается этим же методом, флагом `is_away`. В `away_message` кладут текст, который увидят в профиле и при попытке написать или упомянуть. Когда срок из `expires_at` истекает, статус снимается целиком, вместе с режимом и этим текстом.\n\nПерезаписываются только переданные поля. Чтобы продлить текущий статус, достаточно прислать один `expires_at`.\n\nСрок, названный словами («до трёх», «до конца дня»), — это `expires_at`, а не часть подписи. Считается он в часовом поясе сотрудника, а пояс приходит в методе [Свой профиль](GET /profile).\n\nЭмодзи обязателен, и он должен быть ровно один, без текста вокруг. Подпись обязательна и не длиннее 50 символов.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на установку статуса","required":["status"],"properties":{"status":{"type":"object","required":["emoji","title"],"properties":{"emoji":{"type":"string","description":"Emoji символ статуса","example":"🎮"},"title":{"type":"string","description":"Текст статуса","example":"Очень занят","maxLength":50},"expires_at":{"type":"string","format":"date-time","description":"Срок жизни статуса (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Сюда идёт срок, названный словами: «до трёх» это значение поля, а не часть подписи.","example":"2024-04-08T10:00:00.000Z"},"is_away":{"type":"boolean","description":"Режим «Нет на месте»","example":true},"away_message":{"type":"string","description":"Текст сообщения при режиме «Нет на месте». Отображается в профиле и при личных сообщениях/упоминаниях.","example":"Вернусь после 15:00","maxLength":1024}}}},"$ref":"#/components/schemas/StatusUpdateRequest"}}}},"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Статус пользователя","required":["emoji","title","expires_at","is_away","away_message"],"properties":{"emoji":{"type":"string","description":"Emoji символ статуса","example":"🎮"},"title":{"type":"string","description":"Текст статуса","example":"Очень занят","maxLength":50},"expires_at":{"type":"string","format":"date-time","description":"Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически.","example":"2024-04-08T10:00:00.000Z","nullable":true},"is_away":{"type":"boolean","description":"Режим «Нет на месте»","example":false},"away_message":{"type":"object","description":"Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.","required":["text"],"nullable":true,"properties":{"text":{"type":"string","description":"Текст сообщения","example":"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.","maxLength":1024}}}},"$ref":"#/components/schemas/UserStatus"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"profile_status:write","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":false},"docs":"# Новый свой статус\n\n**Метод**: `PUT`\n\n**Путь**: `/profile/status`\n\n> **Скоуп:** `profile_status:write`\n\nСтавит статус владельцу токена: эмодзи, подпись и, если нужно, срок. Метод доступен и боту — статус появится в карточке самого бота.\n\nРежим «Нет на месте» включается этим же методом, флагом `is_away`. В `away_message` кладут текст, который увидят в профиле и при попытке написать или упомянуть. Когда срок из `expires_at` истекает, статус снимается целиком, вместе с режимом и этим текстом.\n\nПерезаписываются только переданные поля. Чтобы продлить текущий статус, достаточно прислать один `expires_at`.\n\nСрок, названный словами («до трёх», «до конца дня»), — это `expires_at`, а не часть подписи. Считается он в часовом поясе сотрудника, а пояс приходит в методе [Свой профиль](GET /profile).\n\nЭмодзи обязателен, и он должен быть ровно один, без текста вокруг. Подпись обязательна и не длиннее 50 символов.\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `status: object` (required)\n - `emoji: string` (required) — Emoji символ статуса. Пример: `\"🎮\"`\n - `title: string` (required, max length: 50) — Текст статуса. Пример: `\"Очень занят\"`\n - `expires_at: date-time` — Срок жизни статуса (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Сюда идёт срок, названный словами: «до трёх» это значение поля, а не часть подписи. Пример: `\"2024-04-08T10:00:00.000Z\"`\n - `is_away: boolean` — Режим «Нет на месте». Пример: `true`\n - `away_message: string` (max length: 1024) — Текст сообщения при режиме «Нет на месте». Отображается в профиле и при личных сообщениях/упоминаниях. Пример: `\"Вернусь после 15:00\"`\n\n### Пример\n\n```json\n{\n \"status\": {\n \"emoji\": \"🎮\",\n \"title\": \"Очень занят\",\n \"expires_at\": \"2024-04-08T10:00:00.000Z\",\n \"is_away\": true,\n \"away_message\": \"Вернусь после 15:00\"\n }\n}\n```\n\n## Пример запроса\n\n```bash\ncurl -X PUT \"https://api.pachca.com/api/shared/v1/profile/status\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"status\": {\n \"emoji\": \"🎮\",\n \"title\": \"Очень занят\",\n \"expires_at\": \"2024-04-08T10:00:00.000Z\",\n \"is_away\": true,\n \"away_message\": \"Вернусь после 15:00\"\n }\n}'\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Статус пользователя\n - `emoji: string` (required) — Emoji символ статуса. Пример: `\"🎮\"`\n - `title: string` (required, max length: 50) — Текст статуса. Пример: `\"Очень занят\"`\n - `expires_at: date-time` (required, nullable) — Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически. Пример: `\"2024-04-08T10:00:00.000Z\"`\n - `is_away: boolean` (required) — Режим «Нет на месте». Пример: `false`\n - `away_message: object` (required, nullable) — Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.\n - `text: string` (required, max length: 1024) — Текст сообщения. Пример: `\"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"emoji\": \"🎮\",\n \"title\": \"Очень занят\",\n \"expires_at\": \"2024-04-08T10:00:00.000Z\",\n \"is_away\": false,\n \"away_message\": {\n \"text\": \"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"DELETE","path":"/profile/status","summary":"Удаление своего статуса","scope":"profile_status:write","plan":null,"auth":true,"paginated":false,"command":"pachca profile delete-status","docLink":"https://dev.pachca.com/api/profile/delete-status","describe":"# DELETE /profile/status — Удаление своего статуса\n\n> **Скоуп:** `profile_status:write`\n\n## Эквивалентная команда\n\n```bash\npachca profile delete-status \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/profile/delete-status\nПолная справка: `pachca api DELETE /profile/status --docs` · схема: `--spec`\n","spec":{"method":"DELETE","path":"/profile/status","description":"Удаление своего статуса\n\nСнимает статус с владельца токена вместе с режимом «Нет на месте» и его текстом. Если статуса не было, ответ всё равно `204`, поэтому повторный вызов безопасен.","parameters":[],"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}}},"requirements":{"scope":"profile_status:write","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":false},"docs":"# Удаление своего статуса\n\n**Метод**: `DELETE`\n\n**Путь**: `/profile/status`\n\n> **Скоуп:** `profile_status:write`\n\nСнимает статус с владельца токена вместе с режимом «Нет на месте» и его текстом. Если статуса не было, ответ всё равно `204`, поэтому повторный вызов безопасен.\n\n## Пример запроса\n\n```bash\ncurl -X DELETE \"https://api.pachca.com/api/shared/v1/profile/status\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n"},{"method":"GET","path":"/search/chats","summary":"Поиск чатов","scope":"search:chats","plan":null,"auth":true,"paginated":true,"command":"pachca search list-chats","docLink":"https://dev.pachca.com/api/search/list-chats","describe":"# GET /search/chats — Поиск чатов\n\n> **Скоуп:** `search:chats`\n\n> Пагинация: добавьте `--all` для автоматического обхода страниц\n\n## Параметры\n\n- `query` — query: Текст поискового запроса\n- `limit` — query: Количество возвращаемых результатов за один запрос\n- `cursor` — query: Курсор для пагинации (из `meta.paginate.next_page`)\n- `order` — query: Направление сортировки\n- `created_from` — query: Фильтр по дате создания (от)\n- `created_to` — query: Фильтр по дате создания (до)\n- `active` — query: Фильтр по активности чата\n- `chat_subtype` — query: Фильтр по типу чата\n- `personal` — query: Фильтр по личным чатам\n\n## Эквивалентная команда\n\n```bash\n# Добавьте --all для автоматической пагинации\npachca search list-chats \\\n --query=Разработка \\\n --limit=10 \\\n --order=desc \\\n --created-from=2025-01-01T00:00:00.000Z \\\n --created-to=2025-02-01T00:00:00.000Z \\\n --active \\\n --chat-subtype=discussion \\\n --no-personal \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/search/list-chats\nПолная справка: `pachca api GET /search/chats --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/search/chats","description":"Поиск чатов\n\nИщет беседы и каналы по названию, прощая опечатки. Находит и открытые чаты пространства, куда вызывающий не вступал, а закрытые — только те, где он состоит.\n\nЛичные переписки по умолчанию не ищутся. Передайте `personal=true`, и поиск пойдёт по имени собеседника, а не по названию чата.\n\nМетод ищет по названиям, а не по содержанию. Если нужно найти, где что-то обсуждали или о чём договорились, это [Поиск сообщений](GET /search/messages).\n\nСлишком тяжёлый запрос может не уложиться по времени: тогда метод отвечает `504` с кодом `timeout`, и запрос стоит сузить.","parameters":[{"name":"query","in":"query","description":"Текст поискового запроса","required":false,"schema":{"type":"string","example":"Разработка"},"example":"Разработка","explode":false},{"name":"limit","in":"query","description":"Количество возвращаемых результатов за один запрос","required":false,"schema":{"type":"integer","format":"int32","default":100,"example":10,"maximum":100},"example":10,"explode":false},{"name":"cursor","in":"query","description":"Курсор для пагинации (из `meta.paginate.next_page`)","required":false,"schema":{"type":"string","example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9"},"example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9","explode":false},{"name":"order","in":"query","description":"Направление сортировки","required":false,"schema":{"type":"string","description":"Порядок сортировки","enum":["asc","desc"],"x-enum-descriptions":{"asc":"По возрастанию","desc":"По убыванию"},"example":"desc","$ref":"#/components/schemas/SortOrder"},"example":"desc","explode":false},{"name":"created_from","in":"query","description":"Фильтр по дате создания (от)","required":false,"schema":{"type":"string","format":"date-time","example":"2025-01-01T00:00:00.000Z"},"example":"2025-01-01T00:00:00.000Z","explode":false},{"name":"created_to","in":"query","description":"Фильтр по дате создания (до)","required":false,"schema":{"type":"string","format":"date-time","example":"2025-02-01T00:00:00.000Z"},"example":"2025-02-01T00:00:00.000Z","explode":false},{"name":"active","in":"query","description":"Фильтр по активности чата","required":false,"schema":{"type":"boolean","example":true},"example":true,"explode":false},{"name":"chat_subtype","in":"query","description":"Фильтр по типу чата","required":false,"schema":{"type":"string","description":"Тип чата","enum":["discussion","thread"],"x-enum-descriptions":{"discussion":"Канал или беседа","thread":"Тред"},"example":"discussion","$ref":"#/components/schemas/ChatSubtype"},"example":"discussion","explode":false},{"name":"personal","in":"query","description":"Фильтр по личным чатам","required":false,"schema":{"type":"boolean","example":false},"example":false,"explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа поисковых результатов с данными и пагинацией","required":["data","meta"],"properties":{"data":{"type":"array","items":{"type":"object","description":"Чат","required":["id","name","created_at","owner_id","member_ids","group_tag_ids","channel","archived","personal","public","last_message_at","meet_room_url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор созданного чата","example":334},"name":{"type":"string","description":"Название","example":"🤿 aqua","maxLength":255},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания чата (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2021-08-28T15:56:53.000Z"},"owner_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, создавшего чат","example":185},"member_ids":{"type":"array","description":"Массив идентификаторов пользователей, участников","example":[185,186,187],"items":{"type":"integer","format":"int32"}},"group_tag_ids":{"type":"array","description":"Массив идентификаторов тегов, участников","example":[9111],"items":{"type":"integer","format":"int32"}},"channel":{"type":"boolean","description":"Является каналом","example":true},"archived":{"type":"boolean","description":"Находится в архиве","example":false},"personal":{"type":"boolean","description":"Является личным чатом","example":false},"public":{"type":"boolean","description":"Открытый доступ","example":false},"last_message_at":{"type":"string","format":"date-time","description":"Дата и время создания последнего сообщения в чате (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2021-08-28T15:56:53.000Z"},"meet_room_url":{"type":"string","description":"Ссылка на Видеочат","example":"https://meet.pachca.com/aqua-94bb21b5"}},"$ref":"#/components/schemas/Chat"}},"meta":{"type":"object","description":"Мета-информация для пагинации поисковых результатов","required":["total","paginate"],"properties":{"total":{"type":"integer","format":"int32","description":"Общее количество найденных результатов","example":42},"paginate":{"type":"object","description":"Вспомогательная информация","required":["next_page"],"properties":{"next_page":{"type":"string","description":"Курсор пагинации следующей страницы","example":"eyJxZCO2MiwiZGlyIjomSNYjIn3"}}}},"$ref":"#/components/schemas/SearchPaginationMeta"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"504":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"search:chats","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":true},"docs":"# Поиск чатов\n\n**Метод**: `GET`\n\n**Путь**: `/search/chats`\n\n> **Скоуп:** `search:chats`\n\nИщет беседы и каналы по названию, прощая опечатки. Находит и открытые чаты пространства, куда вызывающий не вступал, а закрытые — только те, где он состоит.\n\nЛичные переписки по умолчанию не ищутся. Передайте `personal=true`, и поиск пойдёт по имени собеседника, а не по названию чата.\n\nМетод ищет по названиям, а не по содержанию. Если нужно найти, где что-то обсуждали или о чём договорились, это [Поиск сообщений](GET /search/messages).\n\nСлишком тяжёлый запрос может не уложиться по времени: тогда метод отвечает `504` с кодом `timeout`, и запрос стоит сузить.\n\n## Параметры\n\n### Query параметры\n\n- `query: string` — Текст поискового запроса\n- `limit: integer, int32` (default: 100) — Количество возвращаемых результатов за один запрос\n- `cursor: string` — Курсор для пагинации (из `meta.paginate.next_page`)\n- `order: string` — Направление сортировки\n Значения: `asc`, `desc`\n- `created_from: date-time` — Фильтр по дате создания (от)\n- `created_to: date-time` — Фильтр по дате создания (до)\n- `active: boolean` — Фильтр по активности чата\n- `chat_subtype: string` — Фильтр по типу чата\n Значения: `discussion`, `thread`\n- `personal: boolean` — Фильтр по личным чатам\n\n\n## Пример запроса\n\n```bash\n# Для получения следующей страницы используйте cursor из meta.paginate.next_page\ncurl \"https://api.pachca.com/api/shared/v1/search/chats?query=Разработка&limit=10&order=desc&created_from=2025-01-01T00:00:00.000Z&created_to=2025-02-01T00:00:00.000Z&active=true&chat_subtype=discussion&personal=false\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: array of object` (required)\n - `id: integer, int32` (required) — Идентификатор созданного чата. Пример: `334`\n - `name: string` (required, max length: 255) — Название. Пример: `\"🤿 aqua\"`\n - `created_at: date-time` (required) — Дата и время создания чата (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2021-08-28T15:56:53.000Z\"`\n - `owner_id: integer, int32` (required) — Идентификатор пользователя, создавшего чат. Пример: `185`\n - `member_ids: array of integer` (required) — Массив идентификаторов пользователей, участников. Пример: `[185,186,187]`\n - `group_tag_ids: array of integer` (required) — Массив идентификаторов тегов, участников. Пример: `[9111]`\n - `channel: boolean` (required) — Является каналом. Пример: `true`\n - `archived: boolean` (required) — Находится в архиве. Пример: `false`\n - `personal: boolean` (required) — Является личным чатом. Пример: `false`\n - `public: boolean` (required) — Открытый доступ. Пример: `false`\n - `last_message_at: date-time` (required) — Дата и время создания последнего сообщения в чате (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2021-08-28T15:56:53.000Z\"`\n - `meet_room_url: string` (required) — Ссылка на Видеочат. Пример: `\"https://meet.pachca.com/aqua-94bb21b5\"`\n- `meta: object` (required) — Мета-информация для пагинации поисковых результатов\n - `total: integer, int32` (required) — Общее количество найденных результатов. Пример: `42`\n - `paginate: object` (required) — Вспомогательная информация\n - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `\"eyJxZCO2MiwiZGlyIjomSNYjIn3\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": [\n {\n \"id\": 334,\n \"name\": \"🤿 aqua\",\n \"created_at\": \"2021-08-28T15:56:53.000Z\",\n \"owner_id\": 185,\n \"member_ids\": [\n 185,\n 186,\n 187\n ],\n \"group_tag_ids\": [\n 9111\n ],\n \"channel\": true,\n \"archived\": false,\n \"personal\": false,\n \"public\": false,\n \"last_message_at\": \"2021-08-28T15:56:53.000Z\",\n \"meet_room_url\": \"https://meet.pachca.com/aqua-94bb21b5\"\n }\n ],\n \"meta\": {\n \"total\": 42,\n \"paginate\": {\n \"next_page\": \"eyJxZCO2MiwiZGlyIjomSNYjIn3\"\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 504: Server error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/search/messages","summary":"Поиск сообщений","scope":"search:messages","plan":null,"auth":true,"paginated":true,"command":"pachca search list-messages","docLink":"https://dev.pachca.com/api/search/list-messages","describe":"# GET /search/messages — Поиск сообщений\n\n> **Скоуп:** `search:messages`\n\n> Пагинация: добавьте `--all` для автоматического обхода страниц\n\n## Параметры\n\n- `query` — query: Текст поискового запроса\n- `limit` — query: Количество возвращаемых результатов за один запрос\n- `cursor` — query: Курсор для пагинации (из `meta.paginate.next_page`)\n- `order` — query: Направление сортировки\n- `sort` — query: Сортировка результатов\n- `created_from` — query: Фильтр по дате создания (от)\n- `created_to` — query: Фильтр по дате создания (до)\n- `chat_ids` — query: Фильтр по ID чатов\n- `user_ids` — query: Фильтр по ID авторов сообщений\n- `active` — query: Фильтр по активности чата\n\n## Эквивалентная команда\n\n```bash\n# Добавьте --all для автоматической пагинации\npachca search list-messages \\\n --query=футболки \\\n --limit=10 \\\n --order=desc \\\n --sort=created_at \\\n --created-from=2025-01-01T00:00:00.000Z \\\n --created-to=2025-02-01T00:00:00.000Z \\\n --chat-ids=198,334 \\\n --user-ids=12,185 \\\n --active \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/search/list-messages\nПолная справка: `pachca api GET /search/messages --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/search/messages","description":"Поиск сообщений\n\nИщет по тексту сообщений и по именам вложенных файлов, но только в чатах, где владелец токена состоит. Открытый канал, в который он не вступал, в поиск не попадает, хотя ленту его читать можно. Сообщения тредов в выдачу входят.\n\nСлова запроса ищутся по словоформам и по части слова, опечатки при этом не исправляются. Запрос в кавычках ищется строгой фразой, поиск по части слова в нём не работает.\n\nПо умолчанию сообщения приходят от новых к старым. `sort=relevance` переключает выдачу на соответствие запросу, где свежие сообщения всё равно ценятся выше.\n\nСлишком тяжёлый запрос может не уложиться по времени: тогда метод отвечает `504` с кодом `timeout`, и запрос стоит сузить.","parameters":[{"name":"query","in":"query","description":"Текст поискового запроса","required":false,"schema":{"type":"string","example":"футболки"},"example":"футболки","explode":false},{"name":"limit","in":"query","description":"Количество возвращаемых результатов за один запрос","required":false,"schema":{"type":"integer","format":"int32","default":200,"example":10,"maximum":200},"example":10,"explode":false},{"name":"cursor","in":"query","description":"Курсор для пагинации (из `meta.paginate.next_page`)","required":false,"schema":{"type":"string","example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9"},"example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9","explode":false},{"name":"order","in":"query","description":"Направление сортировки","required":false,"schema":{"type":"string","description":"Порядок сортировки","enum":["asc","desc"],"x-enum-descriptions":{"asc":"По возрастанию","desc":"По убыванию"},"example":"desc","$ref":"#/components/schemas/SortOrder"},"example":"desc","explode":false},{"name":"sort","in":"query","description":"Сортировка результатов","required":false,"schema":{"default":"created_at","allOf":[{"type":"string","description":"Сортировка результатов поиска сообщений","enum":["created_at","relevance"],"x-enum-descriptions":{"created_at":"По дате создания (хронология)","relevance":"По релевантности"},"$ref":"#/components/schemas/MessageSearchSort"}]},"example":"created_at","explode":false},{"name":"created_from","in":"query","description":"Фильтр по дате создания (от)","required":false,"schema":{"type":"string","format":"date-time","example":"2025-01-01T00:00:00.000Z"},"example":"2025-01-01T00:00:00.000Z","explode":false},{"name":"created_to","in":"query","description":"Фильтр по дате создания (до)","required":false,"schema":{"type":"string","format":"date-time","example":"2025-02-01T00:00:00.000Z"},"example":"2025-02-01T00:00:00.000Z","explode":false},{"name":"chat_ids","in":"query","description":"Фильтр по ID чатов","required":false,"schema":{"type":"array","example":[198,334],"items":{"type":"integer","format":"int32"}},"example":[198,334],"explode":false},{"name":"user_ids","in":"query","description":"Фильтр по ID авторов сообщений","required":false,"schema":{"type":"array","example":[12,185],"items":{"type":"integer","format":"int32"}},"example":[12,185],"explode":false},{"name":"active","in":"query","description":"Фильтр по активности чата","required":false,"schema":{"type":"boolean","example":true},"example":true,"explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа поисковых результатов с данными и пагинацией","required":["data","meta"],"properties":{"data":{"type":"array","items":{"type":"object","description":"Сообщение","required":["id","entity_type","entity_id","chat_id","root_chat_id","content","user_id","created_at","url","files","voice_content","buttons","thread","forwarding","parent_message_id","changed_at","deleted_at"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор сообщения","example":194275},"entity_type":{"description":"Тип сущности, к которой относится сообщение","example":"discussion","allOf":[{"type":"string","description":"Тип сущности для сообщений","enum":["discussion","thread","user"],"x-enum-descriptions":{"discussion":"Беседа или канал","thread":"Тред","user":"Пользователь"},"$ref":"#/components/schemas/MessageEntityType"}]},"entity_id":{"type":"integer","format":"int32","description":"Идентификатор сущности, к которой относится сообщение (беседы/канала, треда или пользователя)","example":334},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором находится сообщение","example":334},"root_chat_id":{"type":"integer","format":"int32","description":"Идентификатор корневого чата. Для сообщений в тредах — идентификатор чата, в котором был создан тред. Для обычных сообщений совпадает с `chat_id`.","example":334},"content":{"type":"string","description":"Текст сообщения","example":"Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)"},"user_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, создавшего сообщение","example":12},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2021-08-28T15:57:23.000Z"},"url":{"type":"string","description":"Прямая ссылка на сообщение","example":"https://app.pachca.com/chats/334?message=194275"},"files":{"type":"array","description":"Прикрепленные файлы","items":{"type":"object","description":"Файл","required":["id","key","name","file_type","url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор файла","example":3560},"key":{"type":"string","description":"Путь к файлу","example":"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png"},"name":{"type":"string","description":"Название файла с расширением","example":"congrat.png"},"file_type":{"description":"Тип файла","example":"image","allOf":[{"type":"string","description":"Тип файла","enum":["file","image","audio","voice","video"],"x-enum-descriptions":{"file":"Обычный файл","image":"Изображение","audio":"Аудиофайл","voice":"Голосовое сообщение","video":"Видеофайл"},"$ref":"#/components/schemas/FileType"}]},"url":{"type":"string","description":"Ссылка на скачивание файла. Обычно ведёт прямо в хранилище и действует до 7 дней, а оставшийся срок может быть меньше — если такая ссылка вернула `403`, запросите сообщение заново и получите свежую. Если в пространстве включено шифрование или задан безопасный контур, ссылка ведёт на [Скачивание файла](GET /files/{id}): забирать такой файл нужно с заголовком `Authorization`, а токену нужен скоуп `files:read`.","example":"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8"},"width":{"type":"integer","format":"int32","description":"Ширина изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке.","example":1920,"nullable":true},"height":{"type":"integer","format":"int32","description":"Высота изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке.","example":1080,"nullable":true},"duration_ms":{"type":"integer","format":"int32","description":"Длительность в миллисекундах у голосового, аудио- и видеофайла. `null` у остальных файлов и если длительность не была передана при загрузке.","example":5400,"nullable":true}},"$ref":"#/components/schemas/File"}},"voice_content":{"type":"object","description":"Данные голосового сообщения. Заполняется только для голосовых сообщений (`file_type` файла — `voice`), иначе `null`.","nullable":true,"allOf":[{"type":"object","description":"Данные голосового сообщения","required":["duration_ms","waveform","transcript"],"properties":{"duration_ms":{"type":"integer","format":"int32","description":"Длительность голосового сообщения в миллисекундах","example":5400},"waveform":{"type":"string","description":"Форма волны (амплитуды) для визуализации голосового сообщения","example":"4,8,12,20,16,10,6,3"},"transcript":{"type":"string","description":"Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна.","example":"Привет, посмотри пожалуйста последний отчёт","nullable":true}},"$ref":"#/components/schemas/VoiceContent"}]},"buttons":{"type":"array","description":"Массив строк, каждая из которых представлена массивом кнопок. `null`, если сообщение отправлено без кнопок.","nullable":true,"items":{"type":"array","items":{"type":"object","description":"Кнопка","required":["text"],"properties":{"text":{"type":"string","description":"Текст, отображаемый на кнопке","example":"Подробнее","maxLength":255},"url":{"type":"string","description":"Ссылка, которая будет открыта по нажатию кнопки. У кнопки должно быть заполнено ровно одно из полей `url` и `data`.","example":"https://example.com/details","maxLength":1024},"data":{"type":"string","description":"Данные, которые будут отправлены в исходящем вебхуке по нажатию кнопки. У кнопки должно быть заполнено ровно одно из полей `url` и `data`.","example":"awesome","maxLength":255}},"$ref":"#/components/schemas/Button"}}},"thread":{"type":"object","description":"Тред, созданный к этому сообщению. `null`, если тред не создан, а также у сообщений, которые сами находятся внутри треда.","required":["id","chat_id"],"nullable":true,"properties":{"id":{"type":"integer","format":"int64","description":"Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](POST /messages) с `entity_type: \"thread\"`.","example":265142},"chat_id":{"type":"integer","format":"int64","description":"Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](GET /messages).","example":2637266155}}},"forwarding":{"type":"object","description":"Информация о пересланном сообщении. `null`, если сообщение не является пересланным.","nullable":true,"allOf":[{"type":"object","description":"Информация о пересланном сообщении","required":["original_message_id","original_chat_id","author_id","original_created_at","original_thread_id","original_thread_message_id","original_thread_parent_chat_id"],"properties":{"original_message_id":{"type":"integer","format":"int32","description":"Идентификатор оригинального сообщения","example":194275},"original_chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором находится оригинальное сообщение","example":334},"author_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, создавшего оригинальное сообщение","example":12},"original_created_at":{"type":"string","format":"date-time","description":"Дата и время создания оригинального сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2025-01-15T10:30:00.000Z"},"original_thread_id":{"type":"integer","format":"int32","description":"Идентификатор треда, в котором находится оригинальное сообщение","example":null,"nullable":true},"original_thread_message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, к которому был создан тред, в котором находится оригинальное сообщение. `null`, если оригинальное сообщение было не в треде или тред создан без привязки к сообщению.","example":null,"nullable":true},"original_thread_parent_chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата сообщения, к которому был создан тред, в котором находится оригинальное сообщение. `null`, если оригинальное сообщение было не в треде или тред создан без привязки к сообщению.","example":null,"nullable":true}},"$ref":"#/components/schemas/Forwarding"}]},"parent_message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, к которому написан ответ. `null`, если сообщение не является ответом на другое сообщение.","example":null,"nullable":true},"display_avatar_url":{"type":"string","description":"Ссылка на аватарку отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. `null`, если бот не переопределял значение при отправке.","example":null,"nullable":true},"display_name":{"type":"string","description":"Полное имя отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. `null`, если бот не переопределял значение при отправке.","example":null,"nullable":true},"changed_at":{"type":"string","format":"date-time","description":"Дата и время последнего изменения сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. У неотредактированного сообщения совпадает с датой создания. `null` у сообщений, отправленных до появления этого поля.","example":"2021-08-28T16:10:00.000Z","nullable":true},"deleted_at":{"type":"string","format":"date-time","description":"Дата и время удаления сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null` у неудалённых сообщений. В списке сообщений удалённые не возвращаются.","example":null,"nullable":true}},"$ref":"#/components/schemas/Message"}},"meta":{"type":"object","description":"Мета-информация для пагинации поисковых результатов","required":["total","paginate"],"properties":{"total":{"type":"integer","format":"int32","description":"Общее количество найденных результатов","example":42},"paginate":{"type":"object","description":"Вспомогательная информация","required":["next_page"],"properties":{"next_page":{"type":"string","description":"Курсор пагинации следующей страницы","example":"eyJxZCO2MiwiZGlyIjomSNYjIn3"}}}},"$ref":"#/components/schemas/SearchPaginationMeta"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"504":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"search:messages","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":true},"docs":"# Поиск сообщений\n\n**Метод**: `GET`\n\n**Путь**: `/search/messages`\n\n> **Скоуп:** `search:messages`\n\nИщет по тексту сообщений и по именам вложенных файлов, но только в чатах, где владелец токена состоит. Открытый канал, в который он не вступал, в поиск не попадает, хотя ленту его читать можно. Сообщения тредов в выдачу входят.\n\nСлова запроса ищутся по словоформам и по части слова, опечатки при этом не исправляются. Запрос в кавычках ищется строгой фразой, поиск по части слова в нём не работает.\n\nПо умолчанию сообщения приходят от новых к старым. `sort=relevance` переключает выдачу на соответствие запросу, где свежие сообщения всё равно ценятся выше.\n\nСлишком тяжёлый запрос может не уложиться по времени: тогда метод отвечает `504` с кодом `timeout`, и запрос стоит сузить.\n\n## Параметры\n\n### Query параметры\n\n- `query: string` — Текст поискового запроса\n- `limit: integer, int32` (default: 200) — Количество возвращаемых результатов за один запрос\n- `cursor: string` — Курсор для пагинации (из `meta.paginate.next_page`)\n- `order: string` — Направление сортировки\n Значения: `asc`, `desc`\n- `sort: string` (default: created_at) — Сортировка результатов\n- `created_from: date-time` — Фильтр по дате создания (от)\n- `created_to: date-time` — Фильтр по дате создания (до)\n- `chat_ids: array` — Фильтр по ID чатов\n- `user_ids: array` — Фильтр по ID авторов сообщений\n- `active: boolean` — Фильтр по активности чата\n\n\n## Пример запроса\n\n```bash\n# Для получения следующей страницы используйте cursor из meta.paginate.next_page\ncurl \"https://api.pachca.com/api/shared/v1/search/messages?query=футболки&limit=10&order=desc&sort=created_at&created_from=2025-01-01T00:00:00.000Z&created_to=2025-02-01T00:00:00.000Z&chat_ids[]=198&chat_ids[]=334&user_ids[]=12&user_ids[]=185&active=true\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: array of object` (required)\n - `id: integer, int32` (required) — Идентификатор сообщения. Пример: `194275`\n - `entity_type: string` (required) — Тип сущности, к которой относится сообщение\n Значения: `discussion` — Беседа или канал, `thread` — Тред, `user` — Пользователь\n - `entity_id: integer, int32` (required) — Идентификатор сущности, к которой относится сообщение (беседы/канала, треда или пользователя). Пример: `334`\n - `chat_id: integer, int32` (required) — Идентификатор чата, в котором находится сообщение. Пример: `334`\n - `root_chat_id: integer, int32` (required) — Идентификатор корневого чата. Для сообщений в тредах — идентификатор чата, в котором был создан тред. Для обычных сообщений совпадает с `chat_id`. Пример: `334`\n - `content: string` (required) — Текст сообщения. Пример: `\"Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)\"`\n - `user_id: integer, int32` (required) — Идентификатор пользователя, создавшего сообщение. Пример: `12`\n - `created_at: date-time` (required) — Дата и время создания сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2021-08-28T15:57:23.000Z\"`\n - `url: string` (required) — Прямая ссылка на сообщение. Пример: `\"https://app.pachca.com/chats/334?message=194275\"`\n - `files: array of object` (required) — Прикрепленные файлы\n - `id: integer, int32` (required) — Идентификатор файла. Пример: `3560`\n - `key: string` (required) — Путь к файлу. Пример: `\"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png\"`\n - `name: string` (required) — Название файла с расширением. Пример: `\"congrat.png\"`\n - `file_type: string` (required) — Тип файла\n Значения: `file` — Обычный файл, `image` — Изображение, `audio` — Аудиофайл, `voice` — Голосовое сообщение, `video` — Видеофайл\n - `url: string` (required) — Ссылка на скачивание файла. Обычно ведёт прямо в хранилище и действует до 7 дней, а оставшийся срок может быть меньше — если такая ссылка вернула `403`, запросите сообщение заново и получите свежую. Если в пространстве включено шифрование или задан безопасный контур, ссылка ведёт на [Скачивание файла](GET /files/{id}): забирать такой файл нужно с заголовком `Authorization`, а токену нужен скоуп `files:read`. Пример: `\"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8\"`\n - `width: integer, int32` (nullable) — Ширина изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке. Пример: `1920`\n - `height: integer, int32` (nullable) — Высота изображения в пикселях. `null` для файлов, не являющихся изображением, а также если размер не был передан при загрузке. Пример: `1080`\n - `duration_ms: integer, int32` (nullable) — Длительность в миллисекундах у голосового, аудио- и видеофайла. `null` у остальных файлов и если длительность не была передана при загрузке. Пример: `5400`\n - `voice_content: object` (required) — Данные голосового сообщения. Заполняется только для голосовых сообщений (`file_type` файла — `voice`), иначе `null`.\n - `duration_ms: integer, int32` (required) — Длительность голосового сообщения в миллисекундах. Пример: `5400`\n - `waveform: string` (required) — Форма волны (амплитуды) для визуализации голосового сообщения. Пример: `\"4,8,12,20,16,10,6,3\"`\n - `transcript: string` (required, nullable) — Расшифровка голосового сообщения в текст. `null`, пока расшифровка не готова или недоступна. Пример: `\"Привет, посмотри пожалуйста последний отчёт\"`\n - `buttons: array of array` (required, nullable) — Массив строк, каждая из которых представлена массивом кнопок. `null`, если сообщение отправлено без кнопок.\n - `thread: object` (required, nullable) — Тред, созданный к этому сообщению. `null`, если тред не создан, а также у сообщений, которые сами находятся внутри треда.\n - `id: integer, int64` (required) — Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](POST /messages) с `entity_type: \"thread\"`. Пример: `265142`\n - `chat_id: integer, int64` (required) — Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](GET /messages). Пример: `2637266155`\n - `forwarding: object` (required) — Информация о пересланном сообщении. `null`, если сообщение не является пересланным.\n - `original_message_id: integer, int32` (required) — Идентификатор оригинального сообщения. Пример: `194275`\n - `original_chat_id: integer, int32` (required) — Идентификатор чата, в котором находится оригинальное сообщение. Пример: `334`\n - `author_id: integer, int32` (required) — Идентификатор пользователя, создавшего оригинальное сообщение. Пример: `12`\n - `original_created_at: date-time` (required) — Дата и время создания оригинального сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2025-01-15T10:30:00.000Z\"`\n - `original_thread_id: integer, int32` (required, nullable) — Идентификатор треда, в котором находится оригинальное сообщение. Пример: `null`\n - `original_thread_message_id: integer, int32` (required, nullable) — Идентификатор сообщения, к которому был создан тред, в котором находится оригинальное сообщение. `null`, если оригинальное сообщение было не в треде или тред создан без привязки к сообщению. Пример: `null`\n - `original_thread_parent_chat_id: integer, int32` (required, nullable) — Идентификатор чата сообщения, к которому был создан тред, в котором находится оригинальное сообщение. `null`, если оригинальное сообщение было не в треде или тред создан без привязки к сообщению. Пример: `null`\n - `parent_message_id: integer, int32` (required, nullable) — Идентификатор сообщения, к которому написан ответ. `null`, если сообщение не является ответом на другое сообщение. Пример: `null`\n - `display_avatar_url: string` (nullable) — Ссылка на аватарку отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. `null`, если бот не переопределял значение при отправке. Пример: `null`\n - `display_name: string` (nullable) — Полное имя отправителя сообщения. Поле присутствует только у сообщений от ботов; у сообщений от сотрудников его в ответе нет. `null`, если бот не переопределял значение при отправке. Пример: `null`\n - `changed_at: date-time` (required, nullable) — Дата и время последнего изменения сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. У неотредактированного сообщения совпадает с датой создания. `null` у сообщений, отправленных до появления этого поля. Пример: `\"2021-08-28T16:10:00.000Z\"`\n - `deleted_at: date-time` (required, nullable) — Дата и время удаления сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null` у неудалённых сообщений. В списке сообщений удалённые не возвращаются. Пример: `null`\n- `meta: object` (required) — Мета-информация для пагинации поисковых результатов\n - `total: integer, int32` (required) — Общее количество найденных результатов. Пример: `42`\n - `paginate: object` (required) — Вспомогательная информация\n - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `\"eyJxZCO2MiwiZGlyIjomSNYjIn3\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": [\n {\n \"id\": 194275,\n \"entity_type\": \"discussion\",\n \"entity_id\": 334,\n \"chat_id\": 334,\n \"root_chat_id\": 334,\n \"content\": \"Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)\",\n \"user_id\": 12,\n \"created_at\": \"2021-08-28T15:57:23.000Z\",\n \"url\": \"https://app.pachca.com/chats/334?message=194275\",\n \"files\": [\n {\n \"id\": 3560,\n \"key\": \"attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png\",\n \"name\": \"congrat.png\",\n \"file_type\": \"image\",\n \"url\": \"https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8\",\n \"width\": 1920,\n \"height\": 1080,\n \"duration_ms\": 5400\n }\n ],\n \"voice_content\": {\n \"duration_ms\": 5400,\n \"waveform\": \"4,8,12,20,16,10,6,3\",\n \"transcript\": \"Привет, посмотри пожалуйста последний отчёт\"\n },\n \"buttons\": [\n [\n {\n \"text\": null\n }\n ]\n ],\n \"thread\": {\n \"id\": 265142,\n \"chat_id\": 2637266155\n },\n \"forwarding\": {\n \"original_message_id\": 194275,\n \"original_chat_id\": 334,\n \"author_id\": 12,\n \"original_created_at\": \"2025-01-15T10:30:00.000Z\",\n \"original_thread_id\": null,\n \"original_thread_message_id\": null,\n \"original_thread_parent_chat_id\": null\n },\n \"parent_message_id\": null,\n \"display_avatar_url\": null,\n \"display_name\": null,\n \"changed_at\": \"2021-08-28T16:10:00.000Z\",\n \"deleted_at\": null\n }\n ],\n \"meta\": {\n \"total\": 42,\n \"paginate\": {\n \"next_page\": \"eyJxZCO2MiwiZGlyIjomSNYjIn3\"\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 504: Server error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/search/users","summary":"Поиск сотрудников","scope":"search:users","plan":null,"auth":true,"paginated":true,"command":"pachca search list-users","docLink":"https://dev.pachca.com/api/search/list-users","describe":"# GET /search/users — Поиск сотрудников\n\n> **Скоуп:** `search:users`\n\n> Пагинация: добавьте `--all` для автоматического обхода страниц\n\n## Параметры\n\n- `query` — query: Текст поискового запроса\n- `limit` — query: Количество возвращаемых результатов за один запрос\n- `cursor` — query: Курсор для пагинации (из `meta.paginate.next_page`)\n- `sort` — query: Сортировка результатов\n- `order` — query: Направление сортировки\n- `created_from` — query: Фильтр по дате создания (от)\n- `created_to` — query: Фильтр по дате создания (до)\n- `company_roles` — query: Фильтр по ролям сотрудников\n\n## Эквивалентная команда\n\n```bash\n# Добавьте --all для автоматической пагинации\npachca search list-users \\\n --query=Олег \\\n --limit=10 \\\n --sort=by_score \\\n --order=desc \\\n --created-from=2025-01-01T00:00:00.000Z \\\n --created-to=2025-02-01T00:00:00.000Z \\\n --company-roles=admin,user \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/search/list-users\nПолная справка: `pachca api GET /search/users --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/search/users","description":"Поиск сотрудников\n\nИщет сотрудников по имени и фамилии, нику, должности и отделу. Опечатки прощаются только в имени и фамилии, остальным полям нужно точное слово.\n\nПо почте метод ищет лишь тем, кому в пространстве видны персональные данные. По телефону он не ищет вовсе — для этого есть [Список сотрудников](GET /users) с параметром `query`.\n\nУдалённые сотрудники не находятся никогда, приостановленные — только когда задан текстовый запрос, и стоят в выдаче ниже остальных. Из ботов находятся лишь публичные.\n\nСлишком тяжёлый запрос может не уложиться по времени: тогда метод отвечает `504` с кодом `timeout`, и запрос стоит сузить.","parameters":[{"name":"query","in":"query","description":"Текст поискового запроса","required":false,"schema":{"type":"string","example":"Олег"},"example":"Олег","explode":false},{"name":"limit","in":"query","description":"Количество возвращаемых результатов за один запрос","required":false,"schema":{"type":"integer","format":"int32","default":200,"example":10,"maximum":200},"example":10,"explode":false},{"name":"cursor","in":"query","description":"Курсор для пагинации (из `meta.paginate.next_page`)","required":false,"schema":{"type":"string","example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9"},"example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9","explode":false},{"name":"sort","in":"query","description":"Сортировка результатов","required":false,"schema":{"type":"string","description":"Сортировка результатов поиска","enum":["by_score","alphabetical","creation"],"x-enum-descriptions":{"by_score":"По релевантности","alphabetical":"По алфавиту","creation":"По дате создания"},"example":"by_score","$ref":"#/components/schemas/SearchSortOrder"},"example":"by_score","explode":false},{"name":"order","in":"query","description":"Направление сортировки","required":false,"schema":{"type":"string","description":"Порядок сортировки","enum":["asc","desc"],"x-enum-descriptions":{"asc":"По возрастанию","desc":"По убыванию"},"example":"desc","$ref":"#/components/schemas/SortOrder"},"example":"desc","explode":false},{"name":"created_from","in":"query","description":"Фильтр по дате создания (от)","required":false,"schema":{"type":"string","format":"date-time","example":"2025-01-01T00:00:00.000Z"},"example":"2025-01-01T00:00:00.000Z","explode":false},{"name":"created_to","in":"query","description":"Фильтр по дате создания (до)","required":false,"schema":{"type":"string","format":"date-time","example":"2025-02-01T00:00:00.000Z"},"example":"2025-02-01T00:00:00.000Z","explode":false},{"name":"company_roles","in":"query","description":"Фильтр по ролям сотрудников","required":false,"schema":{"type":"array","example":["admin","user"],"items":{"type":"string","description":"Роль пользователя в системе","enum":["admin","user","multi_guest","guest"],"x-enum-descriptions":{"admin":"Администратор","user":"Сотрудник","multi_guest":"Мульти-гость","guest":"Гость"},"$ref":"#/components/schemas/UserRole"}},"example":["admin","user"],"explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа поисковых результатов с данными и пагинацией","required":["data","meta"],"properties":{"data":{"type":"array","items":{"type":"object","description":"Сотрудник","required":["id","first_name","last_name","nickname","email","phone_number","department","title","role","suspended","invite_status","inviter_id","list_tags","custom_properties","user_status","bot","sso","created_at","last_activity_at","time_zone","image_url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор пользователя","example":12},"first_name":{"type":"string","description":"Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`).","example":"Олег","nullable":true,"maxLength":255},"last_name":{"type":"string","description":"Фамилия. Если не заполнена, возвращается `null` или пустая строка.","example":"Петров","nullable":true,"maxLength":255},"nickname":{"type":"string","description":"Имя пользователя","example":"olegpetrov","maxLength":255},"email":{"type":"string","description":"Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда.","example":"olegp@example.com","nullable":true,"maxLength":255},"phone_number":{"type":"string","description":"Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда.","example":"+79001234567","nullable":true,"maxLength":255},"department":{"type":"string","description":"Департамент. Если не указан, возвращается `null` или пустая строка.","example":"Продукт","nullable":true,"maxLength":255},"title":{"type":"string","description":"Должность. Если не указана, возвращается `null` или пустая строка.","example":"CIO","nullable":true},"role":{"description":"Уровень доступа","example":"admin","allOf":[{"type":"string","description":"Роль пользователя в системе","enum":["admin","user","multi_guest","guest"],"x-enum-descriptions":{"admin":"Администратор","user":"Сотрудник","multi_guest":"Мульти-гость","guest":"Гость"},"$ref":"#/components/schemas/UserRole"}]},"suspended":{"type":"boolean","description":"Деактивация пользователя","example":false},"invite_status":{"description":"Статус приглашения","example":"confirmed","allOf":[{"type":"string","description":"Статус приглашения пользователя","enum":["confirmed","sent"],"x-enum-descriptions":{"confirmed":"Принято","sent":"Отправлено"},"$ref":"#/components/schemas/InviteStatus"}]},"inviter_id":{"type":"integer","format":"int32","description":"Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён.","example":185,"nullable":true},"list_tags":{"type":"array","description":"Массив тегов, привязанных к сотруднику. Мульти-гостю в чужой карточке приходит пустым.","example":["Product","Design"],"items":{"type":"string"}},"custom_properties":{"type":"array","description":"Дополнительные поля сотрудника","items":{"type":"object","description":"Дополнительное поле","required":["id","name","data_type","value"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор поля","example":1678},"name":{"type":"string","description":"Название поля","example":"Город","maxLength":32},"data_type":{"description":"Тип поля","example":"string","allOf":[{"type":"string","description":"Тип данных дополнительного поля","enum":["string","number","date","link"],"x-enum-descriptions":{"string":"Строковое значение","number":"Числовое значение","date":"Дата","link":"Ссылка"},"$ref":"#/components/schemas/CustomPropertyDataType"}]},"value":{"type":"string","description":"Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601.","example":"Санкт-Петербург","nullable":true,"maxLength":768}},"$ref":"#/components/schemas/CustomProperty"}},"user_status":{"type":"object","description":"Статус. `null`, если у сотрудника не установлен статус.","nullable":true,"allOf":[{"type":"object","description":"Статус пользователя","required":["emoji","title","expires_at","is_away","away_message"],"properties":{"emoji":{"type":"string","description":"Emoji символ статуса","example":"🎮"},"title":{"type":"string","description":"Текст статуса","example":"Очень занят","maxLength":50},"expires_at":{"type":"string","format":"date-time","description":"Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически.","example":"2024-04-08T10:00:00.000Z","nullable":true},"is_away":{"type":"boolean","description":"Режим «Нет на месте»","example":false},"away_message":{"type":"object","description":"Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.","required":["text"],"nullable":true,"properties":{"text":{"type":"string","description":"Текст сообщения","example":"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.","maxLength":1024}}}},"$ref":"#/components/schemas/UserStatus"}]},"bot":{"type":"boolean","description":"Является ботом","example":false},"sso":{"type":"boolean","description":"Использует ли пользователь SSO","example":false},"created_at":{"type":"string","format":"date-time","description":"Дата создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2020-06-08T09:32:57.000Z"},"last_activity_at":{"type":"string","format":"date-time","description":"Дата последней активности пользователя (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если сотрудник ещё ни разу не заходил в Пачку — в этом случае `invite_status` возвращает `sent`.","example":"2025-01-20T13:40:07.000Z","nullable":true},"time_zone":{"type":"string","description":"Часовой пояс пользователя. `null`, если сотрудник не задал личный часовой пояс — тогда применяется часовой пояс компании.","example":"Europe/Moscow","nullable":true,"maxLength":32},"image_url":{"type":"string","description":"Ссылка на скачивание аватарки пользователя. `null`, если аватарка не загружена.","example":"https://app.pachca.com/users/12/photo.jpg","nullable":true}},"$ref":"#/components/schemas/User"}},"meta":{"type":"object","description":"Мета-информация для пагинации поисковых результатов","required":["total","paginate"],"properties":{"total":{"type":"integer","format":"int32","description":"Общее количество найденных результатов","example":42},"paginate":{"type":"object","description":"Вспомогательная информация","required":["next_page"],"properties":{"next_page":{"type":"string","description":"Курсор пагинации следующей страницы","example":"eyJxZCO2MiwiZGlyIjomSNYjIn3"}}}},"$ref":"#/components/schemas/SearchPaginationMeta"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"504":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"search:users","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":true},"docs":"# Поиск сотрудников\n\n**Метод**: `GET`\n\n**Путь**: `/search/users`\n\n> **Скоуп:** `search:users`\n\nИщет сотрудников по имени и фамилии, нику, должности и отделу. Опечатки прощаются только в имени и фамилии, остальным полям нужно точное слово.\n\nПо почте метод ищет лишь тем, кому в пространстве видны персональные данные. По телефону он не ищет вовсе — для этого есть [Список сотрудников](GET /users) с параметром `query`.\n\nУдалённые сотрудники не находятся никогда, приостановленные — только когда задан текстовый запрос, и стоят в выдаче ниже остальных. Из ботов находятся лишь публичные.\n\nСлишком тяжёлый запрос может не уложиться по времени: тогда метод отвечает `504` с кодом `timeout`, и запрос стоит сузить.\n\n## Параметры\n\n### Query параметры\n\n- `query: string` — Текст поискового запроса\n- `limit: integer, int32` (default: 200) — Количество возвращаемых результатов за один запрос\n- `cursor: string` — Курсор для пагинации (из `meta.paginate.next_page`)\n- `sort: string` — Сортировка результатов\n Значения: `by_score`, `alphabetical`, `creation`\n- `order: string` — Направление сортировки\n Значения: `asc`, `desc`\n- `created_from: date-time` — Фильтр по дате создания (от)\n- `created_to: date-time` — Фильтр по дате создания (до)\n- `company_roles: array` — Фильтр по ролям сотрудников\n\n\n## Пример запроса\n\n```bash\n# Для получения следующей страницы используйте cursor из meta.paginate.next_page\ncurl \"https://api.pachca.com/api/shared/v1/search/users?query=Олег&limit=10&sort=by_score&order=desc&created_from=2025-01-01T00:00:00.000Z&created_to=2025-02-01T00:00:00.000Z&company_roles[]=admin&company_roles[]=user\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: array of object` (required)\n - `id: integer, int32` (required) — Идентификатор пользователя. Пример: `12`\n - `first_name: string` (required, nullable, max length: 255) — Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`). Пример: `\"Олег\"`\n - `last_name: string` (required, nullable, max length: 255) — Фамилия. Если не заполнена, возвращается `null` или пустая строка. Пример: `\"Петров\"`\n - `nickname: string` (required, max length: 255) — Имя пользователя. Пример: `\"olegpetrov\"`\n - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `\"olegp@example.com\"`\n - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `\"+79001234567\"`\n - `department: string` (required, nullable, max length: 255) — Департамент. Если не указан, возвращается `null` или пустая строка. Пример: `\"Продукт\"`\n - `title: string` (required, nullable) — Должность. Если не указана, возвращается `null` или пустая строка. Пример: `\"CIO\"`\n - `role: string` (required) — Уровень доступа\n Значения: `admin` — Администратор, `user` — Сотрудник, `multi_guest` — Мульти-гость, `guest` — Гость\n - `suspended: boolean` (required) — Деактивация пользователя. Пример: `false`\n - `invite_status: string` (required) — Статус приглашения\n Значения: `confirmed` — Принято, `sent` — Отправлено\n - `inviter_id: integer, int32` (required, nullable) — Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён. Пример: `185`\n - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Мульти-гостю в чужой карточке приходит пустым. Пример: `[\"Product\",\"Design\"]`\n - `custom_properties: array of object` (required) — Дополнительные поля сотрудника\n - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678`\n - `name: string` (required, max length: 32) — Название поля. Пример: `\"Город\"`\n - `data_type: string` (required) — Тип поля\n Значения: `string` — Строковое значение, `number` — Числовое значение, `date` — Дата, `link` — Ссылка\n - `value: string` (required, nullable, max length: 768) — Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601. Пример: `\"Санкт-Петербург\"`\n - `user_status: object` (required) — Статус. `null`, если у сотрудника не установлен статус.\n - `emoji: string` (required) — Emoji символ статуса. Пример: `\"🎮\"`\n - `title: string` (required, max length: 50) — Текст статуса. Пример: `\"Очень занят\"`\n - `expires_at: date-time` (required, nullable) — Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически. Пример: `\"2024-04-08T10:00:00.000Z\"`\n - `is_away: boolean` (required) — Режим «Нет на месте». Пример: `false`\n - `away_message: object` (required, nullable) — Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.\n - `text: string` (required, max length: 1024) — Текст сообщения. Пример: `\"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"`\n - `bot: boolean` (required) — Является ботом. Пример: `false`\n - `sso: boolean` (required) — Использует ли пользователь SSO. Пример: `false`\n - `created_at: date-time` (required) — Дата создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2020-06-08T09:32:57.000Z\"`\n - `last_activity_at: date-time` (required, nullable) — Дата последней активности пользователя (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если сотрудник ещё ни разу не заходил в Пачку — в этом случае `invite_status` возвращает `sent`. Пример: `\"2025-01-20T13:40:07.000Z\"`\n - `time_zone: string` (required, nullable, max length: 32) — Часовой пояс пользователя. `null`, если сотрудник не задал личный часовой пояс — тогда применяется часовой пояс компании. Пример: `\"Europe/Moscow\"`\n - `image_url: string` (required, nullable) — Ссылка на скачивание аватарки пользователя. `null`, если аватарка не загружена. Пример: `\"https://app.pachca.com/users/12/photo.jpg\"`\n- `meta: object` (required) — Мета-информация для пагинации поисковых результатов\n - `total: integer, int32` (required) — Общее количество найденных результатов. Пример: `42`\n - `paginate: object` (required) — Вспомогательная информация\n - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `\"eyJxZCO2MiwiZGlyIjomSNYjIn3\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": [\n {\n \"id\": 12,\n \"first_name\": \"Олег\",\n \"last_name\": \"Петров\",\n \"nickname\": \"olegpetrov\",\n \"email\": \"olegp@example.com\",\n \"phone_number\": \"+79001234567\",\n \"department\": \"Продукт\",\n \"title\": \"CIO\",\n \"role\": \"admin\",\n \"suspended\": false,\n \"invite_status\": \"confirmed\",\n \"inviter_id\": 185,\n \"list_tags\": [\n \"Product\",\n \"Design\"\n ],\n \"custom_properties\": [\n {\n \"id\": 1678,\n \"name\": \"Город\",\n \"data_type\": \"string\",\n \"value\": \"Санкт-Петербург\"\n }\n ],\n \"user_status\": {\n \"emoji\": \"🎮\",\n \"title\": \"Очень занят\",\n \"expires_at\": \"2024-04-08T10:00:00.000Z\",\n \"is_away\": false,\n \"away_message\": {\n \"text\": \"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"\n }\n },\n \"bot\": false,\n \"sso\": false,\n \"created_at\": \"2020-06-08T09:32:57.000Z\",\n \"last_activity_at\": \"2025-01-20T13:40:07.000Z\",\n \"time_zone\": \"Europe/Moscow\",\n \"image_url\": \"https://app.pachca.com/users/12/photo.jpg\"\n }\n ],\n \"meta\": {\n \"total\": 42,\n \"paginate\": {\n \"next_page\": \"eyJxZCO2MiwiZGlyIjomSNYjIn3\"\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 504: Server error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"POST","path":"/tasks","summary":"Новое напоминание","scope":"tasks:create","plan":null,"auth":true,"paginated":false,"command":"pachca tasks create","docLink":"https://dev.pachca.com/api/tasks/create","describe":"# POST /tasks — Новое напоминание\n\n> **Скоуп:** `tasks:create`\n\n## Тело запроса\n\n- `task: object` (required) — Собранный объект параметров создаваемого напоминания\n - `kind: string` (required) — Тип\n Значения: `call` — Позвонить контакту, `meeting` — Встреча, `reminder` — Простое напоминание, `event` — Событие, `email` — Написать письмо\n - `content: string` — Описание (по умолчанию — название типа)\n - `due_at: date-time` — Срок выполнения напоминания (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Секунды отбрасываются: срок встаёт на начало минуты. Исключение — ровно 23:59:59: такое напоминание создаётся на весь день, без указания времени.\n - `priority: integer, int32` (default: 1, min: 1, max: 3) — Приоритет: 1, 2 (важно) или 3 (очень важно)\n - `performer_ids: array of integer` — Массив идентификаторов пользователей, привязываемых к напоминанию как «ответственные» (по умолчанию ответственным назначается вы)\n - `chat_id: integer, int32` — Идентификатор чата, к которому привязывается напоминание\n - `all_day: boolean` — Напоминание на весь день (без указания времени)\n - `custom_properties: array of object` — Задаваемые дополнительные поля\n - `id: integer, int32` (required) — Идентификатор поля\n - `value: string` (required) — Устанавливаемое значение\n\n## Эквивалентная команда\n\n```bash\npachca tasks create \\\n --kind=reminder \\\n --content='Забрать со склада 21 заказ' \\\n --due-at=2020-06-05T12:00:00.000+03:00 \\\n --priority=2 \\\n --performer-ids='[12,13]' \\\n --chat-id=456 \\\n --no-all-day \\\n --custom-properties='[{\"id\":78,\"value\":\"Синий склад\"}]' \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/tasks/create\nПолная справка: `pachca api POST /tasks --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/tasks","description":"Новое напоминание\n\nСоздаёт напоминание и назначает на него ответственных.\n\nПри создании напоминания обязательно указать его тип: звонок, встреча, простое напоминание, событие или письмо. Описание при этом не требуется — напоминание создастся с текстом по типу. Если описание передано, именно оно и станет текстом напоминания.\n\nУ напоминания должны быть ответственные. Если их не указать, ответственным становится владелец токена.\n\nОтветственным для напоминания без привязки к каким-либо сущностям может стать любой сотрудник компании. Актуальный состав сотрудников компании вы можете получить в методе [Список сотрудников](GET /users). Ответственные, которых вызывающий не видит, молча отбрасываются: ответ приходит успешным, а в `performer_ids` их нет, поэтому сверяйте состав в ответе.\n\nНапоминание можно привязать к беседе полем `chat_id` — тогда кроме автора и ответственных его видят участники этой беседы. Привязывающий должен сам в ней состоять. В канале, в треде и в архивном чате напоминания не создаются.\n\nПередать напоминание другому сотруднику — значит сменить ответственного методом [Редактирование напоминания](PUT /tasks/{id}).\n\nЕсли к пространству или к профилю подключён календарь, напоминание заодно появляется в нём событием.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на создание напоминания","required":["task"],"properties":{"task":{"type":"object","description":"Собранный объект параметров создаваемого напоминания","required":["kind"],"properties":{"kind":{"description":"Тип","example":"reminder","allOf":[{"type":"string","description":"Тип задачи","enum":["call","meeting","reminder","event","email"],"x-enum-descriptions":{"call":"Позвонить контакту","meeting":"Встреча","reminder":"Простое напоминание","event":"Событие","email":"Написать письмо"},"$ref":"#/components/schemas/TaskKind"}]},"content":{"type":"string","description":"Описание (по умолчанию — название типа)","example":"Забрать со склада 21 заказ"},"due_at":{"type":"string","format":"date-time","description":"Срок выполнения напоминания (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Секунды отбрасываются: срок встаёт на начало минуты. Исключение — ровно 23:59:59: такое напоминание создаётся на весь день, без указания времени.","example":"2020-06-05T12:00:00.000+03:00"},"priority":{"type":"integer","format":"int32","description":"Приоритет: 1, 2 (важно) или 3 (очень важно)","default":1,"example":2,"minimum":1,"maximum":3},"performer_ids":{"type":"array","description":"Массив идентификаторов пользователей, привязываемых к напоминанию как «ответственные» (по умолчанию ответственным назначается вы)","example":[12,13],"items":{"type":"integer","format":"int32"}},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, к которому привязывается напоминание","example":456},"all_day":{"type":"boolean","description":"Напоминание на весь день (без указания времени)","example":false},"custom_properties":{"type":"array","description":"Задаваемые дополнительные поля","items":{"type":"object","required":["id","value"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор поля","example":78},"value":{"type":"string","description":"Устанавливаемое значение","example":"Синий склад"}}}}}}},"$ref":"#/components/schemas/TaskCreateRequest"}}}},"responses":{"201":{"description":"The request has succeeded and a new resource has been created as a result.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Напоминание","required":["id","kind","content","due_at","priority","user_id","chat_id","status","created_at","performer_ids","all_day","custom_properties"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор напоминания","example":22283},"kind":{"description":"Тип","example":"reminder","allOf":[{"type":"string","description":"Тип задачи","enum":["call","meeting","reminder","event","email"],"x-enum-descriptions":{"call":"Позвонить контакту","meeting":"Встреча","reminder":"Простое напоминание","event":"Событие","email":"Написать письмо"},"$ref":"#/components/schemas/TaskKind"}]},"content":{"type":"string","description":"Описание","example":"Забрать со склада 21 заказ"},"due_at":{"type":"string","format":"date-time","description":"Срок выполнения напоминания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан.","example":"2020-06-05T09:00:00.000Z","nullable":true},"priority":{"type":"integer","format":"int32","description":"Приоритет","example":2},"user_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя-создателя напоминания","example":12},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, к которому привязано напоминание. `null`, если напоминание не привязано к чату.","example":334,"nullable":true},"status":{"description":"Статус напоминания","example":"undone","allOf":[{"type":"string","description":"Статус напоминания","enum":["done","undone"],"x-enum-descriptions":{"done":"Выполнено","undone":"Активно"},"$ref":"#/components/schemas/TaskStatus"}]},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания напоминания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2020-06-04T10:37:57.000Z"},"performer_ids":{"type":"array","description":"Массив идентификаторов пользователей, привязанных к напоминанию как «ответственные»","example":[12],"items":{"type":"integer","format":"int32"}},"all_day":{"type":"boolean","description":"Напоминание на весь день (без указания времени)","example":false},"custom_properties":{"type":"array","description":"Дополнительные поля напоминания","items":{"type":"object","description":"Дополнительное поле","required":["id","name","data_type","value"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор поля","example":1678},"name":{"type":"string","description":"Название поля","example":"Город","maxLength":32},"data_type":{"description":"Тип поля","example":"string","allOf":[{"type":"string","description":"Тип данных дополнительного поля","enum":["string","number","date","link"],"x-enum-descriptions":{"string":"Строковое значение","number":"Числовое значение","date":"Дата","link":"Ссылка"},"$ref":"#/components/schemas/CustomPropertyDataType"}]},"value":{"type":"string","description":"Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601.","example":"Санкт-Петербург","nullable":true,"maxLength":768}},"$ref":"#/components/schemas/CustomProperty"}}},"$ref":"#/components/schemas/Task"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"tasks:create","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":false},"docs":"# Новое напоминание\n\n**Метод**: `POST`\n\n**Путь**: `/tasks`\n\n> **Скоуп:** `tasks:create`\n\nСоздаёт напоминание и назначает на него ответственных.\n\nПри создании напоминания обязательно указать его тип: звонок, встреча, простое напоминание, событие или письмо. Описание при этом не требуется — напоминание создастся с текстом по типу. Если описание передано, именно оно и станет текстом напоминания.\n\nУ напоминания должны быть ответственные. Если их не указать, ответственным становится владелец токена.\n\nОтветственным для напоминания без привязки к каким-либо сущностям может стать любой сотрудник компании. Актуальный состав сотрудников компании вы можете получить в методе [Список сотрудников](GET /users). Ответственные, которых вызывающий не видит, молча отбрасываются: ответ приходит успешным, а в `performer_ids` их нет, поэтому сверяйте состав в ответе.\n\nНапоминание можно привязать к беседе полем `chat_id` — тогда кроме автора и ответственных его видят участники этой беседы. Привязывающий должен сам в ней состоять. В канале, в треде и в архивном чате напоминания не создаются.\n\nПередать напоминание другому сотруднику — значит сменить ответственного методом [Редактирование напоминания](PUT /tasks/{id}).\n\nЕсли к пространству или к профилю подключён календарь, напоминание заодно появляется в нём событием.\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `task: object` (required) — Собранный объект параметров создаваемого напоминания\n - `kind: string` (required) — Тип\n Значения: `call` — Позвонить контакту, `meeting` — Встреча, `reminder` — Простое напоминание, `event` — Событие, `email` — Написать письмо\n - `content: string` — Описание (по умолчанию — название типа). Пример: `\"Забрать со склада 21 заказ\"`\n - `due_at: date-time` — Срок выполнения напоминания (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Секунды отбрасываются: срок встаёт на начало минуты. Исключение — ровно 23:59:59: такое напоминание создаётся на весь день, без указания времени. Пример: `\"2020-06-05T12:00:00.000+03:00\"`\n - `priority: integer, int32` (default: 1, min: 1, max: 3) — Приоритет: 1, 2 (важно) или 3 (очень важно). Пример: `2`\n - `performer_ids: array of integer` — Массив идентификаторов пользователей, привязываемых к напоминанию как «ответственные» (по умолчанию ответственным назначается вы). Пример: `[12,13]`\n - `chat_id: integer, int32` — Идентификатор чата, к которому привязывается напоминание. Пример: `456`\n - `all_day: boolean` — Напоминание на весь день (без указания времени). Пример: `false`\n - `custom_properties: array of object` — Задаваемые дополнительные поля\n - `id: integer, int32` (required) — Идентификатор поля. Пример: `78`\n - `value: string` (required) — Устанавливаемое значение. Пример: `\"Синий склад\"`\n\n### Пример\n\n```json\n{\n \"task\": {\n \"kind\": \"reminder\",\n \"content\": \"Забрать со склада 21 заказ\",\n \"due_at\": \"2020-06-05T12:00:00.000+03:00\",\n \"priority\": 2,\n \"performer_ids\": [\n 12,\n 13\n ],\n \"chat_id\": 456,\n \"all_day\": false,\n \"custom_properties\": [\n {\n \"id\": 78,\n \"value\": \"Синий склад\"\n }\n ]\n }\n}\n```\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/tasks\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"task\": {\n \"kind\": \"reminder\",\n \"content\": \"Забрать со склада 21 заказ\",\n \"due_at\": \"2020-06-05T12:00:00.000+03:00\",\n \"priority\": 2,\n \"performer_ids\": [\n 12,\n 13\n ],\n \"chat_id\": 456,\n \"all_day\": false,\n \"custom_properties\": [\n {\n \"id\": 78,\n \"value\": \"Синий склад\"\n }\n ]\n }\n}'\n```\n\n## Ответы\n\n### 201: The request has succeeded and a new resource has been created as a result.\n\n**Схема ответа:**\n\n- `data: object` (required) — Напоминание\n - `id: integer, int32` (required) — Идентификатор напоминания. Пример: `22283`\n - `kind: string` (required) — Тип\n Значения: `call` — Позвонить контакту, `meeting` — Встреча, `reminder` — Простое напоминание, `event` — Событие, `email` — Написать письмо\n - `content: string` (required) — Описание. Пример: `\"Забрать со склада 21 заказ\"`\n - `due_at: date-time` (required, nullable) — Срок выполнения напоминания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан. Пример: `\"2020-06-05T09:00:00.000Z\"`\n - `priority: integer, int32` (required) — Приоритет. Пример: `2`\n - `user_id: integer, int32` (required) — Идентификатор пользователя-создателя напоминания. Пример: `12`\n - `chat_id: integer, int32` (required, nullable) — Идентификатор чата, к которому привязано напоминание. `null`, если напоминание не привязано к чату. Пример: `334`\n - `status: string` (required) — Статус напоминания\n Значения: `done` — Выполнено, `undone` — Активно\n - `created_at: date-time` (required) — Дата и время создания напоминания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2020-06-04T10:37:57.000Z\"`\n - `performer_ids: array of integer` (required) — Массив идентификаторов пользователей, привязанных к напоминанию как «ответственные». Пример: `[12]`\n - `all_day: boolean` (required) — Напоминание на весь день (без указания времени). Пример: `false`\n - `custom_properties: array of object` (required) — Дополнительные поля напоминания\n - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678`\n - `name: string` (required, max length: 32) — Название поля. Пример: `\"Город\"`\n - `data_type: string` (required) — Тип поля\n Значения: `string` — Строковое значение, `number` — Числовое значение, `date` — Дата, `link` — Ссылка\n - `value: string` (required, nullable, max length: 768) — Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601. Пример: `\"Санкт-Петербург\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 22283,\n \"kind\": \"reminder\",\n \"content\": \"Забрать со склада 21 заказ\",\n \"due_at\": \"2020-06-05T09:00:00.000Z\",\n \"priority\": 2,\n \"user_id\": 12,\n \"chat_id\": 334,\n \"status\": \"undone\",\n \"created_at\": \"2020-06-04T10:37:57.000Z\",\n \"performer_ids\": [\n 12\n ],\n \"all_day\": false,\n \"custom_properties\": [\n {\n \"id\": 1678,\n \"name\": \"Город\",\n \"data_type\": \"string\",\n \"value\": \"Санкт-Петербург\"\n }\n ]\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/tasks","summary":"Список напоминаний","scope":"tasks:read","plan":null,"auth":true,"paginated":true,"command":"pachca tasks list","docLink":"https://dev.pachca.com/api/tasks/list","describe":"# GET /tasks — Список напоминаний\n\n> **Скоуп:** `tasks:read`\n\n> Пагинация: добавьте `--all` для автоматического обхода страниц\n\n## Параметры\n\n- `status` — query: Фильтр по состоянию. Если параметр не указан, возвращаются напоминания в любом состоянии.\n- `chat_ids` — query: Фильтр по чатам, к которым привязаны напоминания. Доступными считаются чаты, где вы состоите участником, открытые беседы и каналы пространства, а также треды, доступные вам по родительскому чату. Мульти-гостю открытые беседы и каналы доступны, только если он в них участник. Остальные переданные идентификаторы игнорируются без ошибки. Не более 100 идентификаторов.\n- `performer_ids` — query: Фильтр по ответственным за напоминание. Не более 100 идентификаторов.\n- `author_id` — query: Фильтр по автору напоминания\n- `limit` — query: Количество возвращаемых сущностей за один запрос\n- `cursor` — query: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n## Эквивалентная команда\n\n```bash\n# Добавьте --all для автоматической пагинации\npachca tasks list \\\n --status=undone \\\n --chat-ids=198,334 \\\n --performer-ids=12,185 \\\n --author-id=12 \\\n --limit=1 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/tasks/list\nПолная справка: `pachca api GET /tasks --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/tasks","description":"Список напоминаний\n\nНапоминания, доступные владельцу токена.\n\nБез параметра `chat_ids` возвращаются только ваши напоминания: из бесед и каналов, где вы состоите участником, а также созданные вами или назначенные вам напоминания без привязки к чату. Параметр `chat_ids` меняет выборку — возвращаются все напоминания указанных чатов, включая чужие.","parameters":[{"name":"status","in":"query","description":"Фильтр по состоянию. Если параметр не указан, возвращаются напоминания в любом состоянии.","required":false,"schema":{"type":"string","description":"Статус напоминания","enum":["done","undone"],"x-enum-descriptions":{"done":"Выполнено","undone":"Активно"},"example":"undone","$ref":"#/components/schemas/TaskStatus"},"example":"undone","explode":false},{"name":"chat_ids","in":"query","description":"Фильтр по чатам, к которым привязаны напоминания. Доступными считаются чаты, где вы состоите участником, открытые беседы и каналы пространства, а также треды, доступные вам по родительскому чату. Мульти-гостю открытые беседы и каналы доступны, только если он в них участник. Остальные переданные идентификаторы игнорируются без ошибки. Не более 100 идентификаторов.","required":false,"schema":{"type":"array","example":[198,334],"maxItems":100,"items":{"type":"integer","format":"int32"}},"example":[198,334],"explode":false},{"name":"performer_ids","in":"query","description":"Фильтр по ответственным за напоминание. Не более 100 идентификаторов.","required":false,"schema":{"type":"array","example":[12,185],"maxItems":100,"items":{"type":"integer","format":"int32"}},"example":[12,185],"explode":false},{"name":"author_id","in":"query","description":"Фильтр по автору напоминания","required":false,"schema":{"type":"integer","format":"int32","example":12},"example":12,"explode":false},{"name":"limit","in":"query","description":"Количество возвращаемых сущностей за один запрос","required":false,"schema":{"type":"integer","format":"int32","default":50,"example":1,"minimum":1,"maximum":50},"example":1,"explode":false},{"name":"cursor","in":"query","description":"Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)","required":false,"schema":{"type":"string","example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9"},"example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9","explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными и пагинацией","required":["data","meta"],"properties":{"data":{"type":"array","items":{"type":"object","description":"Напоминание","required":["id","kind","content","due_at","priority","user_id","chat_id","status","created_at","performer_ids","all_day","custom_properties"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор напоминания","example":22283},"kind":{"description":"Тип","example":"reminder","allOf":[{"type":"string","description":"Тип задачи","enum":["call","meeting","reminder","event","email"],"x-enum-descriptions":{"call":"Позвонить контакту","meeting":"Встреча","reminder":"Простое напоминание","event":"Событие","email":"Написать письмо"},"$ref":"#/components/schemas/TaskKind"}]},"content":{"type":"string","description":"Описание","example":"Забрать со склада 21 заказ"},"due_at":{"type":"string","format":"date-time","description":"Срок выполнения напоминания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан.","example":"2020-06-05T09:00:00.000Z","nullable":true},"priority":{"type":"integer","format":"int32","description":"Приоритет","example":2},"user_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя-создателя напоминания","example":12},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, к которому привязано напоминание. `null`, если напоминание не привязано к чату.","example":334,"nullable":true},"status":{"description":"Статус напоминания","example":"undone","allOf":[{"type":"string","description":"Статус напоминания","enum":["done","undone"],"x-enum-descriptions":{"done":"Выполнено","undone":"Активно"},"$ref":"#/components/schemas/TaskStatus"}]},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания напоминания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2020-06-04T10:37:57.000Z"},"performer_ids":{"type":"array","description":"Массив идентификаторов пользователей, привязанных к напоминанию как «ответственные»","example":[12],"items":{"type":"integer","format":"int32"}},"all_day":{"type":"boolean","description":"Напоминание на весь день (без указания времени)","example":false},"custom_properties":{"type":"array","description":"Дополнительные поля напоминания","items":{"type":"object","description":"Дополнительное поле","required":["id","name","data_type","value"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор поля","example":1678},"name":{"type":"string","description":"Название поля","example":"Город","maxLength":32},"data_type":{"description":"Тип поля","example":"string","allOf":[{"type":"string","description":"Тип данных дополнительного поля","enum":["string","number","date","link"],"x-enum-descriptions":{"string":"Строковое значение","number":"Числовое значение","date":"Дата","link":"Ссылка"},"$ref":"#/components/schemas/CustomPropertyDataType"}]},"value":{"type":"string","description":"Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601.","example":"Санкт-Петербург","nullable":true,"maxLength":768}},"$ref":"#/components/schemas/CustomProperty"}}},"$ref":"#/components/schemas/Task"}},"meta":{"type":"object","description":"Метаданные пагинации","required":["paginate"],"properties":{"paginate":{"type":"object","description":"Вспомогательная информация","required":["next_page"],"properties":{"next_page":{"type":"string","description":"Курсор пагинации следующей страницы","example":"eyJxZCO2MiwiZGlyIjomSNYjIn3"},"prev_page":{"type":"string","description":"Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка.","example":"eyJxZCO2MiwiZGlyIjoiYXNjIn0"},"has_next":{"type":"boolean","description":"Есть ли ещё данные на следующей странице. На последней странице — `false`.","example":true},"has_prev":{"type":"boolean","description":"Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`.","example":false}}}},"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}}},"requirements":{"scope":"tasks:read","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":true},"docs":"# Список напоминаний\n\n**Метод**: `GET`\n\n**Путь**: `/tasks`\n\n> **Скоуп:** `tasks:read`\n\nНапоминания, доступные владельцу токена.\n\nБез параметра `chat_ids` возвращаются только ваши напоминания: из бесед и каналов, где вы состоите участником, а также созданные вами или назначенные вам напоминания без привязки к чату. Параметр `chat_ids` меняет выборку — возвращаются все напоминания указанных чатов, включая чужие.\n\n## Параметры\n\n### Query параметры\n\n- `status: string` — Фильтр по состоянию. Если параметр не указан, возвращаются напоминания в любом состоянии.\n Значения: `done`, `undone`\n- `chat_ids: array` — Фильтр по чатам, к которым привязаны напоминания. Доступными считаются чаты, где вы состоите участником, открытые беседы и каналы пространства, а также треды, доступные вам по родительскому чату. Мульти-гостю открытые беседы и каналы доступны, только если он в них участник. Остальные переданные идентификаторы игнорируются без ошибки. Не более 100 идентификаторов.\n- `performer_ids: array` — Фильтр по ответственным за напоминание. Не более 100 идентификаторов.\n- `author_id: integer, int32` — Фильтр по автору напоминания\n- `limit: integer, int32` (default: 50) — Количество возвращаемых сущностей за один запрос\n- `cursor: string` — Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n\n## Пример запроса\n\n```bash\n# Для получения следующей страницы используйте cursor из meta.paginate.next_page\ncurl \"https://api.pachca.com/api/shared/v1/tasks?status=undone&chat_ids[]=198&chat_ids[]=334&performer_ids[]=12&performer_ids[]=185&author_id=12&limit=1\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: array of object` (required)\n - `id: integer, int32` (required) — Идентификатор напоминания. Пример: `22283`\n - `kind: string` (required) — Тип\n Значения: `call` — Позвонить контакту, `meeting` — Встреча, `reminder` — Простое напоминание, `event` — Событие, `email` — Написать письмо\n - `content: string` (required) — Описание. Пример: `\"Забрать со склада 21 заказ\"`\n - `due_at: date-time` (required, nullable) — Срок выполнения напоминания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан. Пример: `\"2020-06-05T09:00:00.000Z\"`\n - `priority: integer, int32` (required) — Приоритет. Пример: `2`\n - `user_id: integer, int32` (required) — Идентификатор пользователя-создателя напоминания. Пример: `12`\n - `chat_id: integer, int32` (required, nullable) — Идентификатор чата, к которому привязано напоминание. `null`, если напоминание не привязано к чату. Пример: `334`\n - `status: string` (required) — Статус напоминания\n Значения: `done` — Выполнено, `undone` — Активно\n - `created_at: date-time` (required) — Дата и время создания напоминания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2020-06-04T10:37:57.000Z\"`\n - `performer_ids: array of integer` (required) — Массив идентификаторов пользователей, привязанных к напоминанию как «ответственные». Пример: `[12]`\n - `all_day: boolean` (required) — Напоминание на весь день (без указания времени). Пример: `false`\n - `custom_properties: array of object` (required) — Дополнительные поля напоминания\n - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678`\n - `name: string` (required, max length: 32) — Название поля. Пример: `\"Город\"`\n - `data_type: string` (required) — Тип поля\n Значения: `string` — Строковое значение, `number` — Числовое значение, `date` — Дата, `link` — Ссылка\n - `value: string` (required, nullable, max length: 768) — Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601. Пример: `\"Санкт-Петербург\"`\n- `meta: object` (required) — Метаданные пагинации\n - `paginate: object` (required) — Вспомогательная информация\n - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `\"eyJxZCO2MiwiZGlyIjomSNYjIn3\"`\n - `prev_page: string` — Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка. Пример: `\"eyJxZCO2MiwiZGlyIjoiYXNjIn0\"`\n - `has_next: boolean` — Есть ли ещё данные на следующей странице. На последней странице — `false`. Пример: `true`\n - `has_prev: boolean` — Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`. Пример: `false`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": [\n {\n \"id\": 22283,\n \"kind\": \"reminder\",\n \"content\": \"Забрать со склада 21 заказ\",\n \"due_at\": \"2020-06-05T09:00:00.000Z\",\n \"priority\": 2,\n \"user_id\": 12,\n \"chat_id\": 334,\n \"status\": \"undone\",\n \"created_at\": \"2020-06-04T10:37:57.000Z\",\n \"performer_ids\": [\n 12\n ],\n \"all_day\": false,\n \"custom_properties\": [\n {\n \"id\": 1678,\n \"name\": \"Город\",\n \"data_type\": \"string\",\n \"value\": \"Санкт-Петербург\"\n }\n ]\n }\n ],\n \"meta\": {\n \"paginate\": {\n \"next_page\": \"eyJxZCO2MiwiZGlyIjomSNYjIn3\",\n \"prev_page\": \"eyJxZCO2MiwiZGlyIjoiYXNjIn0\",\n \"has_next\": true,\n \"has_prev\": false\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n"},{"method":"GET","path":"/tasks/{id}","summary":"Информация о напоминании","scope":"tasks:read","plan":null,"auth":true,"paginated":false,"command":"pachca tasks get","docLink":"https://dev.pachca.com/api/tasks/get","describe":"# GET /tasks/{id} — Информация о напоминании\n\n> **Скоуп:** `tasks:read`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор напоминания\n\n## Эквивалентная команда\n\n```bash\npachca tasks get 22283 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/tasks/get\nПолная справка: `pachca api GET /tasks/{id} --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/tasks/{id}","description":"Информация о напоминании\n\nНапоминание вместе с его автором, ответственными и чатом, к которому оно привязано.\n\nНапоминание видят его автор, ответственные и участники чата, к которому оно привязано. Участия в чате хватает, чтобы прочитать, но не чтобы изменить: править и удалять напоминание могут только автор и ответственные.","parameters":[{"name":"id","in":"path","description":"Идентификатор напоминания","required":true,"schema":{"type":"integer","format":"int32","example":22283},"example":22283}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Напоминание","required":["id","kind","content","due_at","priority","user_id","chat_id","status","created_at","performer_ids","all_day","custom_properties"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор напоминания","example":22283},"kind":{"description":"Тип","example":"reminder","allOf":[{"type":"string","description":"Тип задачи","enum":["call","meeting","reminder","event","email"],"x-enum-descriptions":{"call":"Позвонить контакту","meeting":"Встреча","reminder":"Простое напоминание","event":"Событие","email":"Написать письмо"},"$ref":"#/components/schemas/TaskKind"}]},"content":{"type":"string","description":"Описание","example":"Забрать со склада 21 заказ"},"due_at":{"type":"string","format":"date-time","description":"Срок выполнения напоминания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан.","example":"2020-06-05T09:00:00.000Z","nullable":true},"priority":{"type":"integer","format":"int32","description":"Приоритет","example":2},"user_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя-создателя напоминания","example":12},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, к которому привязано напоминание. `null`, если напоминание не привязано к чату.","example":334,"nullable":true},"status":{"description":"Статус напоминания","example":"undone","allOf":[{"type":"string","description":"Статус напоминания","enum":["done","undone"],"x-enum-descriptions":{"done":"Выполнено","undone":"Активно"},"$ref":"#/components/schemas/TaskStatus"}]},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания напоминания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2020-06-04T10:37:57.000Z"},"performer_ids":{"type":"array","description":"Массив идентификаторов пользователей, привязанных к напоминанию как «ответственные»","example":[12],"items":{"type":"integer","format":"int32"}},"all_day":{"type":"boolean","description":"Напоминание на весь день (без указания времени)","example":false},"custom_properties":{"type":"array","description":"Дополнительные поля напоминания","items":{"type":"object","description":"Дополнительное поле","required":["id","name","data_type","value"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор поля","example":1678},"name":{"type":"string","description":"Название поля","example":"Город","maxLength":32},"data_type":{"description":"Тип поля","example":"string","allOf":[{"type":"string","description":"Тип данных дополнительного поля","enum":["string","number","date","link"],"x-enum-descriptions":{"string":"Строковое значение","number":"Числовое значение","date":"Дата","link":"Ссылка"},"$ref":"#/components/schemas/CustomPropertyDataType"}]},"value":{"type":"string","description":"Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601.","example":"Санкт-Петербург","nullable":true,"maxLength":768}},"$ref":"#/components/schemas/CustomProperty"}}},"$ref":"#/components/schemas/Task"}}}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"tasks:read","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":false},"docs":"# Информация о напоминании\n\n**Метод**: `GET`\n\n**Путь**: `/tasks/{id}`\n\n> **Скоуп:** `tasks:read`\n\nНапоминание вместе с его автором, ответственными и чатом, к которому оно привязано.\n\nНапоминание видят его автор, ответственные и участники чата, к которому оно привязано. Участия в чате хватает, чтобы прочитать, но не чтобы изменить: править и удалять напоминание могут только автор и ответственные.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор напоминания\n\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/tasks/22283\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Напоминание\n - `id: integer, int32` (required) — Идентификатор напоминания. Пример: `22283`\n - `kind: string` (required) — Тип\n Значения: `call` — Позвонить контакту, `meeting` — Встреча, `reminder` — Простое напоминание, `event` — Событие, `email` — Написать письмо\n - `content: string` (required) — Описание. Пример: `\"Забрать со склада 21 заказ\"`\n - `due_at: date-time` (required, nullable) — Срок выполнения напоминания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан. Пример: `\"2020-06-05T09:00:00.000Z\"`\n - `priority: integer, int32` (required) — Приоритет. Пример: `2`\n - `user_id: integer, int32` (required) — Идентификатор пользователя-создателя напоминания. Пример: `12`\n - `chat_id: integer, int32` (required, nullable) — Идентификатор чата, к которому привязано напоминание. `null`, если напоминание не привязано к чату. Пример: `334`\n - `status: string` (required) — Статус напоминания\n Значения: `done` — Выполнено, `undone` — Активно\n - `created_at: date-time` (required) — Дата и время создания напоминания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2020-06-04T10:37:57.000Z\"`\n - `performer_ids: array of integer` (required) — Массив идентификаторов пользователей, привязанных к напоминанию как «ответственные». Пример: `[12]`\n - `all_day: boolean` (required) — Напоминание на весь день (без указания времени). Пример: `false`\n - `custom_properties: array of object` (required) — Дополнительные поля напоминания\n - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678`\n - `name: string` (required, max length: 32) — Название поля. Пример: `\"Город\"`\n - `data_type: string` (required) — Тип поля\n Значения: `string` — Строковое значение, `number` — Числовое значение, `date` — Дата, `link` — Ссылка\n - `value: string` (required, nullable, max length: 768) — Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601. Пример: `\"Санкт-Петербург\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 22283,\n \"kind\": \"reminder\",\n \"content\": \"Забрать со склада 21 заказ\",\n \"due_at\": \"2020-06-05T09:00:00.000Z\",\n \"priority\": 2,\n \"user_id\": 12,\n \"chat_id\": 334,\n \"status\": \"undone\",\n \"created_at\": \"2020-06-04T10:37:57.000Z\",\n \"performer_ids\": [\n 12\n ],\n \"all_day\": false,\n \"custom_properties\": [\n {\n \"id\": 1678,\n \"name\": \"Город\",\n \"data_type\": \"string\",\n \"value\": \"Санкт-Петербург\"\n }\n ]\n }\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"PUT","path":"/tasks/{id}","summary":"Редактирование напоминания","scope":"tasks:update","plan":null,"auth":true,"paginated":false,"command":"pachca tasks update","docLink":"https://dev.pachca.com/api/tasks/update","describe":"# PUT /tasks/{id} — Редактирование напоминания\n\n> **Скоуп:** `tasks:update`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор напоминания\n\n## Тело запроса\n\n- `task: object` (required) — Собранный объект параметров обновляемого напоминания\n - `kind: string` — Тип\n Значения: `call` — Позвонить контакту, `meeting` — Встреча, `reminder` — Простое напоминание, `event` — Событие, `email` — Написать письмо\n - `content: string` — Описание\n - `due_at: date-time` — Срок выполнения напоминания (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Секунды отбрасываются: срок встаёт на начало минуты. Исключение — ровно 23:59:59: такое напоминание создаётся на весь день, без указания времени.\n - `priority: integer, int32` (min: 1, max: 3) — Приоритет: 1, 2 (важно) или 3 (очень важно)\n - `performer_ids: array of integer` — Массив идентификаторов пользователей, привязываемых к напоминанию как «ответственные»\n - `status: string` — Статус\n Значения: `done` — Выполнено, `undone` — Активно\n - `all_day: boolean` — Напоминание на весь день (без указания времени)\n - `done_at: date-time` — Дата и время выполнения напоминания (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Значение, которое не удалось разобрать, отметку о выполнении снимает: ответ придёт успешный, а в нём `done_at` будет `null`.\n - `custom_properties: array of object` — Задаваемые дополнительные поля\n - `id: integer, int32` (required) — Идентификатор поля\n - `value: string` (required) — Устанавливаемое значение\n\n## Эквивалентная команда\n\n```bash\npachca tasks update 22283 \\\n --content='Забрать со склада 21 заказ' \\\n --due-at=2020-06-05T12:00:00.000+03:00 \\\n --priority=2 \\\n --performer-ids='[12]' \\\n --status=done \\\n --no-all-day \\\n --done-at=2020-06-05T12:00:00.000Z \\\n --custom-properties='[{\"id\":78,\"value\":\"Синий склад\"}]' \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/tasks/update\nПолная справка: `pachca api PUT /tasks/{id} --docs` · схема: `--spec`\n","spec":{"method":"PUT","path":"/tasks/{id}","description":"Редактирование напоминания\n\nМеняет напоминание: перезаписываются только переданные поля.\n\nПередать напоминание другому сотруднику — это тоже правка: добавьте его в `performer_ids` вместо прежнего.\n\nВыполненное напоминание закрывают этим же методом: `status: \"done\"` ставит галочку и оставляет напоминание в списке, `status: \"undone\"` возвращает его в работу.\n\nДоступно автору и ответственным. Участник чата, где висит напоминание, его видит, но менять не может. Привязку к чату изменить нельзя: чтобы перевесить напоминание в другой чат, удалите его и создайте заново с нужным `chat_id`.","parameters":[{"name":"id","in":"path","description":"Идентификатор напоминания","required":true,"schema":{"type":"integer","format":"int32","example":22283},"example":22283}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на обновление напоминания","required":["task"],"properties":{"task":{"type":"object","description":"Собранный объект параметров обновляемого напоминания","properties":{"kind":{"description":"Тип","default":"reminder","example":"reminder","allOf":[{"type":"string","description":"Тип задачи","enum":["call","meeting","reminder","event","email"],"x-enum-descriptions":{"call":"Позвонить контакту","meeting":"Встреча","reminder":"Простое напоминание","event":"Событие","email":"Написать письмо"},"$ref":"#/components/schemas/TaskKind"}]},"content":{"type":"string","description":"Описание","example":"Забрать со склада 21 заказ"},"due_at":{"type":"string","format":"date-time","description":"Срок выполнения напоминания (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Секунды отбрасываются: срок встаёт на начало минуты. Исключение — ровно 23:59:59: такое напоминание создаётся на весь день, без указания времени.","example":"2020-06-05T12:00:00.000+03:00"},"priority":{"type":"integer","format":"int32","description":"Приоритет: 1, 2 (важно) или 3 (очень важно)","example":2,"minimum":1,"maximum":3},"performer_ids":{"type":"array","description":"Массив идентификаторов пользователей, привязываемых к напоминанию как «ответственные»","example":[12],"items":{"type":"integer","format":"int32"}},"status":{"description":"Статус","example":"done","allOf":[{"type":"string","description":"Статус напоминания","enum":["done","undone"],"x-enum-descriptions":{"done":"Выполнено","undone":"Активно"},"$ref":"#/components/schemas/TaskStatus"}]},"all_day":{"type":"boolean","description":"Напоминание на весь день (без указания времени)","example":false},"done_at":{"type":"string","format":"date-time","description":"Дата и время выполнения напоминания (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Значение, которое не удалось разобрать, отметку о выполнении снимает: ответ придёт успешный, а в нём `done_at` будет `null`.","example":"2020-06-05T12:00:00.000Z"},"custom_properties":{"type":"array","description":"Задаваемые дополнительные поля","items":{"type":"object","required":["id","value"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор поля","example":78},"value":{"type":"string","description":"Устанавливаемое значение","example":"Синий склад"}}}}}}},"$ref":"#/components/schemas/TaskUpdateRequest"}}}},"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Напоминание","required":["id","kind","content","due_at","priority","user_id","chat_id","status","created_at","performer_ids","all_day","custom_properties"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор напоминания","example":22283},"kind":{"description":"Тип","example":"reminder","allOf":[{"type":"string","description":"Тип задачи","enum":["call","meeting","reminder","event","email"],"x-enum-descriptions":{"call":"Позвонить контакту","meeting":"Встреча","reminder":"Простое напоминание","event":"Событие","email":"Написать письмо"},"$ref":"#/components/schemas/TaskKind"}]},"content":{"type":"string","description":"Описание","example":"Забрать со склада 21 заказ"},"due_at":{"type":"string","format":"date-time","description":"Срок выполнения напоминания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан.","example":"2020-06-05T09:00:00.000Z","nullable":true},"priority":{"type":"integer","format":"int32","description":"Приоритет","example":2},"user_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя-создателя напоминания","example":12},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, к которому привязано напоминание. `null`, если напоминание не привязано к чату.","example":334,"nullable":true},"status":{"description":"Статус напоминания","example":"undone","allOf":[{"type":"string","description":"Статус напоминания","enum":["done","undone"],"x-enum-descriptions":{"done":"Выполнено","undone":"Активно"},"$ref":"#/components/schemas/TaskStatus"}]},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания напоминания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2020-06-04T10:37:57.000Z"},"performer_ids":{"type":"array","description":"Массив идентификаторов пользователей, привязанных к напоминанию как «ответственные»","example":[12],"items":{"type":"integer","format":"int32"}},"all_day":{"type":"boolean","description":"Напоминание на весь день (без указания времени)","example":false},"custom_properties":{"type":"array","description":"Дополнительные поля напоминания","items":{"type":"object","description":"Дополнительное поле","required":["id","name","data_type","value"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор поля","example":1678},"name":{"type":"string","description":"Название поля","example":"Город","maxLength":32},"data_type":{"description":"Тип поля","example":"string","allOf":[{"type":"string","description":"Тип данных дополнительного поля","enum":["string","number","date","link"],"x-enum-descriptions":{"string":"Строковое значение","number":"Числовое значение","date":"Дата","link":"Ссылка"},"$ref":"#/components/schemas/CustomPropertyDataType"}]},"value":{"type":"string","description":"Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601.","example":"Санкт-Петербург","nullable":true,"maxLength":768}},"$ref":"#/components/schemas/CustomProperty"}}},"$ref":"#/components/schemas/Task"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"tasks:update","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":false},"docs":"# Редактирование напоминания\n\n**Метод**: `PUT`\n\n**Путь**: `/tasks/{id}`\n\n> **Скоуп:** `tasks:update`\n\nМеняет напоминание: перезаписываются только переданные поля.\n\nПередать напоминание другому сотруднику — это тоже правка: добавьте его в `performer_ids` вместо прежнего.\n\nВыполненное напоминание закрывают этим же методом: `status: \"done\"` ставит галочку и оставляет напоминание в списке, `status: \"undone\"` возвращает его в работу.\n\nДоступно автору и ответственным. Участник чата, где висит напоминание, его видит, но менять не может. Привязку к чату изменить нельзя: чтобы перевесить напоминание в другой чат, удалите его и создайте заново с нужным `chat_id`.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор напоминания\n\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `task: object` (required) — Собранный объект параметров обновляемого напоминания\n - `kind: string` — Тип\n Значения: `call` — Позвонить контакту, `meeting` — Встреча, `reminder` — Простое напоминание, `event` — Событие, `email` — Написать письмо\n - `content: string` — Описание. Пример: `\"Забрать со склада 21 заказ\"`\n - `due_at: date-time` — Срок выполнения напоминания (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Секунды отбрасываются: срок встаёт на начало минуты. Исключение — ровно 23:59:59: такое напоминание создаётся на весь день, без указания времени. Пример: `\"2020-06-05T12:00:00.000+03:00\"`\n - `priority: integer, int32` (min: 1, max: 3) — Приоритет: 1, 2 (важно) или 3 (очень важно). Пример: `2`\n - `performer_ids: array of integer` — Массив идентификаторов пользователей, привязываемых к напоминанию как «ответственные». Пример: `[12]`\n - `status: string` — Статус\n Значения: `done` — Выполнено, `undone` — Активно\n - `all_day: boolean` — Напоминание на весь день (без указания времени). Пример: `false`\n - `done_at: date-time` — Дата и время выполнения напоминания (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Значение, которое не удалось разобрать, отметку о выполнении снимает: ответ придёт успешный, а в нём `done_at` будет `null`. Пример: `\"2020-06-05T12:00:00.000Z\"`\n - `custom_properties: array of object` — Задаваемые дополнительные поля\n - `id: integer, int32` (required) — Идентификатор поля. Пример: `78`\n - `value: string` (required) — Устанавливаемое значение. Пример: `\"Синий склад\"`\n\n### Пример\n\n```json\n{\n \"task\": {\n \"content\": \"Забрать со склада 21 заказ\",\n \"due_at\": \"2020-06-05T12:00:00.000+03:00\",\n \"priority\": 2,\n \"performer_ids\": [\n 12\n ],\n \"status\": \"done\",\n \"all_day\": false,\n \"done_at\": \"2020-06-05T12:00:00.000Z\",\n \"custom_properties\": [\n {\n \"id\": 78,\n \"value\": \"Синий склад\"\n }\n ]\n }\n}\n```\n\n## Пример запроса\n\n```bash\ncurl -X PUT \"https://api.pachca.com/api/shared/v1/tasks/22283\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"task\": {\n \"content\": \"Забрать со склада 21 заказ\",\n \"due_at\": \"2020-06-05T12:00:00.000+03:00\",\n \"priority\": 2,\n \"performer_ids\": [\n 12\n ],\n \"status\": \"done\",\n \"all_day\": false,\n \"done_at\": \"2020-06-05T12:00:00.000Z\",\n \"custom_properties\": [\n {\n \"id\": 78,\n \"value\": \"Синий склад\"\n }\n ]\n }\n}'\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Напоминание\n - `id: integer, int32` (required) — Идентификатор напоминания. Пример: `22283`\n - `kind: string` (required) — Тип\n Значения: `call` — Позвонить контакту, `meeting` — Встреча, `reminder` — Простое напоминание, `event` — Событие, `email` — Написать письмо\n - `content: string` (required) — Описание. Пример: `\"Забрать со склада 21 заказ\"`\n - `due_at: date-time` (required, nullable) — Срок выполнения напоминания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан. Пример: `\"2020-06-05T09:00:00.000Z\"`\n - `priority: integer, int32` (required) — Приоритет. Пример: `2`\n - `user_id: integer, int32` (required) — Идентификатор пользователя-создателя напоминания. Пример: `12`\n - `chat_id: integer, int32` (required, nullable) — Идентификатор чата, к которому привязано напоминание. `null`, если напоминание не привязано к чату. Пример: `334`\n - `status: string` (required) — Статус напоминания\n Значения: `done` — Выполнено, `undone` — Активно\n - `created_at: date-time` (required) — Дата и время создания напоминания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2020-06-04T10:37:57.000Z\"`\n - `performer_ids: array of integer` (required) — Массив идентификаторов пользователей, привязанных к напоминанию как «ответственные». Пример: `[12]`\n - `all_day: boolean` (required) — Напоминание на весь день (без указания времени). Пример: `false`\n - `custom_properties: array of object` (required) — Дополнительные поля напоминания\n - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678`\n - `name: string` (required, max length: 32) — Название поля. Пример: `\"Город\"`\n - `data_type: string` (required) — Тип поля\n Значения: `string` — Строковое значение, `number` — Числовое значение, `date` — Дата, `link` — Ссылка\n - `value: string` (required, nullable, max length: 768) — Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601. Пример: `\"Санкт-Петербург\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 22283,\n \"kind\": \"reminder\",\n \"content\": \"Забрать со склада 21 заказ\",\n \"due_at\": \"2020-06-05T09:00:00.000Z\",\n \"priority\": 2,\n \"user_id\": 12,\n \"chat_id\": 334,\n \"status\": \"undone\",\n \"created_at\": \"2020-06-04T10:37:57.000Z\",\n \"performer_ids\": [\n 12\n ],\n \"all_day\": false,\n \"custom_properties\": [\n {\n \"id\": 1678,\n \"name\": \"Город\",\n \"data_type\": \"string\",\n \"value\": \"Санкт-Петербург\"\n }\n ]\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"DELETE","path":"/tasks/{id}","summary":"Удаление напоминания","scope":"tasks:delete","plan":null,"auth":true,"paginated":false,"command":"pachca tasks delete","docLink":"https://dev.pachca.com/api/tasks/delete","describe":"# DELETE /tasks/{id} — Удаление напоминания\n\n> **Скоуп:** `tasks:delete`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор напоминания\n\n## Эквивалентная команда\n\n```bash\npachca tasks delete 22283 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/tasks/delete\nПолная справка: `pachca api DELETE /tasks/{id} --docs` · схема: `--spec`\n","spec":{"method":"DELETE","path":"/tasks/{id}","description":"Удаление напоминания\n\nУбирает напоминание насовсем: восстановить его нельзя, и у ответственных оно тоже пропадает. Если напоминание уехало в подключённый календарь, событие удаляется и там.\n\nДоступно автору и ответственным. Повторный вызов отвечает `404`.\n\nЗакрыть выполненное напоминание, сохранив его в списке, можно методом [Редактирование напоминания](PUT /tasks/{id}) со `status: \"done\"`.","parameters":[{"name":"id","in":"path","description":"Идентификатор напоминания","required":true,"schema":{"type":"integer","format":"int32","example":22283},"example":22283}],"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"tasks:delete","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":false},"docs":"# Удаление напоминания\n\n**Метод**: `DELETE`\n\n**Путь**: `/tasks/{id}`\n\n> **Скоуп:** `tasks:delete`\n\nУбирает напоминание насовсем: восстановить его нельзя, и у ответственных оно тоже пропадает. Если напоминание уехало в подключённый календарь, событие удаляется и там.\n\nДоступно автору и ответственным. Повторный вызов отвечает `404`.\n\nЗакрыть выполненное напоминание, сохранив его в списке, можно методом [Редактирование напоминания](PUT /tasks/{id}) со `status: \"done\"`.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор напоминания\n\n\n## Пример запроса\n\n```bash\ncurl -X DELETE \"https://api.pachca.com/api/shared/v1/tasks/22283\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"POST","path":"/threads","summary":"Новый самостоятельный тред","scope":"threads:create","plan":null,"auth":true,"paginated":false,"command":"pachca threads create","docLink":"https://dev.pachca.com/api/threads/create","describe":"# POST /threads — Новый самостоятельный тред\n\n> **Скоуп:** `threads:create`\n\n## Эквивалентная команда\n\n```bash\npachca threads create \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/threads/create\nПолная справка: `pachca api POST /threads --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/threads","description":"Новый самостоятельный тред\n\nЗаводит тред, который ни к чему не привязан: место для разговора, диалога с агентом или звонка, которому не нужен отдельный чат. Собрать в нём можно любых сотрудников.\n\nТело запроса не требуется. Создатель треда становится его единственным участником, а поля `message_id` и `message_chat_id` в ответе возвращаются как `null`. Добавить в тред участников проще всего упоминанием: `@ник` или `@тег` в начале или в конце текста сообщения. Можно и методом [Добавление пользователей](POST /chats/{id}/members) по `chat_id` треда.\n\nНазвания у треда нет, поэтому сразу отправьте в него первое сообщение — по нему сотрудники и поймут, о чём речь. Удалить тред нельзя. Если обсуждать нужно конкретное сообщение в чате, заводите тред под ним методом [Новый тред](POST /messages/{id}/thread), а если нужно постоянное место с названием — создайте его методом [Новый чат](POST /chats).","parameters":[],"responses":{"201":{"description":"The request has succeeded and a new resource has been created as a result.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Тред","required":["id","chat_id","message_id","message_chat_id","updated_at"],"properties":{"id":{"type":"integer","format":"int64","description":"Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](POST /messages) с `entity_type: \"thread\"`.","example":265142},"chat_id":{"type":"integer","format":"int64","description":"Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](GET /messages) и работают с его участниками.","example":2637266155},"message_id":{"type":"integer","format":"int64","description":"Идентификатор сообщения, к которому был создан тред. `null` для самостоятельного треда, созданного без привязки к сообщению.","example":154332686,"nullable":true},"message_chat_id":{"type":"integer","format":"int64","description":"Идентификатор чата сообщения. `null` для самостоятельного треда, созданного без привязки к сообщению.","example":2637266154,"nullable":true},"updated_at":{"type":"string","format":"date-time","description":"Дата и время обновления треда (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2023-02-01T19:20:47.204Z"}},"$ref":"#/components/schemas/Thread"}}},"example":{"data":{"id":265142,"chat_id":2637266155,"message_id":null,"message_chat_id":null,"updated_at":"2023-02-01T19:20:47.204Z"}}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}}},"requirements":{"scope":"threads:create","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":false},"docs":"# Новый самостоятельный тред\n\n**Метод**: `POST`\n\n**Путь**: `/threads`\n\n> **Скоуп:** `threads:create`\n\nЗаводит тред, который ни к чему не привязан: место для разговора, диалога с агентом или звонка, которому не нужен отдельный чат. Собрать в нём можно любых сотрудников.\n\nТело запроса не требуется. Создатель треда становится его единственным участником, а поля `message_id` и `message_chat_id` в ответе возвращаются как `null`. Добавить в тред участников проще всего упоминанием: `@ник` или `@тег` в начале или в конце текста сообщения. Можно и методом [Добавление пользователей](POST /chats/{id}/members) по `chat_id` треда.\n\nНазвания у треда нет, поэтому сразу отправьте в него первое сообщение — по нему сотрудники и поймут, о чём речь. Удалить тред нельзя. Если обсуждать нужно конкретное сообщение в чате, заводите тред под ним методом [Новый тред](POST /messages/{id}/thread), а если нужно постоянное место с названием — создайте его методом [Новый чат](POST /chats).\n\n## Пример запроса\n\n```bash\ncurl -X POST \"https://api.pachca.com/api/shared/v1/threads\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 201: The request has succeeded and a new resource has been created as a result.\n\n**Схема ответа:**\n\n- `data: object` (required) — Тред\n - `id: integer, int64` (required) — Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](POST /messages) с `entity_type: \"thread\"`. Пример: `265142`\n - `chat_id: integer, int64` (required) — Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](GET /messages) и работают с его участниками. Пример: `2637266155`\n - `message_id: integer, int64` (required, nullable) — Идентификатор сообщения, к которому был создан тред. `null` для самостоятельного треда, созданного без привязки к сообщению. Пример: `154332686`\n - `message_chat_id: integer, int64` (required, nullable) — Идентификатор чата сообщения. `null` для самостоятельного треда, созданного без привязки к сообщению. Пример: `2637266154`\n - `updated_at: date-time` (required) — Дата и время обновления треда (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2023-02-01T19:20:47.204Z\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 265142,\n \"chat_id\": 2637266155,\n \"message_id\": null,\n \"message_chat_id\": null,\n \"updated_at\": \"2023-02-01T19:20:47.204Z\"\n }\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n"},{"method":"GET","path":"/threads","summary":"Список тредов","scope":"threads:read","plan":null,"auth":true,"paginated":true,"command":"pachca threads list","docLink":"https://dev.pachca.com/api/threads/list","describe":"# GET /threads — Список тредов\n\n> **Скоуп:** `threads:read`\n\n> Пагинация: добавьте `--all` для автоматического обхода страниц\n\n## Параметры\n\n- `last_message_at_after` — query: Фильтрация по времени последнего сообщения в треде: вернутся треды, где оно позже указанного. Значение в ISO-8601, смещение вида `+03:00` учитывается, время без смещения считается UTC.\n- `last_message_at_before` — query: Фильтрация по времени последнего сообщения в треде: вернутся треды, где оно раньше указанного. Значение в ISO-8601, смещение вида `+03:00` учитывается, время без смещения считается UTC.\n- `limit` — query: Количество возвращаемых сущностей за один запрос\n- `cursor` — query: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n## Эквивалентная команда\n\n```bash\n# Добавьте --all для автоматической пагинации\npachca threads list \\\n --last-message-at-after=2025-01-01T00:00:00.000Z \\\n --last-message-at-before=2025-02-01T00:00:00.000Z \\\n --limit=1 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/threads/list\nПолная справка: `pachca api GET /threads --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/threads","description":"Список тредов\n\nТреды, доступные владельцу токена.\n\nВозвращаются треды, где вы состоите в самом треде или в чате, в котором он заведён. Участия в треде достаточно: входить в чат с родительским сообщением не нужно, самостоятельные треды тоже приходят. А вот треды из открытых чатов пространства, где вы не состоите, в список не попадают, хотя сами чаты вам доступны.\n\nСортировка — по убыванию времени последнего сообщения в треде.\n\nВ элементе списка нет ни названия, ни текста: только идентификаторы треда, его чата и родительского сообщения. Чтобы понять, о чём тред, прочитайте его сообщения методом [Список сообщений чата](GET /messages) по `chat_id`, а нужный тред по содержанию ищут методом [Поиск сообщений](GET /search/messages).","parameters":[{"name":"last_message_at_after","in":"query","description":"Фильтрация по времени последнего сообщения в треде: вернутся треды, где оно позже указанного. Значение в ISO-8601, смещение вида `+03:00` учитывается, время без смещения считается UTC.","required":false,"schema":{"type":"string","format":"date-time","example":"2025-01-01T00:00:00.000Z"},"example":"2025-01-01T00:00:00.000Z","explode":false},{"name":"last_message_at_before","in":"query","description":"Фильтрация по времени последнего сообщения в треде: вернутся треды, где оно раньше указанного. Значение в ISO-8601, смещение вида `+03:00` учитывается, время без смещения считается UTC.","required":false,"schema":{"type":"string","format":"date-time","example":"2025-02-01T00:00:00.000Z"},"example":"2025-02-01T00:00:00.000Z","explode":false},{"name":"limit","in":"query","description":"Количество возвращаемых сущностей за один запрос","required":false,"schema":{"type":"integer","format":"int32","default":50,"example":1,"minimum":1,"maximum":50},"example":1,"explode":false},{"name":"cursor","in":"query","description":"Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)","required":false,"schema":{"type":"string","example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9"},"example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9","explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными и пагинацией","required":["data","meta"],"properties":{"data":{"type":"array","items":{"type":"object","description":"Тред","required":["id","chat_id","message_id","message_chat_id","updated_at"],"properties":{"id":{"type":"integer","format":"int64","description":"Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](POST /messages) с `entity_type: \"thread\"`.","example":265142},"chat_id":{"type":"integer","format":"int64","description":"Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](GET /messages) и работают с его участниками.","example":2637266155},"message_id":{"type":"integer","format":"int64","description":"Идентификатор сообщения, к которому был создан тред. `null` для самостоятельного треда, созданного без привязки к сообщению.","example":154332686,"nullable":true},"message_chat_id":{"type":"integer","format":"int64","description":"Идентификатор чата сообщения. `null` для самостоятельного треда, созданного без привязки к сообщению.","example":2637266154,"nullable":true},"updated_at":{"type":"string","format":"date-time","description":"Дата и время обновления треда (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2023-02-01T19:20:47.204Z"}},"$ref":"#/components/schemas/Thread"}},"meta":{"type":"object","description":"Метаданные пагинации","required":["paginate"],"properties":{"paginate":{"type":"object","description":"Вспомогательная информация","required":["next_page"],"properties":{"next_page":{"type":"string","description":"Курсор пагинации следующей страницы","example":"eyJxZCO2MiwiZGlyIjomSNYjIn3"},"prev_page":{"type":"string","description":"Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка.","example":"eyJxZCO2MiwiZGlyIjoiYXNjIn0"},"has_next":{"type":"boolean","description":"Есть ли ещё данные на следующей странице. На последней странице — `false`.","example":true},"has_prev":{"type":"boolean","description":"Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`.","example":false}}}},"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"threads:read","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":true},"docs":"# Список тредов\n\n**Метод**: `GET`\n\n**Путь**: `/threads`\n\n> **Скоуп:** `threads:read`\n\nТреды, доступные владельцу токена.\n\nВозвращаются треды, где вы состоите в самом треде или в чате, в котором он заведён. Участия в треде достаточно: входить в чат с родительским сообщением не нужно, самостоятельные треды тоже приходят. А вот треды из открытых чатов пространства, где вы не состоите, в список не попадают, хотя сами чаты вам доступны.\n\nСортировка — по убыванию времени последнего сообщения в треде.\n\nВ элементе списка нет ни названия, ни текста: только идентификаторы треда, его чата и родительского сообщения. Чтобы понять, о чём тред, прочитайте его сообщения методом [Список сообщений чата](GET /messages) по `chat_id`, а нужный тред по содержанию ищут методом [Поиск сообщений](GET /search/messages).\n\n## Параметры\n\n### Query параметры\n\n- `last_message_at_after: date-time` — Фильтрация по времени последнего сообщения в треде: вернутся треды, где оно позже указанного. Значение в ISO-8601, смещение вида `+03:00` учитывается, время без смещения считается UTC.\n- `last_message_at_before: date-time` — Фильтрация по времени последнего сообщения в треде: вернутся треды, где оно раньше указанного. Значение в ISO-8601, смещение вида `+03:00` учитывается, время без смещения считается UTC.\n- `limit: integer, int32` (default: 50) — Количество возвращаемых сущностей за один запрос\n- `cursor: string` — Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n\n## Пример запроса\n\n```bash\n# Для получения следующей страницы используйте cursor из meta.paginate.next_page\ncurl \"https://api.pachca.com/api/shared/v1/threads?last_message_at_after=2025-01-01T00:00:00.000Z&last_message_at_before=2025-02-01T00:00:00.000Z&limit=1\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: array of object` (required)\n - `id: integer, int64` (required) — Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](POST /messages) с `entity_type: \"thread\"`. Пример: `265142`\n - `chat_id: integer, int64` (required) — Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](GET /messages) и работают с его участниками. Пример: `2637266155`\n - `message_id: integer, int64` (required, nullable) — Идентификатор сообщения, к которому был создан тред. `null` для самостоятельного треда, созданного без привязки к сообщению. Пример: `154332686`\n - `message_chat_id: integer, int64` (required, nullable) — Идентификатор чата сообщения. `null` для самостоятельного треда, созданного без привязки к сообщению. Пример: `2637266154`\n - `updated_at: date-time` (required) — Дата и время обновления треда (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2023-02-01T19:20:47.204Z\"`\n- `meta: object` (required) — Метаданные пагинации\n - `paginate: object` (required) — Вспомогательная информация\n - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `\"eyJxZCO2MiwiZGlyIjomSNYjIn3\"`\n - `prev_page: string` — Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка. Пример: `\"eyJxZCO2MiwiZGlyIjoiYXNjIn0\"`\n - `has_next: boolean` — Есть ли ещё данные на следующей странице. На последней странице — `false`. Пример: `true`\n - `has_prev: boolean` — Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`. Пример: `false`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": [\n {\n \"id\": 265142,\n \"chat_id\": 2637266155,\n \"message_id\": 154332686,\n \"message_chat_id\": 2637266154,\n \"updated_at\": \"2023-02-01T19:20:47.204Z\"\n }\n ],\n \"meta\": {\n \"paginate\": {\n \"next_page\": \"eyJxZCO2MiwiZGlyIjomSNYjIn3\",\n \"prev_page\": \"eyJxZCO2MiwiZGlyIjoiYXNjIn0\",\n \"has_next\": true,\n \"has_prev\": false\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/threads/{id}","summary":"Информация о треде","scope":"threads:read","plan":null,"auth":true,"paginated":false,"command":"pachca threads get","docLink":"https://dev.pachca.com/api/threads/get","describe":"# GET /threads/{id} — Информация о треде\n\n> **Скоуп:** `threads:read`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор треда\n\n## Эквивалентная команда\n\n```bash\npachca threads get 265142 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/threads/get\nПолная справка: `pachca api GET /threads/{id} --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/threads/{id}","description":"Информация о треде\n\nИдентификаторы треда и сообщения, под которым он висит. По `id` в тред пишут методом [Новое сообщение](POST /messages) с `entity_type: \"thread\"`, а по `chat_id` читают его сообщения. У самостоятельного треда `message_id` и `message_chat_id` приходят как `null`.\n\nВ ответе только идентификаторы: названия и счётчика сообщений у треда нет, о чём он — видно по переписке внутри. Сообщения треда читаются методом [Список сообщений чата](GET /messages), а состав участников — методом [Список участников чата](GET /chats/{id}/members), оба по `chat_id` треда.\n\nДоступ к треду шире, чем выдача метода [Список тредов](GET /threads): тред, который открывается по `id`, в списке может и не появиться.","parameters":[{"name":"id","in":"path","description":"Идентификатор треда","required":true,"schema":{"type":"integer","format":"int32","example":265142},"example":265142}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Тред","required":["id","chat_id","message_id","message_chat_id","updated_at"],"properties":{"id":{"type":"integer","format":"int64","description":"Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](POST /messages) с `entity_type: \"thread\"`.","example":265142},"chat_id":{"type":"integer","format":"int64","description":"Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](GET /messages) и работают с его участниками.","example":2637266155},"message_id":{"type":"integer","format":"int64","description":"Идентификатор сообщения, к которому был создан тред. `null` для самостоятельного треда, созданного без привязки к сообщению.","example":154332686,"nullable":true},"message_chat_id":{"type":"integer","format":"int64","description":"Идентификатор чата сообщения. `null` для самостоятельного треда, созданного без привязки к сообщению.","example":2637266154,"nullable":true},"updated_at":{"type":"string","format":"date-time","description":"Дата и время обновления треда (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2023-02-01T19:20:47.204Z"}},"$ref":"#/components/schemas/Thread"}}}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"threads:read","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":false},"docs":"# Информация о треде\n\n**Метод**: `GET`\n\n**Путь**: `/threads/{id}`\n\n> **Скоуп:** `threads:read`\n\nИдентификаторы треда и сообщения, под которым он висит. По `id` в тред пишут методом [Новое сообщение](POST /messages) с `entity_type: \"thread\"`, а по `chat_id` читают его сообщения. У самостоятельного треда `message_id` и `message_chat_id` приходят как `null`.\n\nВ ответе только идентификаторы: названия и счётчика сообщений у треда нет, о чём он — видно по переписке внутри. Сообщения треда читаются методом [Список сообщений чата](GET /messages), а состав участников — методом [Список участников чата](GET /chats/{id}/members), оба по `chat_id` треда.\n\nДоступ к треду шире, чем выдача метода [Список тредов](GET /threads): тред, который открывается по `id`, в списке может и не появиться.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор треда\n\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/threads/265142\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Тред\n - `id: integer, int64` (required) — Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](POST /messages) с `entity_type: \"thread\"`. Пример: `265142`\n - `chat_id: integer, int64` (required) — Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](GET /messages) и работают с его участниками. Пример: `2637266155`\n - `message_id: integer, int64` (required, nullable) — Идентификатор сообщения, к которому был создан тред. `null` для самостоятельного треда, созданного без привязки к сообщению. Пример: `154332686`\n - `message_chat_id: integer, int64` (required, nullable) — Идентификатор чата сообщения. `null` для самостоятельного треда, созданного без привязки к сообщению. Пример: `2637266154`\n - `updated_at: date-time` (required) — Дата и время обновления треда (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2023-02-01T19:20:47.204Z\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 265142,\n \"chat_id\": 2637266155,\n \"message_id\": 154332686,\n \"message_chat_id\": 2637266154,\n \"updated_at\": \"2023-02-01T19:20:47.204Z\"\n }\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"POST","path":"/uploads","summary":"Получение подписи, ключа и других параметров","scope":"uploads:write","plan":null,"auth":true,"paginated":false,"command":"pachca files uploads","docLink":"https://dev.pachca.com/api/files/uploads","describe":"# POST /uploads — Получение подписи, ключа и других параметров\n\n> **Скоуп:** `uploads:write`\n\n## Эквивалентная команда\n\n```bash\npachca files uploads \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/files/uploads\nПолная справка: `pachca api POST /uploads --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/uploads","description":"Получение подписи, ключа и других параметров\n\nПервый шаг загрузки файла: метод выдаёт адрес хранилища и подписанные поля формы, с которыми файл заливают следующим запросом.\n\nНичего в Пачке при этом ещё не создаётся: загруженный файл никому не виден и ни к чему не привязан. Вложением он становится, когда его `key` передан в поле `files` — в [Новое сообщение](POST /messages) или [Новый черновик](POST /drafts), а также при их правке.\n\nПараметры выдаются на один файл: для каждого следующего запрашивайте их заново. Подпись действует 14 дней, а `key` привязан к владельцу токена, поэтому чужой ключ приложить к своему сообщению не получится.","parameters":[],"responses":{"201":{"description":"The request has succeeded and a new resource has been created as a result.","content":{"application/json":{"schema":{"type":"object","description":"Параметры для загрузки файла","required":["Content-Disposition","acl","policy","x-amz-credential","x-amz-algorithm","x-amz-date","x-amz-signature","key","direct_url"],"properties":{"Content-Disposition":{"type":"string","description":"Используемый заголовок (в данном запросе — attachment)","example":"attachment"},"acl":{"type":"string","description":"Уровень безопасности (в данном запросе — private)","example":"private"},"policy":{"type":"string","description":"Уникальная policy для загрузки файла","example":"eyJloNBpcmF0aW9uIjoiMjAyPi0xMi0wOFQwNjo1NzozNFHusCJjb82kaXRpb25zIjpbeyJidWNrZXQiOiJwYWNoY2EtcHJhYy11cGxvYWRzOu0sWyJzdGFydHMtd3l4aCIsIiRrZXkiLCJhdHRhY8hlcy9maWxlcy1xODUyMSJdLHsiQ29udGVudC1EaXNwb3NpdGlvbiI6ImF0dGFjaG1lbnQifSx2ImFjbCI3InByaXZhdGUifSx7IngtYW16LWNyZWRlbnRpYWwi2iIxNDIxNTVfc3RhcGx4LzIwMjIxMTI0L2J1LTFhL5MzL1F2czRfcmVxdWVzdCJ9LHsieC1hbXotYWxnb3JpdGhtIjytQVdTNC1ITUFDLVNIQTI1NiJ7LHsieC1hbXotZGF0ZSI6IjIwMjIxMTI0VDA2NTczNFoifV12"},"x-amz-credential":{"type":"string","description":"x-amz-credential для загрузки файла","example":"286471_server/20211122/kz-6x/s3/aws4_request"},"x-amz-algorithm":{"type":"string","description":"Используемый алгоритм (в данном запросе — AWS4-HMAC-SHA256)","example":"AWS4-HMAC-SHA256"},"x-amz-date":{"type":"string","description":"Уникальный x-amz-date для загрузки файла","example":"20211122T065734Z"},"x-amz-signature":{"type":"string","description":"Уникальная подпись для загрузки файла","example":"87e8f3ba4083c937c0e891d7a11tre932d8c33cg4bacf5380bf27624c1ok1475"},"key":{"type":"string","description":"Уникальный ключ для загрузки файла","example":"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/${filename}"},"direct_url":{"type":"string","description":"Адрес для загрузки файла","example":"https://api.pachca.com/api/v3/direct_upload"}},"$ref":"#/components/schemas/UploadParams"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}}},"requirements":{"scope":"uploads:write","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":false},"docs":"# Получение подписи, ключа и других параметров\n\n**Метод**: `POST`\n\n**Путь**: `/uploads`\n\n> **Скоуп:** `uploads:write`\n\nПервый шаг загрузки файла: метод выдаёт адрес хранилища и подписанные поля формы, с которыми файл заливают следующим запросом.\n\nНичего в Пачке при этом ещё не создаётся: загруженный файл никому не виден и ни к чему не привязан. Вложением он становится, когда его `key` передан в поле `files` — в [Новое сообщение](POST /messages) или [Новый черновик](POST /drafts), а также при их правке.\n\nПараметры выдаются на один файл: для каждого следующего запрашивайте их заново. Подпись действует 14 дней, а `key` привязан к владельцу токена, поэтому чужой ключ приложить к своему сообщению не получится.\n\n## Пример запроса\n\n```bash\ncurl -X POST \"https://api.pachca.com/api/shared/v1/uploads\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 201: The request has succeeded and a new resource has been created as a result.\n\n**Схема ответа:**\n\n- `Content-Disposition: string` (required) — Используемый заголовок (в данном запросе — attachment). Пример: `\"attachment\"`\n- `acl: string` (required) — Уровень безопасности (в данном запросе — private). Пример: `\"private\"`\n- `policy: string` (required) — Уникальная policy для загрузки файла. Пример: `\"eyJloNBpcmF0aW9uIjoiMjAyPi0xMi0wOFQwNjo1NzozNFHusCJjb82kaXRpb25zIjpbeyJidWNrZXQiOiJwYWNoY2EtcHJhYy11cGxvYWRzOu0sWyJzdGFydHMtd3l4aCIsIiRrZXkiLCJhdHRhY8hlcy9maWxlcy1xODUyMSJdLHsiQ29udGVudC1EaXNwb3NpdGlvbiI6ImF0dGFjaG1lbnQifSx2ImFjbCI3InByaXZhdGUifSx7IngtYW16LWNyZWRlbnRpYWwi2iIxNDIxNTVfc3RhcGx4LzIwMjIxMTI0L2J1LTFhL5MzL1F2czRfcmVxdWVzdCJ9LHsieC1hbXotYWxnb3JpdGhtIjytQVdTNC1ITUFDLVNIQTI1NiJ7LHsieC1hbXotZGF0ZSI6IjIwMjIxMTI0VDA2NTczNFoifV12\"`\n- `x-amz-credential: string` (required) — x-amz-credential для загрузки файла. Пример: `\"286471_server/20211122/kz-6x/s3/aws4_request\"`\n- `x-amz-algorithm: string` (required) — Используемый алгоритм (в данном запросе — AWS4-HMAC-SHA256). Пример: `\"AWS4-HMAC-SHA256\"`\n- `x-amz-date: string` (required) — Уникальный x-amz-date для загрузки файла. Пример: `\"20211122T065734Z\"`\n- `x-amz-signature: string` (required) — Уникальная подпись для загрузки файла. Пример: `\"87e8f3ba4083c937c0e891d7a11tre932d8c33cg4bacf5380bf27624c1ok1475\"`\n- `key: string` (required) — Уникальный ключ для загрузки файла. Пример: `\"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/${filename}\"`\n- `direct_url: string` (required) — Адрес для загрузки файла. Пример: `\"https://api.pachca.com/api/v3/direct_upload\"`\n\n**Пример ответа:**\n\n```json\n{\n \"Content-Disposition\": \"attachment\",\n \"acl\": \"private\",\n \"policy\": \"eyJloNBpcmF0aW9uIjoiMjAyPi0xMi0wOFQwNjo1NzozNFHusCJjb82kaXRpb25zIjpbeyJidWNrZXQiOiJwYWNoY2EtcHJhYy11cGxvYWRzOu0sWyJzdGFydHMtd3l4aCIsIiRrZXkiLCJhdHRhY8hlcy9maWxlcy1xODUyMSJdLHsiQ29udGVudC1EaXNwb3NpdGlvbiI6ImF0dGFjaG1lbnQifSx2ImFjbCI3InByaXZhdGUifSx7IngtYW16LWNyZWRlbnRpYWwi2iIxNDIxNTVfc3RhcGx4LzIwMjIxMTI0L2J1LTFhL5MzL1F2czRfcmVxdWVzdCJ9LHsieC1hbXotYWxnb3JpdGhtIjytQVdTNC1ITUFDLVNIQTI1NiJ7LHsieC1hbXotZGF0ZSI6IjIwMjIxMTI0VDA2NTczNFoifV12\",\n \"x-amz-credential\": \"286471_server/20211122/kz-6x/s3/aws4_request\",\n \"x-amz-algorithm\": \"AWS4-HMAC-SHA256\",\n \"x-amz-date\": \"20211122T065734Z\",\n \"x-amz-signature\": \"87e8f3ba4083c937c0e891d7a11tre932d8c33cg4bacf5380bf27624c1ok1475\",\n \"key\": \"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/${filename}\",\n \"direct_url\": \"https://api.pachca.com/api/v3/direct_upload\"\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n"},{"method":"POST","path":"/users","summary":"Новый сотрудник","scope":"users:create","plan":null,"auth":true,"paginated":false,"command":"pachca users create","docLink":"https://dev.pachca.com/api/users/create","describe":"# POST /users — Новый сотрудник\n\n> **Скоуп:** `users:create`\n\n## Тело запроса\n\n- `user: object` (required)\n - `first_name: string` (max length: 255) — Имя\n - `last_name: string` (max length: 255) — Фамилия\n - `email: string` (required, max length: 255) — Электронная почта\n - `phone_number: string` (max length: 255) — Телефон\n - `nickname: string` (max length: 255) — Имя пользователя\n - `department: string` (max length: 255) — Департамент\n - `title: string` — Должность\n - `role: string` — Уровень доступа\n Значения: `admin` — Администратор, `user` — Сотрудник, `multi_guest` — Мульти-гость, `guest` — Гость\n - `suspended: boolean` (default: false) — Деактивация пользователя\n - `list_tags: array of string` — Массив названий тегов, привязываемых к сотруднику. Значение, которое не является массивом непустых строк, игнорируется.\n - `chat_ids: array of integer` — Идентификаторы чатов, в которые сотрудник будет добавлен сразу при создании. Для роли `guest` параметр обязателен и должен содержать ровно один активный чат.\n - `custom_properties: array of object` — Задаваемые дополнительные поля\n - `id: integer, int32` (required) — Идентификатор поля\n - `value: string` (required, max length: 768) — Устанавливаемое значение\n- `skip_email_notify: boolean` (default: false) — Пропуск этапа отправки приглашения сотруднику. Сотруднику не будет отправлено письмо на электронную почту с приглашением создать аккаунт. Полезно при предварительном создании аккаунтов перед входом через SSO.\n\n## Эквивалентная команда\n\n```bash\npachca users create \\\n --first-name=Олег \\\n --last-name=Петров \\\n --email=olegp@example.com \\\n --phone-number=+79001234567 \\\n --nickname=olegpetrov \\\n --department=Продукт \\\n --title=CIO \\\n --role=user \\\n --list-tags='[\"Product\",\"Design\"]' \\\n --chat-ids='[12345]' \\\n --custom-properties='[{\"id\":1678,\"value\":\"Санкт-Петербург\"}]' \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/users/create\nПолная справка: `pachca api POST /users --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/users","description":"Новый сотрудник\n\nЗаводит сотрудника в пространстве и отправляет ему приглашение на почту. Доступно владельцу пространства и администратору, боту метод недоступен.\n\nЕсли сотрудник с этим адресом уже есть в пространстве, метод отвечает `409`. Занятый ник ошибкой не считается: к нему молча дописываются случайные символы, и в ответе приходит уже изменённый.\n\nВы можете заполнять дополнительные поля сотрудника, которые созданы в вашей компании. Получить актуальный список идентификаторов дополнительных полей сотрудника вы можете в методе [Список дополнительных полей](GET /custom_properties).\n\nПоле `list_tags` сразу заводит сотрудника в теги, а вместе с тегами — и в чаты, к которым эти теги привязаны. У гостя теги не назначаются вовсе: ответ приходит успешный, а `list_tags` в нём пустой.\n\nЧерез параметр `chat_ids` сотрудника можно сразу добавить в указанные чаты. Чтобы создать гостя, передайте `role: \"guest\"` — для этой роли `chat_ids` обязателен и должен содержать ровно один активный чат, в который у токена есть право добавлять участников. При нарушении правил гостевого доступа возвращается `400` с ошибкой по полю `chat_ids`.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на создание сотрудника","required":["user"],"properties":{"user":{"type":"object","required":["email"],"properties":{"first_name":{"type":"string","description":"Имя","example":"Олег","maxLength":255},"last_name":{"type":"string","description":"Фамилия","example":"Петров","maxLength":255},"email":{"type":"string","description":"Электронная почта","example":"olegp@example.com","maxLength":255},"phone_number":{"type":"string","description":"Телефон","example":"+79001234567","maxLength":255},"nickname":{"type":"string","description":"Имя пользователя","example":"olegpetrov","maxLength":255},"department":{"type":"string","description":"Департамент","example":"Продукт","maxLength":255},"title":{"type":"string","description":"Должность","example":"CIO"},"role":{"description":"Уровень доступа","example":"user","allOf":[{"type":"string","description":"Роль пользователя, допустимая при создании сотрудника. В отличие от редактирования, при создании можно назначить роль `guest` — в этом случае параметр `chat_ids` обязателен и должен содержать ровно один чат.","enum":["admin","user","multi_guest","guest"],"x-enum-descriptions":{"admin":"Администратор","user":"Сотрудник","multi_guest":"Мульти-гость","guest":"Гость"},"$ref":"#/components/schemas/UserCreateRole"}]},"suspended":{"type":"boolean","description":"Деактивация пользователя","default":false,"example":false},"list_tags":{"type":"array","description":"Массив названий тегов, привязываемых к сотруднику. Значение, которое не является массивом непустых строк, игнорируется.","example":["Product","Design"],"items":{"type":"string"}},"chat_ids":{"type":"array","description":"Идентификаторы чатов, в которые сотрудник будет добавлен сразу при создании. Для роли `guest` параметр обязателен и должен содержать ровно один активный чат.","example":[12345],"items":{"type":"integer","format":"int32"}},"custom_properties":{"type":"array","description":"Задаваемые дополнительные поля","items":{"type":"object","required":["id","value"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор поля","example":1678},"value":{"type":"string","description":"Устанавливаемое значение","example":"Санкт-Петербург","maxLength":768}}}}}},"skip_email_notify":{"type":"boolean","description":"Пропуск этапа отправки приглашения сотруднику. Сотруднику не будет отправлено письмо на электронную почту с приглашением создать аккаунт. Полезно при предварительном создании аккаунтов перед входом через SSO.","default":false,"example":false}},"$ref":"#/components/schemas/UserCreateRequest"}}}},"responses":{"201":{"description":"The request has succeeded and a new resource has been created as a result.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Сотрудник","required":["id","first_name","last_name","nickname","email","phone_number","department","title","role","suspended","invite_status","inviter_id","list_tags","custom_properties","user_status","bot","sso","created_at","last_activity_at","time_zone","image_url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор пользователя","example":12},"first_name":{"type":"string","description":"Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`).","example":"Олег","nullable":true,"maxLength":255},"last_name":{"type":"string","description":"Фамилия. Если не заполнена, возвращается `null` или пустая строка.","example":"Петров","nullable":true,"maxLength":255},"nickname":{"type":"string","description":"Имя пользователя","example":"olegpetrov","maxLength":255},"email":{"type":"string","description":"Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда.","example":"olegp@example.com","nullable":true,"maxLength":255},"phone_number":{"type":"string","description":"Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда.","example":"+79001234567","nullable":true,"maxLength":255},"department":{"type":"string","description":"Департамент. Если не указан, возвращается `null` или пустая строка.","example":"Продукт","nullable":true,"maxLength":255},"title":{"type":"string","description":"Должность. Если не указана, возвращается `null` или пустая строка.","example":"CIO","nullable":true},"role":{"description":"Уровень доступа","example":"admin","allOf":[{"type":"string","description":"Роль пользователя в системе","enum":["admin","user","multi_guest","guest"],"x-enum-descriptions":{"admin":"Администратор","user":"Сотрудник","multi_guest":"Мульти-гость","guest":"Гость"},"$ref":"#/components/schemas/UserRole"}]},"suspended":{"type":"boolean","description":"Деактивация пользователя","example":false},"invite_status":{"description":"Статус приглашения","example":"confirmed","allOf":[{"type":"string","description":"Статус приглашения пользователя","enum":["confirmed","sent"],"x-enum-descriptions":{"confirmed":"Принято","sent":"Отправлено"},"$ref":"#/components/schemas/InviteStatus"}]},"inviter_id":{"type":"integer","format":"int32","description":"Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён.","example":185,"nullable":true},"list_tags":{"type":"array","description":"Массив тегов, привязанных к сотруднику. Мульти-гостю в чужой карточке приходит пустым.","example":["Product","Design"],"items":{"type":"string"}},"custom_properties":{"type":"array","description":"Дополнительные поля сотрудника","items":{"type":"object","description":"Дополнительное поле","required":["id","name","data_type","value"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор поля","example":1678},"name":{"type":"string","description":"Название поля","example":"Город","maxLength":32},"data_type":{"description":"Тип поля","example":"string","allOf":[{"type":"string","description":"Тип данных дополнительного поля","enum":["string","number","date","link"],"x-enum-descriptions":{"string":"Строковое значение","number":"Числовое значение","date":"Дата","link":"Ссылка"},"$ref":"#/components/schemas/CustomPropertyDataType"}]},"value":{"type":"string","description":"Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601.","example":"Санкт-Петербург","nullable":true,"maxLength":768}},"$ref":"#/components/schemas/CustomProperty"}},"user_status":{"type":"object","description":"Статус. `null`, если у сотрудника не установлен статус.","nullable":true,"allOf":[{"type":"object","description":"Статус пользователя","required":["emoji","title","expires_at","is_away","away_message"],"properties":{"emoji":{"type":"string","description":"Emoji символ статуса","example":"🎮"},"title":{"type":"string","description":"Текст статуса","example":"Очень занят","maxLength":50},"expires_at":{"type":"string","format":"date-time","description":"Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически.","example":"2024-04-08T10:00:00.000Z","nullable":true},"is_away":{"type":"boolean","description":"Режим «Нет на месте»","example":false},"away_message":{"type":"object","description":"Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.","required":["text"],"nullable":true,"properties":{"text":{"type":"string","description":"Текст сообщения","example":"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.","maxLength":1024}}}},"$ref":"#/components/schemas/UserStatus"}]},"bot":{"type":"boolean","description":"Является ботом","example":false},"sso":{"type":"boolean","description":"Использует ли пользователь SSO","example":false},"created_at":{"type":"string","format":"date-time","description":"Дата создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2020-06-08T09:32:57.000Z"},"last_activity_at":{"type":"string","format":"date-time","description":"Дата последней активности пользователя (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если сотрудник ещё ни разу не заходил в Пачку — в этом случае `invite_status` возвращает `sent`.","example":"2025-01-20T13:40:07.000Z","nullable":true},"time_zone":{"type":"string","description":"Часовой пояс пользователя. `null`, если сотрудник не задал личный часовой пояс — тогда применяется часовой пояс компании.","example":"Europe/Moscow","nullable":true,"maxLength":32},"image_url":{"type":"string","description":"Ссылка на скачивание аватарки пользователя. `null`, если аватарка не загружена.","example":"https://app.pachca.com/users/12/photo.jpg","nullable":true}},"$ref":"#/components/schemas/User"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"users:create","scopeRoles":["owner","admin"]},"paginated":false},"docs":"# Новый сотрудник\n\n**Метод**: `POST`\n\n**Путь**: `/users`\n\n> **Скоуп:** `users:create`\n\nЗаводит сотрудника в пространстве и отправляет ему приглашение на почту. Доступно владельцу пространства и администратору, боту метод недоступен.\n\nЕсли сотрудник с этим адресом уже есть в пространстве, метод отвечает `409`. Занятый ник ошибкой не считается: к нему молча дописываются случайные символы, и в ответе приходит уже изменённый.\n\nВы можете заполнять дополнительные поля сотрудника, которые созданы в вашей компании. Получить актуальный список идентификаторов дополнительных полей сотрудника вы можете в методе [Список дополнительных полей](GET /custom_properties).\n\nПоле `list_tags` сразу заводит сотрудника в теги, а вместе с тегами — и в чаты, к которым эти теги привязаны. У гостя теги не назначаются вовсе: ответ приходит успешный, а `list_tags` в нём пустой.\n\nЧерез параметр `chat_ids` сотрудника можно сразу добавить в указанные чаты. Чтобы создать гостя, передайте `role: \"guest\"` — для этой роли `chat_ids` обязателен и должен содержать ровно один активный чат, в который у токена есть право добавлять участников. При нарушении правил гостевого доступа возвращается `400` с ошибкой по полю `chat_ids`.\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `user: object` (required)\n - `first_name: string` (max length: 255) — Имя. Пример: `\"Олег\"`\n - `last_name: string` (max length: 255) — Фамилия. Пример: `\"Петров\"`\n - `email: string` (required, max length: 255) — Электронная почта. Пример: `\"olegp@example.com\"`\n - `phone_number: string` (max length: 255) — Телефон. Пример: `\"+79001234567\"`\n - `nickname: string` (max length: 255) — Имя пользователя. Пример: `\"olegpetrov\"`\n - `department: string` (max length: 255) — Департамент. Пример: `\"Продукт\"`\n - `title: string` — Должность. Пример: `\"CIO\"`\n - `role: string` — Уровень доступа\n Значения: `admin` — Администратор, `user` — Сотрудник, `multi_guest` — Мульти-гость, `guest` — Гость\n - `suspended: boolean` (default: false) — Деактивация пользователя. Пример: `false`\n - `list_tags: array of string` — Массив названий тегов, привязываемых к сотруднику. Значение, которое не является массивом непустых строк, игнорируется. Пример: `[\"Product\",\"Design\"]`\n - `chat_ids: array of integer` — Идентификаторы чатов, в которые сотрудник будет добавлен сразу при создании. Для роли `guest` параметр обязателен и должен содержать ровно один активный чат. Пример: `[12345]`\n - `custom_properties: array of object` — Задаваемые дополнительные поля\n - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678`\n - `value: string` (required, max length: 768) — Устанавливаемое значение. Пример: `\"Санкт-Петербург\"`\n- `skip_email_notify: boolean` (default: false) — Пропуск этапа отправки приглашения сотруднику. Сотруднику не будет отправлено письмо на электронную почту с приглашением создать аккаунт. Полезно при предварительном создании аккаунтов перед входом через SSO. Пример: `false`\n\n### Пример\n\n```json\n{\n \"user\": {\n \"first_name\": \"Олег\",\n \"last_name\": \"Петров\",\n \"email\": \"olegp@example.com\",\n \"phone_number\": \"+79001234567\",\n \"nickname\": \"olegpetrov\",\n \"department\": \"Продукт\",\n \"title\": \"CIO\",\n \"role\": \"user\",\n \"list_tags\": [\n \"Product\",\n \"Design\"\n ],\n \"chat_ids\": [\n 12345\n ],\n \"custom_properties\": [\n {\n \"id\": 1678,\n \"value\": \"Санкт-Петербург\"\n }\n ]\n }\n}\n```\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/users\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"user\": {\n \"first_name\": \"Олег\",\n \"last_name\": \"Петров\",\n \"email\": \"olegp@example.com\",\n \"phone_number\": \"+79001234567\",\n \"nickname\": \"olegpetrov\",\n \"department\": \"Продукт\",\n \"title\": \"CIO\",\n \"role\": \"user\",\n \"list_tags\": [\n \"Product\",\n \"Design\"\n ],\n \"chat_ids\": [\n 12345\n ],\n \"custom_properties\": [\n {\n \"id\": 1678,\n \"value\": \"Санкт-Петербург\"\n }\n ]\n }\n}'\n```\n\n## Ответы\n\n### 201: The request has succeeded and a new resource has been created as a result.\n\n**Схема ответа:**\n\n- `data: object` (required) — Сотрудник\n - `id: integer, int32` (required) — Идентификатор пользователя. Пример: `12`\n - `first_name: string` (required, nullable, max length: 255) — Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`). Пример: `\"Олег\"`\n - `last_name: string` (required, nullable, max length: 255) — Фамилия. Если не заполнена, возвращается `null` или пустая строка. Пример: `\"Петров\"`\n - `nickname: string` (required, max length: 255) — Имя пользователя. Пример: `\"olegpetrov\"`\n - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `\"olegp@example.com\"`\n - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `\"+79001234567\"`\n - `department: string` (required, nullable, max length: 255) — Департамент. Если не указан, возвращается `null` или пустая строка. Пример: `\"Продукт\"`\n - `title: string` (required, nullable) — Должность. Если не указана, возвращается `null` или пустая строка. Пример: `\"CIO\"`\n - `role: string` (required) — Уровень доступа\n Значения: `admin` — Администратор, `user` — Сотрудник, `multi_guest` — Мульти-гость, `guest` — Гость\n - `suspended: boolean` (required) — Деактивация пользователя. Пример: `false`\n - `invite_status: string` (required) — Статус приглашения\n Значения: `confirmed` — Принято, `sent` — Отправлено\n - `inviter_id: integer, int32` (required, nullable) — Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён. Пример: `185`\n - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Мульти-гостю в чужой карточке приходит пустым. Пример: `[\"Product\",\"Design\"]`\n - `custom_properties: array of object` (required) — Дополнительные поля сотрудника\n - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678`\n - `name: string` (required, max length: 32) — Название поля. Пример: `\"Город\"`\n - `data_type: string` (required) — Тип поля\n Значения: `string` — Строковое значение, `number` — Числовое значение, `date` — Дата, `link` — Ссылка\n - `value: string` (required, nullable, max length: 768) — Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601. Пример: `\"Санкт-Петербург\"`\n - `user_status: object` (required) — Статус. `null`, если у сотрудника не установлен статус.\n - `emoji: string` (required) — Emoji символ статуса. Пример: `\"🎮\"`\n - `title: string` (required, max length: 50) — Текст статуса. Пример: `\"Очень занят\"`\n - `expires_at: date-time` (required, nullable) — Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически. Пример: `\"2024-04-08T10:00:00.000Z\"`\n - `is_away: boolean` (required) — Режим «Нет на месте». Пример: `false`\n - `away_message: object` (required, nullable) — Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.\n - `text: string` (required, max length: 1024) — Текст сообщения. Пример: `\"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"`\n - `bot: boolean` (required) — Является ботом. Пример: `false`\n - `sso: boolean` (required) — Использует ли пользователь SSO. Пример: `false`\n - `created_at: date-time` (required) — Дата создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2020-06-08T09:32:57.000Z\"`\n - `last_activity_at: date-time` (required, nullable) — Дата последней активности пользователя (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если сотрудник ещё ни разу не заходил в Пачку — в этом случае `invite_status` возвращает `sent`. Пример: `\"2025-01-20T13:40:07.000Z\"`\n - `time_zone: string` (required, nullable, max length: 32) — Часовой пояс пользователя. `null`, если сотрудник не задал личный часовой пояс — тогда применяется часовой пояс компании. Пример: `\"Europe/Moscow\"`\n - `image_url: string` (required, nullable) — Ссылка на скачивание аватарки пользователя. `null`, если аватарка не загружена. Пример: `\"https://app.pachca.com/users/12/photo.jpg\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 12,\n \"first_name\": \"Олег\",\n \"last_name\": \"Петров\",\n \"nickname\": \"olegpetrov\",\n \"email\": \"olegp@example.com\",\n \"phone_number\": \"+79001234567\",\n \"department\": \"Продукт\",\n \"title\": \"CIO\",\n \"role\": \"admin\",\n \"suspended\": false,\n \"invite_status\": \"confirmed\",\n \"inviter_id\": 185,\n \"list_tags\": [\n \"Product\",\n \"Design\"\n ],\n \"custom_properties\": [\n {\n \"id\": 1678,\n \"name\": \"Город\",\n \"data_type\": \"string\",\n \"value\": \"Санкт-Петербург\"\n }\n ],\n \"user_status\": {\n \"emoji\": \"🎮\",\n \"title\": \"Очень занят\",\n \"expires_at\": \"2024-04-08T10:00:00.000Z\",\n \"is_away\": false,\n \"away_message\": {\n \"text\": \"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"\n }\n },\n \"bot\": false,\n \"sso\": false,\n \"created_at\": \"2020-06-08T09:32:57.000Z\",\n \"last_activity_at\": \"2025-01-20T13:40:07.000Z\",\n \"time_zone\": \"Europe/Moscow\",\n \"image_url\": \"https://app.pachca.com/users/12/photo.jpg\"\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 409: The request conflicts with the current state of the server.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/users","summary":"Список сотрудников","scope":"users:read","plan":null,"auth":true,"paginated":true,"command":"pachca users list","docLink":"https://dev.pachca.com/api/users/list","describe":"# GET /users — Список сотрудников\n\n> **Скоуп:** `users:read`\n\n> Пагинация: добавьте `--all` для автоматического обхода страниц\n\n## Параметры\n\n- `query` — query: Поисковая фраза для фильтрации результатов. Поиск работает по полям: `first_name` (имя), `last_name` (фамилия), `email` (электронная почта), `phone_number` (телефон) и `nickname` (никнейм).\n- `limit` — query: Количество возвращаемых сущностей за один запрос\n- `cursor` — query: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n## Эквивалентная команда\n\n```bash\n# Добавьте --all для автоматической пагинации\npachca users list \\\n --query=Олег \\\n --limit=1 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/users/list\nПолная справка: `pachca api GET /users --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/users","description":"Список сотрудников\n\nВсе сотрудники пространства, кроме удалённых. Приостановленные приходят вместе с остальными и отличаются полем `suspended`.\n\nБоты в пространстве — тоже сотрудники и приходят в общем списке с `bot: true`. Но из выдачи по `query` они исключены: чтобы найти бота по имени, перебирайте страницы без поискового запроса или пользуйтесь методом [Список ботов](GET /bots).\n\nМульти-гостю метод отдаёт не всё пространство, а тех, кого он видит в интерфейсе: его самого, участников общих с ним чатов вместе с ботами и публичных ботов. Треды и архивные чаты общими не считаются.\n\nПочта и телефон приходят `null`, если в пространстве выключен показ персональных данных, а вызывающий не администратор. Мульти-гостю они всегда приходят `null`.\n\nПоиск по `query` может не уложиться по времени: тогда метод отвечает `504` с кодом `timeout`, и запрос стоит сузить.\n\nКарточку одного сотрудника отдаёт [Информация о сотруднике](GET /users/{id}), свою — [Свой профиль](GET /profile).","parameters":[{"name":"query","in":"query","description":"Поисковая фраза для фильтрации результатов. Поиск работает по полям: `first_name` (имя), `last_name` (фамилия), `email` (электронная почта), `phone_number` (телефон) и `nickname` (никнейм).","required":false,"schema":{"type":"string","example":"Олег"},"example":"Олег","explode":false},{"name":"limit","in":"query","description":"Количество возвращаемых сущностей за один запрос","required":false,"schema":{"type":"integer","format":"int32","default":50,"example":1,"minimum":1,"maximum":50},"example":1,"explode":false},{"name":"cursor","in":"query","description":"Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)","required":false,"schema":{"type":"string","example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9"},"example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9","explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными и пагинацией","required":["data","meta"],"properties":{"data":{"type":"array","items":{"type":"object","description":"Сотрудник","required":["id","first_name","last_name","nickname","email","phone_number","department","title","role","suspended","invite_status","inviter_id","list_tags","custom_properties","user_status","bot","sso","created_at","last_activity_at","time_zone","image_url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор пользователя","example":12},"first_name":{"type":"string","description":"Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`).","example":"Олег","nullable":true,"maxLength":255},"last_name":{"type":"string","description":"Фамилия. Если не заполнена, возвращается `null` или пустая строка.","example":"Петров","nullable":true,"maxLength":255},"nickname":{"type":"string","description":"Имя пользователя","example":"olegpetrov","maxLength":255},"email":{"type":"string","description":"Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда.","example":"olegp@example.com","nullable":true,"maxLength":255},"phone_number":{"type":"string","description":"Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда.","example":"+79001234567","nullable":true,"maxLength":255},"department":{"type":"string","description":"Департамент. Если не указан, возвращается `null` или пустая строка.","example":"Продукт","nullable":true,"maxLength":255},"title":{"type":"string","description":"Должность. Если не указана, возвращается `null` или пустая строка.","example":"CIO","nullable":true},"role":{"description":"Уровень доступа","example":"admin","allOf":[{"type":"string","description":"Роль пользователя в системе","enum":["admin","user","multi_guest","guest"],"x-enum-descriptions":{"admin":"Администратор","user":"Сотрудник","multi_guest":"Мульти-гость","guest":"Гость"},"$ref":"#/components/schemas/UserRole"}]},"suspended":{"type":"boolean","description":"Деактивация пользователя","example":false},"invite_status":{"description":"Статус приглашения","example":"confirmed","allOf":[{"type":"string","description":"Статус приглашения пользователя","enum":["confirmed","sent"],"x-enum-descriptions":{"confirmed":"Принято","sent":"Отправлено"},"$ref":"#/components/schemas/InviteStatus"}]},"inviter_id":{"type":"integer","format":"int32","description":"Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён.","example":185,"nullable":true},"list_tags":{"type":"array","description":"Массив тегов, привязанных к сотруднику. Мульти-гостю в чужой карточке приходит пустым.","example":["Product","Design"],"items":{"type":"string"}},"custom_properties":{"type":"array","description":"Дополнительные поля сотрудника","items":{"type":"object","description":"Дополнительное поле","required":["id","name","data_type","value"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор поля","example":1678},"name":{"type":"string","description":"Название поля","example":"Город","maxLength":32},"data_type":{"description":"Тип поля","example":"string","allOf":[{"type":"string","description":"Тип данных дополнительного поля","enum":["string","number","date","link"],"x-enum-descriptions":{"string":"Строковое значение","number":"Числовое значение","date":"Дата","link":"Ссылка"},"$ref":"#/components/schemas/CustomPropertyDataType"}]},"value":{"type":"string","description":"Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601.","example":"Санкт-Петербург","nullable":true,"maxLength":768}},"$ref":"#/components/schemas/CustomProperty"}},"user_status":{"type":"object","description":"Статус. `null`, если у сотрудника не установлен статус.","nullable":true,"allOf":[{"type":"object","description":"Статус пользователя","required":["emoji","title","expires_at","is_away","away_message"],"properties":{"emoji":{"type":"string","description":"Emoji символ статуса","example":"🎮"},"title":{"type":"string","description":"Текст статуса","example":"Очень занят","maxLength":50},"expires_at":{"type":"string","format":"date-time","description":"Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически.","example":"2024-04-08T10:00:00.000Z","nullable":true},"is_away":{"type":"boolean","description":"Режим «Нет на месте»","example":false},"away_message":{"type":"object","description":"Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.","required":["text"],"nullable":true,"properties":{"text":{"type":"string","description":"Текст сообщения","example":"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.","maxLength":1024}}}},"$ref":"#/components/schemas/UserStatus"}]},"bot":{"type":"boolean","description":"Является ботом","example":false},"sso":{"type":"boolean","description":"Использует ли пользователь SSO","example":false},"created_at":{"type":"string","format":"date-time","description":"Дата создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2020-06-08T09:32:57.000Z"},"last_activity_at":{"type":"string","format":"date-time","description":"Дата последней активности пользователя (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если сотрудник ещё ни разу не заходил в Пачку — в этом случае `invite_status` возвращает `sent`.","example":"2025-01-20T13:40:07.000Z","nullable":true},"time_zone":{"type":"string","description":"Часовой пояс пользователя. `null`, если сотрудник не задал личный часовой пояс — тогда применяется часовой пояс компании.","example":"Europe/Moscow","nullable":true,"maxLength":32},"image_url":{"type":"string","description":"Ссылка на скачивание аватарки пользователя. `null`, если аватарка не загружена.","example":"https://app.pachca.com/users/12/photo.jpg","nullable":true}},"$ref":"#/components/schemas/User"}},"meta":{"type":"object","description":"Метаданные пагинации","required":["paginate"],"properties":{"paginate":{"type":"object","description":"Вспомогательная информация","required":["next_page"],"properties":{"next_page":{"type":"string","description":"Курсор пагинации следующей страницы","example":"eyJxZCO2MiwiZGlyIjomSNYjIn3"},"prev_page":{"type":"string","description":"Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка.","example":"eyJxZCO2MiwiZGlyIjoiYXNjIn0"},"has_next":{"type":"boolean","description":"Есть ли ещё данные на следующей странице. На последней странице — `false`.","example":true},"has_prev":{"type":"boolean","description":"Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`.","example":false}}}},"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"504":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"users:read","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":true},"docs":"# Список сотрудников\n\n**Метод**: `GET`\n\n**Путь**: `/users`\n\n> **Скоуп:** `users:read`\n\nВсе сотрудники пространства, кроме удалённых. Приостановленные приходят вместе с остальными и отличаются полем `suspended`.\n\nБоты в пространстве — тоже сотрудники и приходят в общем списке с `bot: true`. Но из выдачи по `query` они исключены: чтобы найти бота по имени, перебирайте страницы без поискового запроса или пользуйтесь методом [Список ботов](GET /bots).\n\nМульти-гостю метод отдаёт не всё пространство, а тех, кого он видит в интерфейсе: его самого, участников общих с ним чатов вместе с ботами и публичных ботов. Треды и архивные чаты общими не считаются.\n\nПочта и телефон приходят `null`, если в пространстве выключен показ персональных данных, а вызывающий не администратор. Мульти-гостю они всегда приходят `null`.\n\nПоиск по `query` может не уложиться по времени: тогда метод отвечает `504` с кодом `timeout`, и запрос стоит сузить.\n\nКарточку одного сотрудника отдаёт [Информация о сотруднике](GET /users/{id}), свою — [Свой профиль](GET /profile).\n\n## Параметры\n\n### Query параметры\n\n- `query: string` — Поисковая фраза для фильтрации результатов. Поиск работает по полям: `first_name` (имя), `last_name` (фамилия), `email` (электронная почта), `phone_number` (телефон) и `nickname` (никнейм).\n- `limit: integer, int32` (default: 50) — Количество возвращаемых сущностей за один запрос\n- `cursor: string` — Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n\n## Пример запроса\n\n```bash\n# Для получения следующей страницы используйте cursor из meta.paginate.next_page\ncurl \"https://api.pachca.com/api/shared/v1/users?query=Олег&limit=1\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: array of object` (required)\n - `id: integer, int32` (required) — Идентификатор пользователя. Пример: `12`\n - `first_name: string` (required, nullable, max length: 255) — Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`). Пример: `\"Олег\"`\n - `last_name: string` (required, nullable, max length: 255) — Фамилия. Если не заполнена, возвращается `null` или пустая строка. Пример: `\"Петров\"`\n - `nickname: string` (required, max length: 255) — Имя пользователя. Пример: `\"olegpetrov\"`\n - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `\"olegp@example.com\"`\n - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `\"+79001234567\"`\n - `department: string` (required, nullable, max length: 255) — Департамент. Если не указан, возвращается `null` или пустая строка. Пример: `\"Продукт\"`\n - `title: string` (required, nullable) — Должность. Если не указана, возвращается `null` или пустая строка. Пример: `\"CIO\"`\n - `role: string` (required) — Уровень доступа\n Значения: `admin` — Администратор, `user` — Сотрудник, `multi_guest` — Мульти-гость, `guest` — Гость\n - `suspended: boolean` (required) — Деактивация пользователя. Пример: `false`\n - `invite_status: string` (required) — Статус приглашения\n Значения: `confirmed` — Принято, `sent` — Отправлено\n - `inviter_id: integer, int32` (required, nullable) — Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён. Пример: `185`\n - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Мульти-гостю в чужой карточке приходит пустым. Пример: `[\"Product\",\"Design\"]`\n - `custom_properties: array of object` (required) — Дополнительные поля сотрудника\n - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678`\n - `name: string` (required, max length: 32) — Название поля. Пример: `\"Город\"`\n - `data_type: string` (required) — Тип поля\n Значения: `string` — Строковое значение, `number` — Числовое значение, `date` — Дата, `link` — Ссылка\n - `value: string` (required, nullable, max length: 768) — Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601. Пример: `\"Санкт-Петербург\"`\n - `user_status: object` (required) — Статус. `null`, если у сотрудника не установлен статус.\n - `emoji: string` (required) — Emoji символ статуса. Пример: `\"🎮\"`\n - `title: string` (required, max length: 50) — Текст статуса. Пример: `\"Очень занят\"`\n - `expires_at: date-time` (required, nullable) — Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически. Пример: `\"2024-04-08T10:00:00.000Z\"`\n - `is_away: boolean` (required) — Режим «Нет на месте». Пример: `false`\n - `away_message: object` (required, nullable) — Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.\n - `text: string` (required, max length: 1024) — Текст сообщения. Пример: `\"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"`\n - `bot: boolean` (required) — Является ботом. Пример: `false`\n - `sso: boolean` (required) — Использует ли пользователь SSO. Пример: `false`\n - `created_at: date-time` (required) — Дата создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2020-06-08T09:32:57.000Z\"`\n - `last_activity_at: date-time` (required, nullable) — Дата последней активности пользователя (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если сотрудник ещё ни разу не заходил в Пачку — в этом случае `invite_status` возвращает `sent`. Пример: `\"2025-01-20T13:40:07.000Z\"`\n - `time_zone: string` (required, nullable, max length: 32) — Часовой пояс пользователя. `null`, если сотрудник не задал личный часовой пояс — тогда применяется часовой пояс компании. Пример: `\"Europe/Moscow\"`\n - `image_url: string` (required, nullable) — Ссылка на скачивание аватарки пользователя. `null`, если аватарка не загружена. Пример: `\"https://app.pachca.com/users/12/photo.jpg\"`\n- `meta: object` (required) — Метаданные пагинации\n - `paginate: object` (required) — Вспомогательная информация\n - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `\"eyJxZCO2MiwiZGlyIjomSNYjIn3\"`\n - `prev_page: string` — Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка. Пример: `\"eyJxZCO2MiwiZGlyIjoiYXNjIn0\"`\n - `has_next: boolean` — Есть ли ещё данные на следующей странице. На последней странице — `false`. Пример: `true`\n - `has_prev: boolean` — Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`. Пример: `false`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": [\n {\n \"id\": 12,\n \"first_name\": \"Олег\",\n \"last_name\": \"Петров\",\n \"nickname\": \"olegpetrov\",\n \"email\": \"olegp@example.com\",\n \"phone_number\": \"+79001234567\",\n \"department\": \"Продукт\",\n \"title\": \"CIO\",\n \"role\": \"admin\",\n \"suspended\": false,\n \"invite_status\": \"confirmed\",\n \"inviter_id\": 185,\n \"list_tags\": [\n \"Product\",\n \"Design\"\n ],\n \"custom_properties\": [\n {\n \"id\": 1678,\n \"name\": \"Город\",\n \"data_type\": \"string\",\n \"value\": \"Санкт-Петербург\"\n }\n ],\n \"user_status\": {\n \"emoji\": \"🎮\",\n \"title\": \"Очень занят\",\n \"expires_at\": \"2024-04-08T10:00:00.000Z\",\n \"is_away\": false,\n \"away_message\": {\n \"text\": \"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"\n }\n },\n \"bot\": false,\n \"sso\": false,\n \"created_at\": \"2020-06-08T09:32:57.000Z\",\n \"last_activity_at\": \"2025-01-20T13:40:07.000Z\",\n \"time_zone\": \"Europe/Moscow\",\n \"image_url\": \"https://app.pachca.com/users/12/photo.jpg\"\n }\n ],\n \"meta\": {\n \"paginate\": {\n \"next_page\": \"eyJxZCO2MiwiZGlyIjomSNYjIn3\",\n \"prev_page\": \"eyJxZCO2MiwiZGlyIjoiYXNjIn0\",\n \"has_next\": true,\n \"has_prev\": false\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 504: Server error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/users/{id}","summary":"Информация о сотруднике","scope":"users:read","plan":null,"auth":true,"paginated":false,"command":"pachca users get","docLink":"https://dev.pachca.com/api/users/get","describe":"# GET /users/{id} — Информация о сотруднике\n\n> **Скоуп:** `users:read`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор пользователя\n\n## Эквивалентная команда\n\n```bash\npachca users get 12 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/users/get\nПолная справка: `pachca api GET /users/{id} --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/users/{id}","description":"Информация о сотруднике\n\nКарточка сотрудника.\n\nПриостановленный сотрудник отдаётся с `suspended: true`, удалённый — `404`, как несуществующий. Бот тоже приходит сюда как сотрудник, с `bot: true`.\n\nМульти-гостю метод отдаёт только тех, кто приходит ему в [Список сотрудников](GET /users), а на остальных отвечает `404`.\n\nПочта и телефон приходят `null`, если в пространстве выключен показ персональных данных, а вызывающий не администратор. Мульти-гостю они всегда приходят `null`. Свою карточку сотрудник видит целиком — она же отдаётся методом [Свой профиль](GET /profile) и без скоупа `users:read`.","parameters":[{"name":"id","in":"path","description":"Идентификатор пользователя","required":true,"schema":{"type":"integer","format":"int32","example":12},"example":12}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Сотрудник","required":["id","first_name","last_name","nickname","email","phone_number","department","title","role","suspended","invite_status","inviter_id","list_tags","custom_properties","user_status","bot","sso","created_at","last_activity_at","time_zone","image_url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор пользователя","example":12},"first_name":{"type":"string","description":"Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`).","example":"Олег","nullable":true,"maxLength":255},"last_name":{"type":"string","description":"Фамилия. Если не заполнена, возвращается `null` или пустая строка.","example":"Петров","nullable":true,"maxLength":255},"nickname":{"type":"string","description":"Имя пользователя","example":"olegpetrov","maxLength":255},"email":{"type":"string","description":"Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда.","example":"olegp@example.com","nullable":true,"maxLength":255},"phone_number":{"type":"string","description":"Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда.","example":"+79001234567","nullable":true,"maxLength":255},"department":{"type":"string","description":"Департамент. Если не указан, возвращается `null` или пустая строка.","example":"Продукт","nullable":true,"maxLength":255},"title":{"type":"string","description":"Должность. Если не указана, возвращается `null` или пустая строка.","example":"CIO","nullable":true},"role":{"description":"Уровень доступа","example":"admin","allOf":[{"type":"string","description":"Роль пользователя в системе","enum":["admin","user","multi_guest","guest"],"x-enum-descriptions":{"admin":"Администратор","user":"Сотрудник","multi_guest":"Мульти-гость","guest":"Гость"},"$ref":"#/components/schemas/UserRole"}]},"suspended":{"type":"boolean","description":"Деактивация пользователя","example":false},"invite_status":{"description":"Статус приглашения","example":"confirmed","allOf":[{"type":"string","description":"Статус приглашения пользователя","enum":["confirmed","sent"],"x-enum-descriptions":{"confirmed":"Принято","sent":"Отправлено"},"$ref":"#/components/schemas/InviteStatus"}]},"inviter_id":{"type":"integer","format":"int32","description":"Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён.","example":185,"nullable":true},"list_tags":{"type":"array","description":"Массив тегов, привязанных к сотруднику. Мульти-гостю в чужой карточке приходит пустым.","example":["Product","Design"],"items":{"type":"string"}},"custom_properties":{"type":"array","description":"Дополнительные поля сотрудника","items":{"type":"object","description":"Дополнительное поле","required":["id","name","data_type","value"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор поля","example":1678},"name":{"type":"string","description":"Название поля","example":"Город","maxLength":32},"data_type":{"description":"Тип поля","example":"string","allOf":[{"type":"string","description":"Тип данных дополнительного поля","enum":["string","number","date","link"],"x-enum-descriptions":{"string":"Строковое значение","number":"Числовое значение","date":"Дата","link":"Ссылка"},"$ref":"#/components/schemas/CustomPropertyDataType"}]},"value":{"type":"string","description":"Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601.","example":"Санкт-Петербург","nullable":true,"maxLength":768}},"$ref":"#/components/schemas/CustomProperty"}},"user_status":{"type":"object","description":"Статус. `null`, если у сотрудника не установлен статус.","nullable":true,"allOf":[{"type":"object","description":"Статус пользователя","required":["emoji","title","expires_at","is_away","away_message"],"properties":{"emoji":{"type":"string","description":"Emoji символ статуса","example":"🎮"},"title":{"type":"string","description":"Текст статуса","example":"Очень занят","maxLength":50},"expires_at":{"type":"string","format":"date-time","description":"Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически.","example":"2024-04-08T10:00:00.000Z","nullable":true},"is_away":{"type":"boolean","description":"Режим «Нет на месте»","example":false},"away_message":{"type":"object","description":"Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.","required":["text"],"nullable":true,"properties":{"text":{"type":"string","description":"Текст сообщения","example":"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.","maxLength":1024}}}},"$ref":"#/components/schemas/UserStatus"}]},"bot":{"type":"boolean","description":"Является ботом","example":false},"sso":{"type":"boolean","description":"Использует ли пользователь SSO","example":false},"created_at":{"type":"string","format":"date-time","description":"Дата создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2020-06-08T09:32:57.000Z"},"last_activity_at":{"type":"string","format":"date-time","description":"Дата последней активности пользователя (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если сотрудник ещё ни разу не заходил в Пачку — в этом случае `invite_status` возвращает `sent`.","example":"2025-01-20T13:40:07.000Z","nullable":true},"time_zone":{"type":"string","description":"Часовой пояс пользователя. `null`, если сотрудник не задал личный часовой пояс — тогда применяется часовой пояс компании.","example":"Europe/Moscow","nullable":true,"maxLength":32},"image_url":{"type":"string","description":"Ссылка на скачивание аватарки пользователя. `null`, если аватарка не загружена.","example":"https://app.pachca.com/users/12/photo.jpg","nullable":true}},"$ref":"#/components/schemas/User"}}}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"users:read","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":false},"docs":"# Информация о сотруднике\n\n**Метод**: `GET`\n\n**Путь**: `/users/{id}`\n\n> **Скоуп:** `users:read`\n\nКарточка сотрудника.\n\nПриостановленный сотрудник отдаётся с `suspended: true`, удалённый — `404`, как несуществующий. Бот тоже приходит сюда как сотрудник, с `bot: true`.\n\nМульти-гостю метод отдаёт только тех, кто приходит ему в [Список сотрудников](GET /users), а на остальных отвечает `404`.\n\nПочта и телефон приходят `null`, если в пространстве выключен показ персональных данных, а вызывающий не администратор. Мульти-гостю они всегда приходят `null`. Свою карточку сотрудник видит целиком — она же отдаётся методом [Свой профиль](GET /profile) и без скоупа `users:read`.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор пользователя\n\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/users/12\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Сотрудник\n - `id: integer, int32` (required) — Идентификатор пользователя. Пример: `12`\n - `first_name: string` (required, nullable, max length: 255) — Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`). Пример: `\"Олег\"`\n - `last_name: string` (required, nullable, max length: 255) — Фамилия. Если не заполнена, возвращается `null` или пустая строка. Пример: `\"Петров\"`\n - `nickname: string` (required, max length: 255) — Имя пользователя. Пример: `\"olegpetrov\"`\n - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `\"olegp@example.com\"`\n - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `\"+79001234567\"`\n - `department: string` (required, nullable, max length: 255) — Департамент. Если не указан, возвращается `null` или пустая строка. Пример: `\"Продукт\"`\n - `title: string` (required, nullable) — Должность. Если не указана, возвращается `null` или пустая строка. Пример: `\"CIO\"`\n - `role: string` (required) — Уровень доступа\n Значения: `admin` — Администратор, `user` — Сотрудник, `multi_guest` — Мульти-гость, `guest` — Гость\n - `suspended: boolean` (required) — Деактивация пользователя. Пример: `false`\n - `invite_status: string` (required) — Статус приглашения\n Значения: `confirmed` — Принято, `sent` — Отправлено\n - `inviter_id: integer, int32` (required, nullable) — Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён. Пример: `185`\n - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Мульти-гостю в чужой карточке приходит пустым. Пример: `[\"Product\",\"Design\"]`\n - `custom_properties: array of object` (required) — Дополнительные поля сотрудника\n - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678`\n - `name: string` (required, max length: 32) — Название поля. Пример: `\"Город\"`\n - `data_type: string` (required) — Тип поля\n Значения: `string` — Строковое значение, `number` — Числовое значение, `date` — Дата, `link` — Ссылка\n - `value: string` (required, nullable, max length: 768) — Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601. Пример: `\"Санкт-Петербург\"`\n - `user_status: object` (required) — Статус. `null`, если у сотрудника не установлен статус.\n - `emoji: string` (required) — Emoji символ статуса. Пример: `\"🎮\"`\n - `title: string` (required, max length: 50) — Текст статуса. Пример: `\"Очень занят\"`\n - `expires_at: date-time` (required, nullable) — Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически. Пример: `\"2024-04-08T10:00:00.000Z\"`\n - `is_away: boolean` (required) — Режим «Нет на месте». Пример: `false`\n - `away_message: object` (required, nullable) — Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.\n - `text: string` (required, max length: 1024) — Текст сообщения. Пример: `\"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"`\n - `bot: boolean` (required) — Является ботом. Пример: `false`\n - `sso: boolean` (required) — Использует ли пользователь SSO. Пример: `false`\n - `created_at: date-time` (required) — Дата создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2020-06-08T09:32:57.000Z\"`\n - `last_activity_at: date-time` (required, nullable) — Дата последней активности пользователя (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если сотрудник ещё ни разу не заходил в Пачку — в этом случае `invite_status` возвращает `sent`. Пример: `\"2025-01-20T13:40:07.000Z\"`\n - `time_zone: string` (required, nullable, max length: 32) — Часовой пояс пользователя. `null`, если сотрудник не задал личный часовой пояс — тогда применяется часовой пояс компании. Пример: `\"Europe/Moscow\"`\n - `image_url: string` (required, nullable) — Ссылка на скачивание аватарки пользователя. `null`, если аватарка не загружена. Пример: `\"https://app.pachca.com/users/12/photo.jpg\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 12,\n \"first_name\": \"Олег\",\n \"last_name\": \"Петров\",\n \"nickname\": \"olegpetrov\",\n \"email\": \"olegp@example.com\",\n \"phone_number\": \"+79001234567\",\n \"department\": \"Продукт\",\n \"title\": \"CIO\",\n \"role\": \"admin\",\n \"suspended\": false,\n \"invite_status\": \"confirmed\",\n \"inviter_id\": 185,\n \"list_tags\": [\n \"Product\",\n \"Design\"\n ],\n \"custom_properties\": [\n {\n \"id\": 1678,\n \"name\": \"Город\",\n \"data_type\": \"string\",\n \"value\": \"Санкт-Петербург\"\n }\n ],\n \"user_status\": {\n \"emoji\": \"🎮\",\n \"title\": \"Очень занят\",\n \"expires_at\": \"2024-04-08T10:00:00.000Z\",\n \"is_away\": false,\n \"away_message\": {\n \"text\": \"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"\n }\n },\n \"bot\": false,\n \"sso\": false,\n \"created_at\": \"2020-06-08T09:32:57.000Z\",\n \"last_activity_at\": \"2025-01-20T13:40:07.000Z\",\n \"time_zone\": \"Europe/Moscow\",\n \"image_url\": \"https://app.pachca.com/users/12/photo.jpg\"\n }\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"PUT","path":"/users/{id}","summary":"Редактирование сотрудника","scope":"users:update","plan":null,"auth":true,"paginated":false,"command":"pachca users update","docLink":"https://dev.pachca.com/api/users/update","describe":"# PUT /users/{id} — Редактирование сотрудника\n\n> **Скоуп:** `users:update`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор пользователя\n\n## Тело запроса\n\n- `user: object` (required) — Собранный объект параметров редактируемого сотрудника\n - `first_name: string` (max length: 255) — Имя\n - `last_name: string` (max length: 255) — Фамилия\n - `email: string` (max length: 255) — Электронная почта\n - `phone_number: string` (max length: 255) — Телефон\n - `nickname: string` (max length: 255) — Имя пользователя\n - `department: string` (max length: 255) — Департамент\n - `title: string` — Должность\n - `role: string` — Уровень доступа\n Значения: `admin` — Администратор, `user` — Сотрудник, `multi_guest` — Мульти-гость\n - `suspended: boolean` (default: false) — Деактивация пользователя\n - `list_tags: array of string` — Массив названий тегов, привязываемых к сотруднику. Список заменяет прежний целиком, пустой снимает все теги. Значение, которое не является массивом непустых строк, игнорируется: теги сотрудника не меняются.\n - `custom_properties: array of object` — Задаваемые дополнительные поля\n - `id: integer, int32` (required) — Идентификатор поля\n - `value: string` (required, max length: 768) — Устанавливаемое значение\n\n## Эквивалентная команда\n\n```bash\npachca users update 12 \\\n --first-name=Олег \\\n --last-name=Петров \\\n --email=olegpetrov@example.com \\\n --phone-number=+79001234567 \\\n --nickname=olegpetrov \\\n --department='Отдел разработки' \\\n --title='Старший разработчик' \\\n --role=user \\\n --list-tags='[\"Product\",\"Design\"]' \\\n --custom-properties='[{\"id\":1678,\"value\":\"Санкт-Петербург\"}]' \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/users/update\nПолная справка: `pachca api PUT /users/{id} --docs` · схема: `--spec`\n","spec":{"method":"PUT","path":"/users/{id}","description":"Редактирование сотрудника\n\nМеняет карточку сотрудника: перезаписываются только переданные поля. Идентификаторы дополнительных полей отдаёт [Список дополнительных полей](GET /custom_properties).\n\nПоле `list_tags` заменяет набор тегов целиком, поэтому присылайте вместе с новым тегом и те, что сохраняются. Снятый тег выводит сотрудника из чатов, куда его привёл этот тег, а имя, которого в пространстве ещё нет, создаёт новый тег вместе с назначением.\n\n`suspended: true` приостанавливает сотрудника: он теряет доступ, но остаётся в чатах, тегах и задачах, а `suspended: false` возвращает его обратно. Насовсем убирает сотрудника [Удаление сотрудника](DELETE /users/{id}).\n\nВладельца пространства редактирует только он сам, а его роль меняется лишь на администратора. Перевести обычного сотрудника в гостя нельзя — в обоих случаях ответ `403`.\n\nНезнакомое значение роли метод молча пропускает: ответ приходит успешный, а роль остаётся прежней.\n\nУ бота ник должен оканчиваться на `_bot` и быть уникальным в пространстве, иначе метод отвечает `422` с ошибкой на поле `nickname`: `invalid` или `already_exists`. Прежний ник бота проверяется, только когда его меняют.","parameters":[{"name":"id","in":"path","description":"Идентификатор пользователя","required":true,"schema":{"type":"integer","format":"int32","example":12},"example":12}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на редактирование сотрудника","required":["user"],"properties":{"user":{"type":"object","description":"Собранный объект параметров редактируемого сотрудника","properties":{"first_name":{"type":"string","description":"Имя","example":"Олег","maxLength":255},"last_name":{"type":"string","description":"Фамилия","example":"Петров","maxLength":255},"email":{"type":"string","description":"Электронная почта","example":"olegpetrov@example.com","maxLength":255},"phone_number":{"type":"string","description":"Телефон","example":"+79001234567","maxLength":255},"nickname":{"type":"string","description":"Имя пользователя","example":"olegpetrov","maxLength":255},"department":{"type":"string","description":"Департамент","example":"Отдел разработки","maxLength":255},"title":{"type":"string","description":"Должность","example":"Старший разработчик"},"role":{"description":"Уровень доступа","example":"user","allOf":[{"type":"string","description":"Роль пользователя, допустимая при редактировании сотрудника. Роль `guest` недоступна для установки через API при редактировании — назначить роль `guest` можно только при создании сотрудника (см. `UserCreateRole`).","enum":["admin","user","multi_guest"],"x-enum-descriptions":{"admin":"Администратор","user":"Сотрудник","multi_guest":"Мульти-гость"},"$ref":"#/components/schemas/UserRoleInput"}]},"suspended":{"type":"boolean","description":"Деактивация пользователя","default":false,"example":false},"list_tags":{"type":"array","description":"Массив названий тегов, привязываемых к сотруднику. Список заменяет прежний целиком, пустой снимает все теги. Значение, которое не является массивом непустых строк, игнорируется: теги сотрудника не меняются.","example":["Product","Design"],"items":{"type":"string"}},"custom_properties":{"type":"array","description":"Задаваемые дополнительные поля","items":{"type":"object","required":["id","value"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор поля","example":1678},"value":{"type":"string","description":"Устанавливаемое значение","example":"Санкт-Петербург","maxLength":768}}}}}}},"$ref":"#/components/schemas/UserUpdateRequest"}}}},"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Сотрудник","required":["id","first_name","last_name","nickname","email","phone_number","department","title","role","suspended","invite_status","inviter_id","list_tags","custom_properties","user_status","bot","sso","created_at","last_activity_at","time_zone","image_url"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор пользователя","example":12},"first_name":{"type":"string","description":"Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`).","example":"Олег","nullable":true,"maxLength":255},"last_name":{"type":"string","description":"Фамилия. Если не заполнена, возвращается `null` или пустая строка.","example":"Петров","nullable":true,"maxLength":255},"nickname":{"type":"string","description":"Имя пользователя","example":"olegpetrov","maxLength":255},"email":{"type":"string","description":"Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда.","example":"olegp@example.com","nullable":true,"maxLength":255},"phone_number":{"type":"string","description":"Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда.","example":"+79001234567","nullable":true,"maxLength":255},"department":{"type":"string","description":"Департамент. Если не указан, возвращается `null` или пустая строка.","example":"Продукт","nullable":true,"maxLength":255},"title":{"type":"string","description":"Должность. Если не указана, возвращается `null` или пустая строка.","example":"CIO","nullable":true},"role":{"description":"Уровень доступа","example":"admin","allOf":[{"type":"string","description":"Роль пользователя в системе","enum":["admin","user","multi_guest","guest"],"x-enum-descriptions":{"admin":"Администратор","user":"Сотрудник","multi_guest":"Мульти-гость","guest":"Гость"},"$ref":"#/components/schemas/UserRole"}]},"suspended":{"type":"boolean","description":"Деактивация пользователя","example":false},"invite_status":{"description":"Статус приглашения","example":"confirmed","allOf":[{"type":"string","description":"Статус приглашения пользователя","enum":["confirmed","sent"],"x-enum-descriptions":{"confirmed":"Принято","sent":"Отправлено"},"$ref":"#/components/schemas/InviteStatus"}]},"inviter_id":{"type":"integer","format":"int32","description":"Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён.","example":185,"nullable":true},"list_tags":{"type":"array","description":"Массив тегов, привязанных к сотруднику. Мульти-гостю в чужой карточке приходит пустым.","example":["Product","Design"],"items":{"type":"string"}},"custom_properties":{"type":"array","description":"Дополнительные поля сотрудника","items":{"type":"object","description":"Дополнительное поле","required":["id","name","data_type","value"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор поля","example":1678},"name":{"type":"string","description":"Название поля","example":"Город","maxLength":32},"data_type":{"description":"Тип поля","example":"string","allOf":[{"type":"string","description":"Тип данных дополнительного поля","enum":["string","number","date","link"],"x-enum-descriptions":{"string":"Строковое значение","number":"Числовое значение","date":"Дата","link":"Ссылка"},"$ref":"#/components/schemas/CustomPropertyDataType"}]},"value":{"type":"string","description":"Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601.","example":"Санкт-Петербург","nullable":true,"maxLength":768}},"$ref":"#/components/schemas/CustomProperty"}},"user_status":{"type":"object","description":"Статус. `null`, если у сотрудника не установлен статус.","nullable":true,"allOf":[{"type":"object","description":"Статус пользователя","required":["emoji","title","expires_at","is_away","away_message"],"properties":{"emoji":{"type":"string","description":"Emoji символ статуса","example":"🎮"},"title":{"type":"string","description":"Текст статуса","example":"Очень занят","maxLength":50},"expires_at":{"type":"string","format":"date-time","description":"Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически.","example":"2024-04-08T10:00:00.000Z","nullable":true},"is_away":{"type":"boolean","description":"Режим «Нет на месте»","example":false},"away_message":{"type":"object","description":"Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.","required":["text"],"nullable":true,"properties":{"text":{"type":"string","description":"Текст сообщения","example":"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.","maxLength":1024}}}},"$ref":"#/components/schemas/UserStatus"}]},"bot":{"type":"boolean","description":"Является ботом","example":false},"sso":{"type":"boolean","description":"Использует ли пользователь SSO","example":false},"created_at":{"type":"string","format":"date-time","description":"Дата создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2020-06-08T09:32:57.000Z"},"last_activity_at":{"type":"string","format":"date-time","description":"Дата последней активности пользователя (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если сотрудник ещё ни разу не заходил в Пачку — в этом случае `invite_status` возвращает `sent`.","example":"2025-01-20T13:40:07.000Z","nullable":true},"time_zone":{"type":"string","description":"Часовой пояс пользователя. `null`, если сотрудник не задал личный часовой пояс — тогда применяется часовой пояс компании.","example":"Europe/Moscow","nullable":true,"maxLength":32},"image_url":{"type":"string","description":"Ссылка на скачивание аватарки пользователя. `null`, если аватарка не загружена.","example":"https://app.pachca.com/users/12/photo.jpg","nullable":true}},"$ref":"#/components/schemas/User"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"users:update","scopeRoles":["owner","admin"]},"paginated":false},"docs":"# Редактирование сотрудника\n\n**Метод**: `PUT`\n\n**Путь**: `/users/{id}`\n\n> **Скоуп:** `users:update`\n\nМеняет карточку сотрудника: перезаписываются только переданные поля. Идентификаторы дополнительных полей отдаёт [Список дополнительных полей](GET /custom_properties).\n\nПоле `list_tags` заменяет набор тегов целиком, поэтому присылайте вместе с новым тегом и те, что сохраняются. Снятый тег выводит сотрудника из чатов, куда его привёл этот тег, а имя, которого в пространстве ещё нет, создаёт новый тег вместе с назначением.\n\n`suspended: true` приостанавливает сотрудника: он теряет доступ, но остаётся в чатах, тегах и задачах, а `suspended: false` возвращает его обратно. Насовсем убирает сотрудника [Удаление сотрудника](DELETE /users/{id}).\n\nВладельца пространства редактирует только он сам, а его роль меняется лишь на администратора. Перевести обычного сотрудника в гостя нельзя — в обоих случаях ответ `403`.\n\nНезнакомое значение роли метод молча пропускает: ответ приходит успешный, а роль остаётся прежней.\n\nУ бота ник должен оканчиваться на `_bot` и быть уникальным в пространстве, иначе метод отвечает `422` с ошибкой на поле `nickname`: `invalid` или `already_exists`. Прежний ник бота проверяется, только когда его меняют.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор пользователя\n\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `user: object` (required) — Собранный объект параметров редактируемого сотрудника\n - `first_name: string` (max length: 255) — Имя. Пример: `\"Олег\"`\n - `last_name: string` (max length: 255) — Фамилия. Пример: `\"Петров\"`\n - `email: string` (max length: 255) — Электронная почта. Пример: `\"olegpetrov@example.com\"`\n - `phone_number: string` (max length: 255) — Телефон. Пример: `\"+79001234567\"`\n - `nickname: string` (max length: 255) — Имя пользователя. Пример: `\"olegpetrov\"`\n - `department: string` (max length: 255) — Департамент. Пример: `\"Отдел разработки\"`\n - `title: string` — Должность. Пример: `\"Старший разработчик\"`\n - `role: string` — Уровень доступа\n Значения: `admin` — Администратор, `user` — Сотрудник, `multi_guest` — Мульти-гость\n - `suspended: boolean` (default: false) — Деактивация пользователя. Пример: `false`\n - `list_tags: array of string` — Массив названий тегов, привязываемых к сотруднику. Список заменяет прежний целиком, пустой снимает все теги. Значение, которое не является массивом непустых строк, игнорируется: теги сотрудника не меняются. Пример: `[\"Product\",\"Design\"]`\n - `custom_properties: array of object` — Задаваемые дополнительные поля\n - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678`\n - `value: string` (required, max length: 768) — Устанавливаемое значение. Пример: `\"Санкт-Петербург\"`\n\n### Пример\n\n```json\n{\n \"user\": {\n \"first_name\": \"Олег\",\n \"last_name\": \"Петров\",\n \"email\": \"olegpetrov@example.com\",\n \"phone_number\": \"+79001234567\",\n \"nickname\": \"olegpetrov\",\n \"department\": \"Отдел разработки\",\n \"title\": \"Старший разработчик\",\n \"role\": \"user\",\n \"list_tags\": [\n \"Product\",\n \"Design\"\n ],\n \"custom_properties\": [\n {\n \"id\": 1678,\n \"value\": \"Санкт-Петербург\"\n }\n ]\n }\n}\n```\n\n## Пример запроса\n\n```bash\ncurl -X PUT \"https://api.pachca.com/api/shared/v1/users/12\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"user\": {\n \"first_name\": \"Олег\",\n \"last_name\": \"Петров\",\n \"email\": \"olegpetrov@example.com\",\n \"phone_number\": \"+79001234567\",\n \"nickname\": \"olegpetrov\",\n \"department\": \"Отдел разработки\",\n \"title\": \"Старший разработчик\",\n \"role\": \"user\",\n \"list_tags\": [\n \"Product\",\n \"Design\"\n ],\n \"custom_properties\": [\n {\n \"id\": 1678,\n \"value\": \"Санкт-Петербург\"\n }\n ]\n }\n}'\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Сотрудник\n - `id: integer, int32` (required) — Идентификатор пользователя. Пример: `12`\n - `first_name: string` (required, nullable, max length: 255) — Имя. Возвращается `null`, пока приглашённый сотрудник не завершил регистрацию (`invite_status` со значением `sent`). Пример: `\"Олег\"`\n - `last_name: string` (required, nullable, max length: 255) — Фамилия. Если не заполнена, возвращается `null` или пустая строка. Пример: `\"Петров\"`\n - `nickname: string` (required, max length: 255) — Имя пользователя. Пример: `\"olegpetrov\"`\n - `email: string` (required, nullable, max length: 255) — Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `\"olegp@example.com\"`\n - `phone_number: string` (required, nullable, max length: 255) — Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда. Пример: `\"+79001234567\"`\n - `department: string` (required, nullable, max length: 255) — Департамент. Если не указан, возвращается `null` или пустая строка. Пример: `\"Продукт\"`\n - `title: string` (required, nullable) — Должность. Если не указана, возвращается `null` или пустая строка. Пример: `\"CIO\"`\n - `role: string` (required) — Уровень доступа\n Значения: `admin` — Администратор, `user` — Сотрудник, `multi_guest` — Мульти-гость, `guest` — Гость\n - `suspended: boolean` (required) — Деактивация пользователя. Пример: `false`\n - `invite_status: string` (required) — Статус приглашения\n Значения: `confirmed` — Принято, `sent` — Отправлено\n - `inviter_id: integer, int32` (required, nullable) — Идентификатор сотрудника, который пригласил данного сотрудника. Возвращает `null`, если сотрудник зарегистрировался самостоятельно или если пригласивший сотрудник был удалён. Пример: `185`\n - `list_tags: array of string` (required) — Массив тегов, привязанных к сотруднику. Мульти-гостю в чужой карточке приходит пустым. Пример: `[\"Product\",\"Design\"]`\n - `custom_properties: array of object` (required) — Дополнительные поля сотрудника\n - `id: integer, int32` (required) — Идентификатор поля. Пример: `1678`\n - `name: string` (required, max length: 32) — Название поля. Пример: `\"Город\"`\n - `data_type: string` (required) — Тип поля\n Значения: `string` — Строковое значение, `number` — Числовое значение, `date` — Дата, `link` — Ссылка\n - `value: string` (required, nullable, max length: 768) — Значение. Возвращается `null`, если поле не заполнено. Число передаётся строкой, дата — в формате ISO 8601. Пример: `\"Санкт-Петербург\"`\n - `user_status: object` (required) — Статус. `null`, если у сотрудника не установлен статус.\n - `emoji: string` (required) — Emoji символ статуса. Пример: `\"🎮\"`\n - `title: string` (required, max length: 50) — Текст статуса. Пример: `\"Очень занят\"`\n - `expires_at: date-time` (required, nullable) — Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически. Пример: `\"2024-04-08T10:00:00.000Z\"`\n - `is_away: boolean` (required) — Режим «Нет на месте». Пример: `false`\n - `away_message: object` (required, nullable) — Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.\n - `text: string` (required, max length: 1024) — Текст сообщения. Пример: `\"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"`\n - `bot: boolean` (required) — Является ботом. Пример: `false`\n - `sso: boolean` (required) — Использует ли пользователь SSO. Пример: `false`\n - `created_at: date-time` (required) — Дата создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2020-06-08T09:32:57.000Z\"`\n - `last_activity_at: date-time` (required, nullable) — Дата последней активности пользователя (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если сотрудник ещё ни разу не заходил в Пачку — в этом случае `invite_status` возвращает `sent`. Пример: `\"2025-01-20T13:40:07.000Z\"`\n - `time_zone: string` (required, nullable, max length: 32) — Часовой пояс пользователя. `null`, если сотрудник не задал личный часовой пояс — тогда применяется часовой пояс компании. Пример: `\"Europe/Moscow\"`\n - `image_url: string` (required, nullable) — Ссылка на скачивание аватарки пользователя. `null`, если аватарка не загружена. Пример: `\"https://app.pachca.com/users/12/photo.jpg\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"id\": 12,\n \"first_name\": \"Олег\",\n \"last_name\": \"Петров\",\n \"nickname\": \"olegpetrov\",\n \"email\": \"olegp@example.com\",\n \"phone_number\": \"+79001234567\",\n \"department\": \"Продукт\",\n \"title\": \"CIO\",\n \"role\": \"admin\",\n \"suspended\": false,\n \"invite_status\": \"confirmed\",\n \"inviter_id\": 185,\n \"list_tags\": [\n \"Product\",\n \"Design\"\n ],\n \"custom_properties\": [\n {\n \"id\": 1678,\n \"name\": \"Город\",\n \"data_type\": \"string\",\n \"value\": \"Санкт-Петербург\"\n }\n ],\n \"user_status\": {\n \"emoji\": \"🎮\",\n \"title\": \"Очень занят\",\n \"expires_at\": \"2024-04-08T10:00:00.000Z\",\n \"is_away\": false,\n \"away_message\": {\n \"text\": \"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"\n }\n },\n \"bot\": false,\n \"sso\": false,\n \"created_at\": \"2020-06-08T09:32:57.000Z\",\n \"last_activity_at\": \"2025-01-20T13:40:07.000Z\",\n \"time_zone\": \"Europe/Moscow\",\n \"image_url\": \"https://app.pachca.com/users/12/photo.jpg\"\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 409: The request conflicts with the current state of the server.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"DELETE","path":"/users/{id}","summary":"Удаление сотрудника","scope":"users:delete","plan":null,"auth":true,"paginated":false,"command":"pachca users delete","docLink":"https://dev.pachca.com/api/users/delete","describe":"# DELETE /users/{id} — Удаление сотрудника\n\n> **Скоуп:** `users:delete`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор пользователя\n\n## Эквивалентная команда\n\n```bash\npachca users delete 12 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/users/delete\nПолная справка: `pachca api DELETE /users/{id} --docs` · схема: `--spec`\n","spec":{"method":"DELETE","path":"/users/{id}","description":"Удаление сотрудника\n\nУбирает сотрудника из пространства. Отменить это нельзя: вернуть его можно только новым приглашением, и это будет уже другой сотрудник.\n\nЧто происходит: он выходит из всех бесед и каналов, кроме личных переписок, с него снимаются все теги, задачи, где он был единственным исполнителем, удаляются, а из остальных он убирается. Написанные им сообщения и файлы остаются на месте.\n\nВладельца пространства удалить нельзя — метод ответит `403`. Повторный вызов отвечает `404`: удалённого сотрудника метод уже не находит.\n\nЕсли сотрудник уходит в отпуск или увольнение ещё не финальное, пользуйтесь методом [Редактирование сотрудника](PUT /users/{id}) с `suspended: true`. Приостановка обратима и сохраняет чаты, теги и задачи.","parameters":[{"name":"id","in":"path","description":"Идентификатор пользователя","required":true,"schema":{"type":"integer","format":"int32","example":12},"example":12}],"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"users:delete","scopeRoles":["owner","admin"]},"paginated":false},"docs":"# Удаление сотрудника\n\n**Метод**: `DELETE`\n\n**Путь**: `/users/{id}`\n\n> **Скоуп:** `users:delete`\n\nУбирает сотрудника из пространства. Отменить это нельзя: вернуть его можно только новым приглашением, и это будет уже другой сотрудник.\n\nЧто происходит: он выходит из всех бесед и каналов, кроме личных переписок, с него снимаются все теги, задачи, где он был единственным исполнителем, удаляются, а из остальных он убирается. Написанные им сообщения и файлы остаются на месте.\n\nВладельца пространства удалить нельзя — метод ответит `403`. Повторный вызов отвечает `404`: удалённого сотрудника метод уже не находит.\n\nЕсли сотрудник уходит в отпуск или увольнение ещё не финальное, пользуйтесь методом [Редактирование сотрудника](PUT /users/{id}) с `suspended: true`. Приостановка обратима и сохраняет чаты, теги и задачи.\n\n## Параметры\n\n### Path параметры\n\n- `id: integer, int32` (required) — Идентификатор пользователя\n\n\n## Пример запроса\n\n```bash\ncurl -X DELETE \"https://api.pachca.com/api/shared/v1/users/12\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"PUT","path":"/users/{user_id}/avatar","summary":"Загрузка аватара сотрудника","scope":"user_avatar:write","plan":null,"auth":true,"paginated":false,"command":"pachca users update-avatar","docLink":"https://dev.pachca.com/api/users/update-avatar","describe":"# PUT /users/{user_id}/avatar — Загрузка аватара сотрудника\n\n> **Скоуп:** `user_avatar:write`\n\n## Параметры\n\n- `user_id` — путь (обязательный): Идентификатор пользователя\n\n## Тело запроса\n\n- `image: binary` (required) — Файл изображения для аватара\n\n## Эквивалентная команда\n\n```bash\npachca users update-avatar 12 \\\n --file=./image.jpg \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/users/update-avatar\nПолная справка: `pachca api PUT /users/{user_id}/avatar --docs` · схема: `--spec`\n","spec":{"method":"PUT","path":"/users/{user_id}/avatar","description":"Загрузка аватара сотрудника\n\nСтавит или заменяет аватар другому сотруднику. Доступно владельцу пространства и администратору, боту метод недоступен. Аватар владельца пространства меняет только он сам.\n\nФайл передаётся в формате `multipart/form-data`, в ответе приходит только ссылка на новое изображение. Принимаются `jpg`, `jpeg`, `png` и `gif`, анимированный `gif` — не больше 2 МБ, картинка уменьшается до 1024 на 1024 пикселя.\n\nСвой аватар ставят методом [Загрузка своего аватара](PUT /profile/avatar) — он доступен всем ролям и ботам.","parameters":[{"name":"user_id","in":"path","description":"Идентификатор пользователя","required":true,"schema":{"type":"integer","format":"int32","example":12},"example":12}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"type":"string","format":"binary","description":"Файл изображения для аватара"}}}}}},"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Данные аватара","required":["image_url"],"properties":{"image_url":{"type":"string","description":"URL аватара","example":"https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg"}},"$ref":"#/components/schemas/AvatarData"}}}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"},{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}]}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"user_avatar:write","scopeRoles":["owner","admin"]},"paginated":false},"docs":"# Загрузка аватара сотрудника\n\n**Метод**: `PUT`\n\n**Путь**: `/users/{user_id}/avatar`\n\n> **Скоуп:** `user_avatar:write`\n\nСтавит или заменяет аватар другому сотруднику. Доступно владельцу пространства и администратору, боту метод недоступен. Аватар владельца пространства меняет только он сам.\n\nФайл передаётся в формате `multipart/form-data`, в ответе приходит только ссылка на новое изображение. Принимаются `jpg`, `jpeg`, `png` и `gif`, анимированный `gif` — не больше 2 МБ, картинка уменьшается до 1024 на 1024 пикселя.\n\nСвой аватар ставят методом [Загрузка своего аватара](PUT /profile/avatar) — он доступен всем ролям и ботам.\n\n## Параметры\n\n### Path параметры\n\n- `user_id: integer, int32` (required) — Идентификатор пользователя\n\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `multipart/form-data`\n\n### Схема\n\n- `image: binary` (required) — Файл изображения для аватара\n\n\n## Пример запроса\n\n```bash\ncurl -X PUT \"https://api.pachca.com/api/shared/v1/users/12/avatar\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -F 'image=@filename.png'\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Данные аватара\n - `image_url: string` (required) — URL аватара. Пример: `\"https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"image_url\": \"https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg\"\n }\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n**anyOf** - один из вариантов:\n\n- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)\n - `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403)\n - `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n - `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"DELETE","path":"/users/{user_id}/avatar","summary":"Удаление аватара сотрудника","scope":"user_avatar:write","plan":null,"auth":true,"paginated":false,"command":"pachca users remove-avatar","docLink":"https://dev.pachca.com/api/users/remove-avatar","describe":"# DELETE /users/{user_id}/avatar — Удаление аватара сотрудника\n\n> **Скоуп:** `user_avatar:write`\n\n## Параметры\n\n- `user_id` — путь (обязательный): Идентификатор пользователя\n\n## Эквивалентная команда\n\n```bash\npachca users remove-avatar 12 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/users/remove-avatar\nПолная справка: `pachca api DELETE /users/{user_id}/avatar --docs` · схема: `--spec`\n","spec":{"method":"DELETE","path":"/users/{user_id}/avatar","description":"Удаление аватара сотрудника\n\nУбирает аватар другому сотруднику, дальше в интерфейсе показываются инициалы. Доступно владельцу пространства и администратору, боту метод недоступен, а аватар владельца пространства убирает только он сам.\n\nЕсли аватара не было, ответ всё равно `204`.","parameters":[{"name":"user_id","in":"path","description":"Идентификатор пользователя","required":true,"schema":{"type":"integer","format":"int32","example":12},"example":12}],"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"},{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}]}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"user_avatar:write","scopeRoles":["owner","admin"]},"paginated":false},"docs":"# Удаление аватара сотрудника\n\n**Метод**: `DELETE`\n\n**Путь**: `/users/{user_id}/avatar`\n\n> **Скоуп:** `user_avatar:write`\n\nУбирает аватар другому сотруднику, дальше в интерфейсе показываются инициалы. Доступно владельцу пространства и администратору, боту метод недоступен, а аватар владельца пространства убирает только он сам.\n\nЕсли аватара не было, ответ всё равно `204`.\n\n## Параметры\n\n### Path параметры\n\n- `user_id: integer, int32` (required) — Идентификатор пользователя\n\n\n## Пример запроса\n\n```bash\ncurl -X DELETE \"https://api.pachca.com/api/shared/v1/users/12/avatar\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n**anyOf** - один из вариантов:\n\n- **ApiError**: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)\n - `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n- **OAuthError**: Ошибка OAuth авторизации (используется для 401 и 403)\n - `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n - `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/users/{user_id}/status","summary":"Статус сотрудника","scope":"user_status:read","plan":null,"auth":true,"paginated":false,"command":"pachca users get-status","docLink":"https://dev.pachca.com/api/users/get-status","describe":"# GET /users/{user_id}/status — Статус сотрудника\n\n> **Скоуп:** `user_status:read`\n\n## Параметры\n\n- `user_id` — путь (обязательный): Идентификатор пользователя\n\n## Эквивалентная команда\n\n```bash\npachca users get-status 12 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/users/get-status\nПолная справка: `pachca api GET /users/{user_id}/status --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/users/{user_id}/status","description":"Статус сотрудника\n\nСтатус другого сотрудника: эмодзи, подпись, срок и режим «Нет на месте».\n\nМульти-гостю метод отдаёт статусы только тех, кто приходит ему в [Список сотрудников](GET /users), а на остальных отвечает `404`.\n\nЕсли статус не установлен, метод возвращает `200` и `null` в теле ответа — без объекта-обёртки. Статус с истёкшим `expires_at` какое-то время ещё возвращается, пока не будет очищен, поэтому проверяйте `expires_at` на стороне клиента.","parameters":[{"name":"user_id","in":"path","description":"Идентификатор пользователя","required":true,"schema":{"type":"integer","format":"int32","example":12},"example":12}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"nullable":true,"properties":{"data":{"type":"object","description":"Статус пользователя","required":["emoji","title","expires_at","is_away","away_message"],"properties":{"emoji":{"type":"string","description":"Emoji символ статуса","example":"🎮"},"title":{"type":"string","description":"Текст статуса","example":"Очень занят","maxLength":50},"expires_at":{"type":"string","format":"date-time","description":"Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически.","example":"2024-04-08T10:00:00.000Z","nullable":true},"is_away":{"type":"boolean","description":"Режим «Нет на месте»","example":false},"away_message":{"type":"object","description":"Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.","required":["text"],"nullable":true,"properties":{"text":{"type":"string","description":"Текст сообщения","example":"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.","maxLength":1024}}}},"$ref":"#/components/schemas/UserStatus"}}}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"user_status:read","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":false},"docs":"# Статус сотрудника\n\n**Метод**: `GET`\n\n**Путь**: `/users/{user_id}/status`\n\n> **Скоуп:** `user_status:read`\n\nСтатус другого сотрудника: эмодзи, подпись, срок и режим «Нет на месте».\n\nМульти-гостю метод отдаёт статусы только тех, кто приходит ему в [Список сотрудников](GET /users), а на остальных отвечает `404`.\n\nЕсли статус не установлен, метод возвращает `200` и `null` в теле ответа — без объекта-обёртки. Статус с истёкшим `expires_at` какое-то время ещё возвращается, пока не будет очищен, поэтому проверяйте `expires_at` на стороне клиента.\n\n## Параметры\n\n### Path параметры\n\n- `user_id: integer, int32` (required) — Идентификатор пользователя\n\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/users/12/status\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Статус пользователя\n - `emoji: string` (required) — Emoji символ статуса. Пример: `\"🎮\"`\n - `title: string` (required, max length: 50) — Текст статуса. Пример: `\"Очень занят\"`\n - `expires_at: date-time` (required, nullable) — Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически. Пример: `\"2024-04-08T10:00:00.000Z\"`\n - `is_away: boolean` (required) — Режим «Нет на месте». Пример: `false`\n - `away_message: object` (required, nullable) — Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.\n - `text: string` (required, max length: 1024) — Текст сообщения. Пример: `\"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"emoji\": \"🎮\",\n \"title\": \"Очень занят\",\n \"expires_at\": \"2024-04-08T10:00:00.000Z\",\n \"is_away\": false,\n \"away_message\": {\n \"text\": \"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"\n }\n }\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"PUT","path":"/users/{user_id}/status","summary":"Новый статус сотрудника","scope":"user_status:write","plan":null,"auth":true,"paginated":false,"command":"pachca users update-status","docLink":"https://dev.pachca.com/api/users/update-status","describe":"# PUT /users/{user_id}/status — Новый статус сотрудника\n\n> **Скоуп:** `user_status:write`\n\n## Параметры\n\n- `user_id` — путь (обязательный): Идентификатор пользователя\n\n## Тело запроса\n\n- `status: object` (required)\n - `emoji: string` (required) — Emoji символ статуса\n - `title: string` (required, max length: 50) — Текст статуса\n - `expires_at: date-time` — Срок жизни статуса (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Сюда идёт срок, названный словами: «до трёх» это значение поля, а не часть подписи.\n - `is_away: boolean` — Режим «Нет на месте»\n - `away_message: string` (max length: 1024) — Текст сообщения при режиме «Нет на месте». Отображается в профиле и при личных сообщениях/упоминаниях.\n\n## Эквивалентная команда\n\n```bash\npachca users update-status 12 \\\n --emoji=🎮 \\\n --title='Очень занят' \\\n --expires-at=2024-04-08T10:00:00.000Z \\\n --is-away \\\n --away-message='Вернусь после 15:00' \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/users/update-status\nПолная справка: `pachca api PUT /users/{user_id}/status --docs` · схема: `--spec`\n","spec":{"method":"PUT","path":"/users/{user_id}/status","description":"Новый статус сотрудника\n\nСтавит статус другому сотруднику — например, «в отпуске» на время отсутствия. Доступно владельцу пространства и администратору, боту метод недоступен даже с выданным скоупом.\n\nЭтим же методом сотруднику включают режим «Нет на месте» флагом `is_away` и задают текст `away_message`, который увидят при попытке к нему обратиться.\n\nСтатус видят все, кто видит сотрудника в пространстве. Перезаписываются только переданные поля, поэтому продлить чужой статус можно одним `expires_at`.\n\nСрок, названный словами, — это `expires_at`, а не часть подписи, и считается он в часовом поясе того сотрудника, которому ставят статус. Эмодзи обязателен и ровно один, подпись обязательна и не длиннее 50 символов.\n\nСвой статус ставят методом [Новый свой статус](PUT /profile/status) — он доступен всем ролям и ботам.","parameters":[{"name":"user_id","in":"path","description":"Идентификатор пользователя","required":true,"schema":{"type":"integer","format":"int32","example":12},"example":12}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Запрос на установку статуса","required":["status"],"properties":{"status":{"type":"object","required":["emoji","title"],"properties":{"emoji":{"type":"string","description":"Emoji символ статуса","example":"🎮"},"title":{"type":"string","description":"Текст статуса","example":"Очень занят","maxLength":50},"expires_at":{"type":"string","format":"date-time","description":"Срок жизни статуса (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Сюда идёт срок, названный словами: «до трёх» это значение поля, а не часть подписи.","example":"2024-04-08T10:00:00.000Z"},"is_away":{"type":"boolean","description":"Режим «Нет на месте»","example":true},"away_message":{"type":"string","description":"Текст сообщения при режиме «Нет на месте». Отображается в профиле и при личных сообщениях/упоминаниях.","example":"Вернусь после 15:00","maxLength":1024}}}},"$ref":"#/components/schemas/StatusUpdateRequest"}}}},"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными","required":["data"],"properties":{"data":{"type":"object","description":"Статус пользователя","required":["emoji","title","expires_at","is_away","away_message"],"properties":{"emoji":{"type":"string","description":"Emoji символ статуса","example":"🎮"},"title":{"type":"string","description":"Текст статуса","example":"Очень занят","maxLength":50},"expires_at":{"type":"string","format":"date-time","description":"Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически.","example":"2024-04-08T10:00:00.000Z","nullable":true},"is_away":{"type":"boolean","description":"Режим «Нет на месте»","example":false},"away_message":{"type":"object","description":"Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.","required":["text"],"nullable":true,"properties":{"text":{"type":"string","description":"Текст сообщения","example":"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.","maxLength":1024}}}},"$ref":"#/components/schemas/UserStatus"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"user_status:write","scopeRoles":["owner","admin"]},"paginated":false},"docs":"# Новый статус сотрудника\n\n**Метод**: `PUT`\n\n**Путь**: `/users/{user_id}/status`\n\n> **Скоуп:** `user_status:write`\n\nСтавит статус другому сотруднику — например, «в отпуске» на время отсутствия. Доступно владельцу пространства и администратору, боту метод недоступен даже с выданным скоупом.\n\nЭтим же методом сотруднику включают режим «Нет на месте» флагом `is_away` и задают текст `away_message`, который увидят при попытке к нему обратиться.\n\nСтатус видят все, кто видит сотрудника в пространстве. Перезаписываются только переданные поля, поэтому продлить чужой статус можно одним `expires_at`.\n\nСрок, названный словами, — это `expires_at`, а не часть подписи, и считается он в часовом поясе того сотрудника, которому ставят статус. Эмодзи обязателен и ровно один, подпись обязательна и не длиннее 50 символов.\n\nСвой статус ставят методом [Новый свой статус](PUT /profile/status) — он доступен всем ролям и ботам.\n\n## Параметры\n\n### Path параметры\n\n- `user_id: integer, int32` (required) — Идентификатор пользователя\n\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `status: object` (required)\n - `emoji: string` (required) — Emoji символ статуса. Пример: `\"🎮\"`\n - `title: string` (required, max length: 50) — Текст статуса. Пример: `\"Очень занят\"`\n - `expires_at: date-time` — Срок жизни статуса (ISO-8601). Смещение вида `+03:00` учитывается, время без смещения считается UTC. Сюда идёт срок, названный словами: «до трёх» это значение поля, а не часть подписи. Пример: `\"2024-04-08T10:00:00.000Z\"`\n - `is_away: boolean` — Режим «Нет на месте». Пример: `true`\n - `away_message: string` (max length: 1024) — Текст сообщения при режиме «Нет на месте». Отображается в профиле и при личных сообщениях/упоминаниях. Пример: `\"Вернусь после 15:00\"`\n\n### Пример\n\n```json\n{\n \"status\": {\n \"emoji\": \"🎮\",\n \"title\": \"Очень занят\",\n \"expires_at\": \"2024-04-08T10:00:00.000Z\",\n \"is_away\": true,\n \"away_message\": \"Вернусь после 15:00\"\n }\n}\n```\n\n## Пример запроса\n\n```bash\ncurl -X PUT \"https://api.pachca.com/api/shared/v1/users/12/status\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"status\": {\n \"emoji\": \"🎮\",\n \"title\": \"Очень занят\",\n \"expires_at\": \"2024-04-08T10:00:00.000Z\",\n \"is_away\": true,\n \"away_message\": \"Вернусь после 15:00\"\n }\n}'\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: object` (required) — Статус пользователя\n - `emoji: string` (required) — Emoji символ статуса. Пример: `\"🎮\"`\n - `title: string` (required, max length: 50) — Текст статуса. Пример: `\"Очень занят\"`\n - `expires_at: date-time` (required, nullable) — Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если срок не задан — такой статус не сбрасывается автоматически. Пример: `\"2024-04-08T10:00:00.000Z\"`\n - `is_away: boolean` (required) — Режим «Нет на месте». Пример: `false`\n - `away_message: object` (required, nullable) — Сообщение при режиме «Нет на месте». Отображается в профиле пользователя, а также при отправке ему личного сообщения или упоминании в чате. `null`, если текст не задан.\n - `text: string` (required, max length: 1024) — Текст сообщения. Пример: `\"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": {\n \"emoji\": \"🎮\",\n \"title\": \"Очень занят\",\n \"expires_at\": \"2024-04-08T10:00:00.000Z\",\n \"is_away\": false,\n \"away_message\": {\n \"text\": \"Я в отпуске до 15 апреля. По срочным вопросам обращайтесь к @ivanov.\"\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"DELETE","path":"/users/{user_id}/status","summary":"Удаление статуса сотрудника","scope":"user_status:write","plan":null,"auth":true,"paginated":false,"command":"pachca users remove-status","docLink":"https://dev.pachca.com/api/users/remove-status","describe":"# DELETE /users/{user_id}/status — Удаление статуса сотрудника\n\n> **Скоуп:** `user_status:write`\n\n## Параметры\n\n- `user_id` — путь (обязательный): Идентификатор пользователя\n\n## Эквивалентная команда\n\n```bash\npachca users remove-status 12 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/users/remove-status\nПолная справка: `pachca api DELETE /users/{user_id}/status --docs` · схема: `--spec`\n","spec":{"method":"DELETE","path":"/users/{user_id}/status","description":"Удаление статуса сотрудника\n\nСнимает статус с другого сотрудника вместе с режимом «Нет на месте» и его текстом. Доступно владельцу пространства и администратору, боту метод недоступен.\n\nЕсли статуса не было, ответ всё равно `204`. Свой статус снимает [Удаление своего статуса](DELETE /profile/status).","parameters":[{"name":"user_id","in":"path","description":"Идентификатор пользователя","required":true,"schema":{"type":"integer","format":"int32","example":12},"example":12}],"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"user_status:write","scopeRoles":["owner","admin"]},"paginated":false},"docs":"# Удаление статуса сотрудника\n\n**Метод**: `DELETE`\n\n**Путь**: `/users/{user_id}/status`\n\n> **Скоуп:** `user_status:write`\n\nСнимает статус с другого сотрудника вместе с режимом «Нет на месте» и его текстом. Доступно владельцу пространства и администратору, боту метод недоступен.\n\nЕсли статуса не было, ответ всё равно `204`. Свой статус снимает [Удаление своего статуса](DELETE /profile/status).\n\n## Параметры\n\n### Path параметры\n\n- `user_id: integer, int32` (required) — Идентификатор пользователя\n\n\n## Пример запроса\n\n```bash\ncurl -X DELETE \"https://api.pachca.com/api/shared/v1/users/12/status\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"POST","path":"/views/open","summary":"Открытие представления","scope":"views:write","plan":null,"auth":true,"paginated":false,"command":"pachca views open","docLink":"https://dev.pachca.com/api/views/open","describe":"# POST /views/open — Открытие представления\n\n> **Скоуп:** `views:write`\n\n## Тело запроса\n\n- `type: string` (required) — Способ открытия представления\n Значения: `modal` — Модальное окно\n- `trigger_id: string` (required) — Уникальный идентификатор события (полученный, например, в исходящем вебхуке о нажатии кнопки)\n- `private_metadata: string` (max length: 3000) — Необязательная строка, которая будет отправлена в ваше приложение при отправке пользователем заполненной формы. Используйте это поле, например, для передачи в формате `JSON` какой то дополнительной информации вместе с заполненной пользователем формой.\n- `callback_id: string` (max length: 255) — Необязательный идентификатор для распознавания этого представления, который будет отправлен в ваше приложение при отправке пользователем заполненной формы. Используйте это поле, например, для понимания, какую форму должен был заполнить пользователь.\n- `view: object` (required) — Собранный объект представления\n - `title: string` (required, max length: 24) — Заголовок представления\n - `close_text: string` (default: Отменить, max length: 24) — Текст кнопки закрытия представления. Отображается только в десктоп-вебе. В мобильных приложениях (iOS/Android) кнопка закрытия — это крестик в шапке, и заданный текст там не показывается.\n - `submit_text: string` (default: Отправить, max length: 24) — Текст кнопки отправки формы\n - `blocks: array (union)` (required, max items: 100) — Массив блоков представления\n **Возможные типы элементов:**\n\n - **ViewBlockHeader**: Блок header — заголовок\n - `type: string` (required) — Тип блока\n Значения: `header` — Для заголовков всегда header\n - `text: string` (required, max length: 150) — Текст заголовка\n - **ViewBlockPlainText**: Блок plain_text — обычный текст\n - `type: string` (required) — Тип блока\n Значения: `plain_text` — Для обычного текста всегда plain_text\n - `text: string` (required, max length: 12000) — Текст\n - **ViewBlockMarkdown**: Блок markdown — форматированный текст\n - `type: string` (required) — Тип блока\n Значения: `markdown` — Для форматированного текста всегда markdown\n - `text: string` (required, max length: 12000) — Текст\n - **ViewBlockDivider**: Блок divider — разделитель\n - `type: string` (required) — Тип блока\n Значения: `divider` — Для разделителя всегда divider\n - **ViewBlockInput**: Блок input — текстовое поле ввода\n - `type: string` (required) — Тип блока\n Значения: `input` — Для текстового поля всегда input\n - `name: string` (required, max length: 255) — Название, которое будет передано в ваше приложение как ключ указанного пользователем значения\n - `label: string` (required, max length: 150) — Подпись к полю\n - `placeholder: string` (max length: 150) — Подсказка внутри поля ввода, пока оно пустое\n - `multiline: boolean` (default: false) — Многострочное поле\n - `initial_value: string` (max length: 3000) — Начальное значение в поле\n - `min_length: integer, int32` (min: 0, max: 3000) — Минимальная длина текста, который должен написать пользователь. Если пользователь напишет меньше, он получит ошибку.\n - `max_length: integer, int32` (min: 1, max: 3000) — Максимальная длина текста, который должен написать пользователь. Если пользователь напишет больше, он получит ошибку.\n - `required: boolean` (default: false) — Обязательность\n - `hint: string` (max length: 2000) — Подсказка, которая отображается под полем серым цветом\n - **ViewBlockSelect**: Блок select — выпадающий список\n - `type: string` (required) — Тип блока\n Значения: `select` — Для выпадающего списка всегда select\n - `name: string` (required, max length: 255) — Название, которое будет передано в ваше приложение как ключ указанного пользователем выбора\n - `label: string` (required, max length: 150) — Подпись к выпадающему списку\n - `options: array of object` (required, max items: 100) — Массив доступных пунктов в выпадающем списке\n - `text: string` (required, max length: 75) — Отображаемый текст\n - `value: string` (required, max length: 255) — Уникальное строковое значение, которое будет передано в ваше приложение при выборе этого пункта\n - `description: string` (max length: 75) — Пояснение, которое будет указано серым цветом в этом пункте под отображаемым текстом\n - `selected: boolean` — Изначально выбранный пункт. Только один пункт может быть выбран.\n - `required: boolean` (default: false) — Обязательность\n - `hint: string` (max length: 2000) — Подсказка, которая отображается под выпадающим списком серым цветом\n - **ViewBlockRadio**: Блок radio — радиокнопки\n - `type: string` (required) — Тип блока\n Значения: `radio` — Для радиокнопок всегда radio\n - `name: string` (required, max length: 255) — Название, которое будет передано в ваше приложение как ключ указанного пользователем выбора\n - `label: string` (required, max length: 150) — Подпись к группе радиокнопок\n - `options: array of object` (required, max items: 20) — Массив радиокнопок\n - `text: string` (required, max length: 75) — Отображаемый текст\n - `value: string` (required, max length: 255) — Уникальное строковое значение, которое будет передано в ваше приложение при выборе этого пункта\n - `description: string` (max length: 75) — Пояснение, которое будет указано серым цветом в этом пункте под отображаемым текстом\n - `checked: boolean` — Изначально выбранная радиокнопка. Только одна радиокнопка может быть выбрана.\n - `required: boolean` (default: false) — Обязательность\n - `hint: string` (max length: 2000) — Подсказка, которая отображается под группой радиокнопок серым цветом\n - **ViewBlockCheckbox**: Блок checkbox — чекбоксы\n - `type: string` (required) — Тип блока\n Значения: `checkbox` — Для чекбоксов всегда checkbox\n - `name: string` (required, max length: 255) — Название, которое будет передано в ваше приложение как ключ указанного пользователем выбора\n - `label: string` (required, max length: 150) — Подпись к группе чекбоксов\n - `options: array of object` (required, max items: 20) — Массив чекбоксов\n - `text: string` (required, max length: 75) — Отображаемый текст\n - `value: string` (required, max length: 255) — Уникальное строковое значение, которое будет передано в ваше приложение при выборе этого пункта\n - `description: string` (max length: 75) — Пояснение, которое будет указано серым цветом в этом пункте под отображаемым текстом\n - `checked: boolean` — Изначально выбранный пункт\n - `required: boolean` (default: false) — Обязательность\n - `hint: string` (max length: 2000) — Подсказка, которая отображается под группой чекбоксов серым цветом\n - **ViewBlockDate**: Блок date — выбор даты\n - `type: string` (required) — Тип блока\n Значения: `date` — Для выбора даты всегда date\n - `name: string` (required, max length: 255) — Название, которое будет передано в ваше приложение как ключ указанного пользователем значения\n - `label: string` (required, max length: 150) — Подпись к полю\n - `initial_date: date` — Начальное значение в поле в формате YYYY-MM-DD\n - `required: boolean` (default: false) — Обязательность\n - `hint: string` (max length: 2000) — Подсказка, которая отображается под полем серым цветом\n - **ViewBlockTime**: Блок time — выбор времени\n - `type: string` (required) — Тип блока\n Значения: `time` — Для выбора времени всегда time\n - `name: string` (required, max length: 255) — Название, которое будет передано в ваше приложение как ключ указанного пользователем значения\n - `label: string` (required, max length: 150) — Подпись к полю\n - `initial_time: string, time` — Начальное значение в поле в формате HH:mm. Значение в формате HH:mm:ss тоже принимается — секунды отбрасываются.\n - `required: boolean` (default: false) — Обязательность\n - `hint: string` (max length: 2000) — Подсказка, которая отображается под полем серым цветом\n - **ViewBlockFileInput**: Блок file_input — загрузка файлов\n - `type: string` (required) — Тип блока\n Значения: `file_input` — Для загрузки файлов всегда file_input\n - `name: string` (required, max length: 255) — Название, которое будет передано в ваше приложение как ключ указанного пользователем значения\n - `label: string` (required, max length: 150) — Подпись к полю\n - `filetypes: array of string` — Массив допустимых расширений файлов, указанные в виде строк (например, [\"png\",\"jpg\",\"gif\"]). Точка в начале не нужна, но допустима — она подставляется сама. Значение с косой чертой считается MIME-типом и остаётся как есть. Если это поле не указано, все расширения файлов будут приняты. Значение подставляется в фильтр окна выбора файла, поэтому расширение полученного файла проверяйте у себя.\n - `max_files: integer, int32` (default: 10, min: 1, max: 10) — Максимальное количество файлов, которое может загрузить пользователь в это поле\n - `required: boolean` (default: false) — Обязательность\n - `hint: string` (max length: 2000) — Подсказка, которая отображается под полем серым цветом\n\n## Эквивалентная команда\n\n```bash\npachca views open \\\n --title='Уведомление об отпуске' \\\n --close-text=Закрыть \\\n --submit-text='Отправить заявку' \\\n --blocks='[{\"type\":\"header\",\"text\":\"Основная информация\"},{\"type\":\"plain_text\",\"text\":\"Заполните форму. После отправки формы в общий чат будет отправлено текстовое уведомление, а ваш отпуск будет сохранен в базе.\"},{\"type\":\"markdown\",\"text\":\"Информацию о доступных вам днях отпуска вы можете прочитать по [ссылке](https://www.website.com/timeoff)\"},{\"type\":\"divider\"},{\"type\":\"input\",\"name\":\"info\",\"label\":\"Описание отпуска\",\"placeholder\":\"Куда собираетесь и что будете делать\",\"multiline\":true,\"initial_value\":\"Начальный текст\",\"min_length\":10,\"max_length\":500,\"required\":true,\"hint\":\"Возможно вам подскаджут, какие места лучше посетить\"},{\"type\":\"select\",\"name\":\"team\",\"label\":\"Выберите команду\",\"options\":[{\"text\":\"Ничего\",\"value\":\"nothing\",\"description\":\"Каждый день бот будет присылать список новых задач в вашей команде\",\"selected\":true}],\"hint\":\"Выберите одну из команд\"},{\"type\":\"radio\",\"name\":\"accessibility\",\"label\":\"Доступность\",\"options\":[{\"text\":\"Ничего\",\"value\":\"nothing\",\"description\":\"Каждый день бот будет присылать список новых задач в вашей команде\",\"checked\":true}],\"required\":true,\"hint\":\"Если вы не планируете выходить на связь, то выберите вариант Ничего\"},{\"type\":\"checkbox\",\"name\":\"newsletters\",\"label\":\"Рассылки\",\"options\":[{\"text\":\"Ничего\",\"value\":\"nothing\",\"description\":\"Каждый день бот будет присылать список новых задач в вашей команде\",\"checked\":true}],\"hint\":\"Выберите интересующие вас рассылки\"},{\"type\":\"date\",\"name\":\"date_start\",\"label\":\"Дата начала отпуска\",\"initial_date\":\"2025-07-01\",\"required\":true,\"hint\":\"Укажите дату начала отпуска\"},{\"type\":\"time\",\"name\":\"newsletter_time\",\"label\":\"Время рассылки\",\"initial_time\":\"11:00\",\"hint\":\"Укажите, в какое время присылать выбранные рассылки\"},{\"type\":\"file_input\",\"name\":\"request_doc\",\"label\":\"Заявление\",\"filetypes\":[\"pdf\",\"jpg\",\"png\"],\"max_files\":1,\"required\":true,\"hint\":\"Загрузите заполненное заявление с электронной подписью (в формате pdf, jpg или png)\"}]' \\\n --type=modal \\\n --trigger-id=791a056b-006c-49dd-834b-c633fde52fe8 \\\n --private-metadata='{\"timeoff_id\":4378}' \\\n --callback-id=timeoff_request_form \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/views/open\nПолная справка: `pachca api POST /views/open --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/views/open","description":"Открытие представления\n\nПоказывает пользователю модальное окно с формой в ответ на его действие. Метод вызывают токеном бота: события о нажатии кнопок приходят только ботам, от имени бота окно и открывается.\n\nОткрыть окно можно единственным способом — по `trigger_id` из события о нажатии кнопки. Один `trigger_id` открывает одно окно и живёт 3 секунды: у бота с вебхуком — с момента, когда Пачка передала нажатие, у бота с [Журналом событий](GET /webhooks/events) — с момента записи нажатия в журнал. Поэтому окно открывают первым делом, а всё остальное по событию делают уже после.\n\nЗаполненная форма приходит обратно событием `view_submit`: на исходящий вебхук, а если адрес не задан — в журнал. На вебхук отвечают прямо в ответе на него, и Пачка ждёт его 3 секунды. Событие из журнала закрывают методом [Ответ на отправку формы](POST /views/{view_id}/submit_response), на это есть 5 секунд. Не успели — пользователь увидит ошибку отправки.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Представление","required":["type","trigger_id","view"],"properties":{"type":{"type":"string","description":"Способ открытия представления","enum":["modal"],"x-enum-descriptions":{"modal":"Модальное окно"},"example":"modal"},"trigger_id":{"type":"string","description":"Уникальный идентификатор события (полученный, например, в исходящем вебхуке о нажатии кнопки)","example":"791a056b-006c-49dd-834b-c633fde52fe8"},"private_metadata":{"type":"string","description":"Необязательная строка, которая будет отправлена в ваше приложение при отправке пользователем заполненной формы. Используйте это поле, например, для передачи в формате `JSON` какой то дополнительной информации вместе с заполненной пользователем формой.","example":"{\"timeoff_id\":4378}","maxLength":3000},"callback_id":{"type":"string","description":"Необязательный идентификатор для распознавания этого представления, который будет отправлен в ваше приложение при отправке пользователем заполненной формы. Используйте это поле, например, для понимания, какую форму должен был заполнить пользователь.","example":"timeoff_request_form","maxLength":255},"view":{"type":"object","description":"Собранный объект представления","required":["title","blocks"],"properties":{"title":{"type":"string","description":"Заголовок представления","example":"Уведомление об отпуске","maxLength":24},"close_text":{"type":"string","description":"Текст кнопки закрытия представления. Отображается только в десктоп-вебе. В мобильных приложениях (iOS/Android) кнопка закрытия — это крестик в шапке, и заданный текст там не показывается.","default":"Отменить","example":"Закрыть","maxLength":24},"submit_text":{"type":"string","description":"Текст кнопки отправки формы","default":"Отправить","example":"Отправить заявку","maxLength":24},"blocks":{"type":"array","description":"Массив блоков представления","maxItems":100,"items":{"description":"Union-тип для всех возможных блоков представления","anyOf":[{"type":"object","description":"Блок header — заголовок","required":["type","text"],"properties":{"type":{"type":"string","description":"Тип блока","enum":["header"],"x-enum-descriptions":{"header":"Для заголовков всегда header"},"example":"header"},"text":{"type":"string","description":"Текст заголовка","example":"Основная информация","maxLength":150}},"$ref":"#/components/schemas/ViewBlockHeader"},{"type":"object","description":"Блок plain_text — обычный текст","required":["type","text"],"properties":{"type":{"type":"string","description":"Тип блока","enum":["plain_text"],"x-enum-descriptions":{"plain_text":"Для обычного текста всегда plain_text"},"example":"plain_text"},"text":{"type":"string","description":"Текст","example":"Заполните форму. После отправки формы в общий чат будет отправлено текстовое уведомление, а ваш отпуск будет сохранен в базе.","maxLength":12000}},"$ref":"#/components/schemas/ViewBlockPlainText"},{"type":"object","description":"Блок markdown — форматированный текст","required":["type","text"],"properties":{"type":{"type":"string","description":"Тип блока","enum":["markdown"],"x-enum-descriptions":{"markdown":"Для форматированного текста всегда markdown"},"example":"markdown"},"text":{"type":"string","description":"Текст","example":"Информацию о доступных вам днях отпуска вы можете прочитать по [ссылке](https://www.website.com/timeoff)","maxLength":12000}},"$ref":"#/components/schemas/ViewBlockMarkdown"},{"type":"object","description":"Блок divider — разделитель","required":["type"],"properties":{"type":{"type":"string","description":"Тип блока","enum":["divider"],"x-enum-descriptions":{"divider":"Для разделителя всегда divider"},"example":"divider"}},"$ref":"#/components/schemas/ViewBlockDivider"},{"type":"object","description":"Блок input — текстовое поле ввода","required":["type","name","label"],"properties":{"type":{"type":"string","description":"Тип блока","enum":["input"],"x-enum-descriptions":{"input":"Для текстового поля всегда input"},"example":"input"},"name":{"type":"string","description":"Название, которое будет передано в ваше приложение как ключ указанного пользователем значения","example":"info","maxLength":255},"label":{"type":"string","description":"Подпись к полю","example":"Описание отпуска","maxLength":150},"placeholder":{"type":"string","description":"Подсказка внутри поля ввода, пока оно пустое","example":"Куда собираетесь и что будете делать","maxLength":150},"multiline":{"type":"boolean","description":"Многострочное поле","default":false,"example":true},"initial_value":{"type":"string","description":"Начальное значение в поле","example":"Начальный текст","maxLength":3000},"min_length":{"type":"integer","format":"int32","description":"Минимальная длина текста, который должен написать пользователь. Если пользователь напишет меньше, он получит ошибку.","example":10,"minimum":0,"maximum":3000},"max_length":{"type":"integer","format":"int32","description":"Максимальная длина текста, который должен написать пользователь. Если пользователь напишет больше, он получит ошибку.","example":500,"minimum":1,"maximum":3000},"required":{"type":"boolean","description":"Обязательность","default":false,"example":true},"hint":{"type":"string","description":"Подсказка, которая отображается под полем серым цветом","example":"Возможно вам подскаджут, какие места лучше посетить","maxLength":2000}},"$ref":"#/components/schemas/ViewBlockInput"},{"type":"object","description":"Блок select — выпадающий список","required":["type","name","label","options"],"properties":{"type":{"type":"string","description":"Тип блока","enum":["select"],"x-enum-descriptions":{"select":"Для выпадающего списка всегда select"},"example":"select"},"name":{"type":"string","description":"Название, которое будет передано в ваше приложение как ключ указанного пользователем выбора","example":"team","maxLength":255},"label":{"type":"string","description":"Подпись к выпадающему списку","example":"Выберите команду","maxLength":150},"options":{"type":"array","description":"Массив доступных пунктов в выпадающем списке","minItems":1,"maxItems":100,"items":{"type":"object","description":"Пункт выпадающего списка (select). Изначальный выбор задаётся полем `selected`, а не `checked`, как у radio и checkbox.","required":["text","value"],"properties":{"text":{"type":"string","description":"Отображаемый текст","example":"Ничего","maxLength":75},"value":{"type":"string","description":"Уникальное строковое значение, которое будет передано в ваше приложение при выборе этого пункта","example":"nothing","maxLength":255},"description":{"type":"string","description":"Пояснение, которое будет указано серым цветом в этом пункте под отображаемым текстом","example":"Каждый день бот будет присылать список новых задач в вашей команде","maxLength":75},"selected":{"type":"boolean","description":"Изначально выбранный пункт. Только один пункт может быть выбран.","example":true}},"$ref":"#/components/schemas/ViewBlockSelectOption"}},"required":{"type":"boolean","description":"Обязательность","default":false,"example":false},"hint":{"type":"string","description":"Подсказка, которая отображается под выпадающим списком серым цветом","example":"Выберите одну из команд","maxLength":2000}},"$ref":"#/components/schemas/ViewBlockSelect"},{"type":"object","description":"Блок radio — радиокнопки","required":["type","name","label","options"],"properties":{"type":{"type":"string","description":"Тип блока","enum":["radio"],"x-enum-descriptions":{"radio":"Для радиокнопок всегда radio"},"example":"radio"},"name":{"type":"string","description":"Название, которое будет передано в ваше приложение как ключ указанного пользователем выбора","example":"accessibility","maxLength":255},"label":{"type":"string","description":"Подпись к группе радиокнопок","example":"Доступность","maxLength":150},"options":{"type":"array","description":"Массив радиокнопок","minItems":1,"maxItems":20,"items":{"type":"object","description":"Радиокнопка блока radio. Изначальный выбор задаётся полем `checked`, как у checkbox, а не `selected`, как у select.","required":["text","value"],"properties":{"text":{"type":"string","description":"Отображаемый текст","example":"Ничего","maxLength":75},"value":{"type":"string","description":"Уникальное строковое значение, которое будет передано в ваше приложение при выборе этого пункта","example":"nothing","maxLength":255},"description":{"type":"string","description":"Пояснение, которое будет указано серым цветом в этом пункте под отображаемым текстом","example":"Каждый день бот будет присылать список новых задач в вашей команде","maxLength":75},"checked":{"type":"boolean","description":"Изначально выбранная радиокнопка. Только одна радиокнопка может быть выбрана.","example":true}},"$ref":"#/components/schemas/ViewBlockSelectableOption"}},"required":{"type":"boolean","description":"Обязательность","default":false,"example":true},"hint":{"type":"string","description":"Подсказка, которая отображается под группой радиокнопок серым цветом","example":"Если вы не планируете выходить на связь, то выберите вариант Ничего","maxLength":2000}},"$ref":"#/components/schemas/ViewBlockRadio"},{"type":"object","description":"Блок checkbox — чекбоксы","required":["type","name","label","options"],"properties":{"type":{"type":"string","description":"Тип блока","enum":["checkbox"],"x-enum-descriptions":{"checkbox":"Для чекбоксов всегда checkbox"},"example":"checkbox"},"name":{"type":"string","description":"Название, которое будет передано в ваше приложение как ключ указанного пользователем выбора","example":"newsletters","maxLength":255},"label":{"type":"string","description":"Подпись к группе чекбоксов","example":"Рассылки","maxLength":150},"options":{"type":"array","description":"Массив чекбоксов","minItems":1,"maxItems":20,"items":{"type":"object","required":["text","value"],"properties":{"text":{"type":"string","description":"Отображаемый текст","example":"Ничего","maxLength":75},"value":{"type":"string","description":"Уникальное строковое значение, которое будет передано в ваше приложение при выборе этого пункта","example":"nothing","maxLength":255},"description":{"type":"string","description":"Пояснение, которое будет указано серым цветом в этом пункте под отображаемым текстом","example":"Каждый день бот будет присылать список новых задач в вашей команде","maxLength":75},"checked":{"type":"boolean","description":"Изначально выбранный пункт","example":true}},"$ref":"#/components/schemas/ViewBlockCheckboxOption"}},"required":{"type":"boolean","description":"Обязательность","default":false,"example":false},"hint":{"type":"string","description":"Подсказка, которая отображается под группой чекбоксов серым цветом","example":"Выберите интересующие вас рассылки","maxLength":2000}},"$ref":"#/components/schemas/ViewBlockCheckbox"},{"type":"object","description":"Блок date — выбор даты","required":["type","name","label"],"properties":{"type":{"type":"string","description":"Тип блока","enum":["date"],"x-enum-descriptions":{"date":"Для выбора даты всегда date"},"example":"date"},"name":{"type":"string","description":"Название, которое будет передано в ваше приложение как ключ указанного пользователем значения","example":"date_start","maxLength":255},"label":{"type":"string","description":"Подпись к полю","example":"Дата начала отпуска","maxLength":150},"initial_date":{"type":"string","format":"date","description":"Начальное значение в поле в формате YYYY-MM-DD","example":"2025-07-01"},"required":{"type":"boolean","description":"Обязательность","default":false,"example":true},"hint":{"type":"string","description":"Подсказка, которая отображается под полем серым цветом","example":"Укажите дату начала отпуска","maxLength":2000}},"$ref":"#/components/schemas/ViewBlockDate"},{"type":"object","description":"Блок time — выбор времени","required":["type","name","label"],"properties":{"type":{"type":"string","description":"Тип блока","enum":["time"],"x-enum-descriptions":{"time":"Для выбора времени всегда time"},"example":"time"},"name":{"type":"string","description":"Название, которое будет передано в ваше приложение как ключ указанного пользователем значения","example":"newsletter_time","maxLength":255},"label":{"type":"string","description":"Подпись к полю","example":"Время рассылки","maxLength":150},"initial_time":{"type":"string","format":"time","description":"Начальное значение в поле в формате HH:mm. Значение в формате HH:mm:ss тоже принимается — секунды отбрасываются.","example":"11:00"},"required":{"type":"boolean","description":"Обязательность","default":false,"example":false},"hint":{"type":"string","description":"Подсказка, которая отображается под полем серым цветом","example":"Укажите, в какое время присылать выбранные рассылки","maxLength":2000}},"$ref":"#/components/schemas/ViewBlockTime"},{"type":"object","description":"Блок file_input — загрузка файлов","required":["type","name","label"],"properties":{"type":{"type":"string","description":"Тип блока","enum":["file_input"],"x-enum-descriptions":{"file_input":"Для загрузки файлов всегда file_input"},"example":"file_input"},"name":{"type":"string","description":"Название, которое будет передано в ваше приложение как ключ указанного пользователем значения","example":"request_doc","maxLength":255},"label":{"type":"string","description":"Подпись к полю","example":"Заявление","maxLength":150},"filetypes":{"type":"array","description":"Массив допустимых расширений файлов, указанные в виде строк (например, [\"png\",\"jpg\",\"gif\"]). Точка в начале не нужна, но допустима — она подставляется сама. Значение с косой чертой считается MIME-типом и остаётся как есть. Если это поле не указано, все расширения файлов будут приняты. Значение подставляется в фильтр окна выбора файла, поэтому расширение полученного файла проверяйте у себя.","example":["pdf","jpg","png"],"items":{"type":"string"}},"max_files":{"type":"integer","format":"int32","description":"Максимальное количество файлов, которое может загрузить пользователь в это поле","default":10,"example":1,"minimum":1,"maximum":10},"required":{"type":"boolean","description":"Обязательность","default":false,"example":true},"hint":{"type":"string","description":"Подсказка, которая отображается под полем серым цветом","example":"Загрузите заполненное заявление с электронной подписью (в формате pdf, jpg или png)","maxLength":2000}},"$ref":"#/components/schemas/ViewBlockFileInput"}],"$ref":"#/components/schemas/ViewBlockUnion"}}}}},"$ref":"#/components/schemas/OpenViewRequest"}}}},"responses":{"201":{"description":"The request has succeeded and a new resource has been created as a result."},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"410":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"views:write","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":false},"docs":"# Открытие представления\n\n**Метод**: `POST`\n\n**Путь**: `/views/open`\n\n> **Скоуп:** `views:write`\n\nПоказывает пользователю модальное окно с формой в ответ на его действие. Метод вызывают токеном бота: события о нажатии кнопок приходят только ботам, от имени бота окно и открывается.\n\nОткрыть окно можно единственным способом — по `trigger_id` из события о нажатии кнопки. Один `trigger_id` открывает одно окно и живёт 3 секунды: у бота с вебхуком — с момента, когда Пачка передала нажатие, у бота с [Журналом событий](GET /webhooks/events) — с момента записи нажатия в журнал. Поэтому окно открывают первым делом, а всё остальное по событию делают уже после.\n\nЗаполненная форма приходит обратно событием `view_submit`: на исходящий вебхук, а если адрес не задан — в журнал. На вебхук отвечают прямо в ответе на него, и Пачка ждёт его 3 секунды. Событие из журнала закрывают методом [Ответ на отправку формы](POST /views/{view_id}/submit_response), на это есть 5 секунд. Не успели — пользователь увидит ошибку отправки.\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `type: string` (required) — Способ открытия представления. Пример: `\"modal\"`\n Значения: `modal` — Модальное окно\n- `trigger_id: string` (required) — Уникальный идентификатор события (полученный, например, в исходящем вебхуке о нажатии кнопки). Пример: `\"791a056b-006c-49dd-834b-c633fde52fe8\"`\n- `private_metadata: string` (max length: 3000) — Необязательная строка, которая будет отправлена в ваше приложение при отправке пользователем заполненной формы. Используйте это поле, например, для передачи в формате `JSON` какой то дополнительной информации вместе с заполненной пользователем формой. Пример: `\"{\\\"timeoff_id\\\":4378}\"`\n- `callback_id: string` (max length: 255) — Необязательный идентификатор для распознавания этого представления, который будет отправлен в ваше приложение при отправке пользователем заполненной формы. Используйте это поле, например, для понимания, какую форму должен был заполнить пользователь. Пример: `\"timeoff_request_form\"`\n- `view: object` (required) — Собранный объект представления\n - `title: string` (required, max length: 24) — Заголовок представления. Пример: `\"Уведомление об отпуске\"`\n - `close_text: string` (default: Отменить, max length: 24) — Текст кнопки закрытия представления. Отображается только в десктоп-вебе. В мобильных приложениях (iOS/Android) кнопка закрытия — это крестик в шапке, и заданный текст там не показывается. Пример: `\"Закрыть\"`\n - `submit_text: string` (default: Отправить, max length: 24) — Текст кнопки отправки формы. Пример: `\"Отправить заявку\"`\n - `blocks: array (union)` (required, max items: 100) — Массив блоков представления\n **Возможные типы элементов:**\n\n - **ViewBlockHeader**: Блок header — заголовок\n - `type: string` (required) — Тип блока\n Значения: `header` — Для заголовков всегда header\n - `text: string` (required, max length: 150) — Текст заголовка\n - **ViewBlockPlainText**: Блок plain_text — обычный текст\n - `type: string` (required) — Тип блока\n Значения: `plain_text` — Для обычного текста всегда plain_text\n - `text: string` (required, max length: 12000) — Текст\n - **ViewBlockMarkdown**: Блок markdown — форматированный текст\n - `type: string` (required) — Тип блока\n Значения: `markdown` — Для форматированного текста всегда markdown\n - `text: string` (required, max length: 12000) — Текст\n - **ViewBlockDivider**: Блок divider — разделитель\n - `type: string` (required) — Тип блока\n Значения: `divider` — Для разделителя всегда divider\n - **ViewBlockInput**: Блок input — текстовое поле ввода\n - `type: string` (required) — Тип блока\n Значения: `input` — Для текстового поля всегда input\n - `name: string` (required, max length: 255) — Название, которое будет передано в ваше приложение как ключ указанного пользователем значения\n - `label: string` (required, max length: 150) — Подпись к полю\n - `placeholder: string` (max length: 150) — Подсказка внутри поля ввода, пока оно пустое\n - `multiline: boolean` (default: false) — Многострочное поле\n - `initial_value: string` (max length: 3000) — Начальное значение в поле\n - `min_length: integer, int32` (min: 0, max: 3000) — Минимальная длина текста, который должен написать пользователь. Если пользователь напишет меньше, он получит ошибку.\n - `max_length: integer, int32` (min: 1, max: 3000) — Максимальная длина текста, который должен написать пользователь. Если пользователь напишет больше, он получит ошибку.\n - `required: boolean` (default: false) — Обязательность\n - `hint: string` (max length: 2000) — Подсказка, которая отображается под полем серым цветом\n - **ViewBlockSelect**: Блок select — выпадающий список\n - `type: string` (required) — Тип блока\n Значения: `select` — Для выпадающего списка всегда select\n - `name: string` (required, max length: 255) — Название, которое будет передано в ваше приложение как ключ указанного пользователем выбора\n - `label: string` (required, max length: 150) — Подпись к выпадающему списку\n - `options: array of object` (required, max items: 100) — Массив доступных пунктов в выпадающем списке\n - `text: string` (required, max length: 75) — Отображаемый текст\n - `value: string` (required, max length: 255) — Уникальное строковое значение, которое будет передано в ваше приложение при выборе этого пункта\n - `description: string` (max length: 75) — Пояснение, которое будет указано серым цветом в этом пункте под отображаемым текстом\n - `selected: boolean` — Изначально выбранный пункт. Только один пункт может быть выбран.\n - `required: boolean` (default: false) — Обязательность\n - `hint: string` (max length: 2000) — Подсказка, которая отображается под выпадающим списком серым цветом\n - **ViewBlockRadio**: Блок radio — радиокнопки\n - `type: string` (required) — Тип блока\n Значения: `radio` — Для радиокнопок всегда radio\n - `name: string` (required, max length: 255) — Название, которое будет передано в ваше приложение как ключ указанного пользователем выбора\n - `label: string` (required, max length: 150) — Подпись к группе радиокнопок\n - `options: array of object` (required, max items: 20) — Массив радиокнопок\n - `text: string` (required, max length: 75) — Отображаемый текст\n - `value: string` (required, max length: 255) — Уникальное строковое значение, которое будет передано в ваше приложение при выборе этого пункта\n - `description: string` (max length: 75) — Пояснение, которое будет указано серым цветом в этом пункте под отображаемым текстом\n - `checked: boolean` — Изначально выбранная радиокнопка. Только одна радиокнопка может быть выбрана.\n - `required: boolean` (default: false) — Обязательность\n - `hint: string` (max length: 2000) — Подсказка, которая отображается под группой радиокнопок серым цветом\n - **ViewBlockCheckbox**: Блок checkbox — чекбоксы\n - `type: string` (required) — Тип блока\n Значения: `checkbox` — Для чекбоксов всегда checkbox\n - `name: string` (required, max length: 255) — Название, которое будет передано в ваше приложение как ключ указанного пользователем выбора\n - `label: string` (required, max length: 150) — Подпись к группе чекбоксов\n - `options: array of object` (required, max items: 20) — Массив чекбоксов\n - `text: string` (required, max length: 75) — Отображаемый текст\n - `value: string` (required, max length: 255) — Уникальное строковое значение, которое будет передано в ваше приложение при выборе этого пункта\n - `description: string` (max length: 75) — Пояснение, которое будет указано серым цветом в этом пункте под отображаемым текстом\n - `checked: boolean` — Изначально выбранный пункт\n - `required: boolean` (default: false) — Обязательность\n - `hint: string` (max length: 2000) — Подсказка, которая отображается под группой чекбоксов серым цветом\n - **ViewBlockDate**: Блок date — выбор даты\n - `type: string` (required) — Тип блока\n Значения: `date` — Для выбора даты всегда date\n - `name: string` (required, max length: 255) — Название, которое будет передано в ваше приложение как ключ указанного пользователем значения\n - `label: string` (required, max length: 150) — Подпись к полю\n - `initial_date: date` — Начальное значение в поле в формате YYYY-MM-DD\n - `required: boolean` (default: false) — Обязательность\n - `hint: string` (max length: 2000) — Подсказка, которая отображается под полем серым цветом\n - **ViewBlockTime**: Блок time — выбор времени\n - `type: string` (required) — Тип блока\n Значения: `time` — Для выбора времени всегда time\n - `name: string` (required, max length: 255) — Название, которое будет передано в ваше приложение как ключ указанного пользователем значения\n - `label: string` (required, max length: 150) — Подпись к полю\n - `initial_time: string, time` — Начальное значение в поле в формате HH:mm. Значение в формате HH:mm:ss тоже принимается — секунды отбрасываются.\n - `required: boolean` (default: false) — Обязательность\n - `hint: string` (max length: 2000) — Подсказка, которая отображается под полем серым цветом\n - **ViewBlockFileInput**: Блок file_input — загрузка файлов\n - `type: string` (required) — Тип блока\n Значения: `file_input` — Для загрузки файлов всегда file_input\n - `name: string` (required, max length: 255) — Название, которое будет передано в ваше приложение как ключ указанного пользователем значения\n - `label: string` (required, max length: 150) — Подпись к полю\n - `filetypes: array of string` — Массив допустимых расширений файлов, указанные в виде строк (например, [\"png\",\"jpg\",\"gif\"]). Точка в начале не нужна, но допустима — она подставляется сама. Значение с косой чертой считается MIME-типом и остаётся как есть. Если это поле не указано, все расширения файлов будут приняты. Значение подставляется в фильтр окна выбора файла, поэтому расширение полученного файла проверяйте у себя.\n - `max_files: integer, int32` (default: 10, min: 1, max: 10) — Максимальное количество файлов, которое может загрузить пользователь в это поле\n - `required: boolean` (default: false) — Обязательность\n - `hint: string` (max length: 2000) — Подсказка, которая отображается под полем серым цветом\n\n### Пример\n\n```json\n{\n \"type\": \"modal\",\n \"trigger_id\": \"791a056b-006c-49dd-834b-c633fde52fe8\",\n \"private_metadata\": \"{\\\"timeoff_id\\\":4378}\",\n \"callback_id\": \"timeoff_request_form\",\n \"view\": {\n \"title\": \"Уведомление об отпуске\",\n \"close_text\": \"Закрыть\",\n \"submit_text\": \"Отправить заявку\",\n \"blocks\": [\n {\n \"type\": \"header\",\n \"text\": \"Основная информация\"\n },\n {\n \"type\": \"plain_text\",\n \"text\": \"Заполните форму. После отправки формы в общий чат будет отправлено текстовое уведомление, а ваш отпуск будет сохранен в базе.\"\n },\n {\n \"type\": \"markdown\",\n \"text\": \"Информацию о доступных вам днях отпуска вы можете прочитать по [ссылке](https://www.website.com/timeoff)\"\n },\n {\n \"type\": \"divider\"\n },\n {\n \"type\": \"input\",\n \"name\": \"info\",\n \"label\": \"Описание отпуска\",\n \"placeholder\": \"Куда собираетесь и что будете делать\",\n \"multiline\": true,\n \"initial_value\": \"Начальный текст\",\n \"min_length\": 10,\n \"max_length\": 500,\n \"required\": true,\n \"hint\": \"Возможно вам подскаджут, какие места лучше посетить\"\n },\n {\n \"type\": \"select\",\n \"name\": \"team\",\n \"label\": \"Выберите команду\",\n \"options\": [\n {\n \"text\": \"Ничего\",\n \"value\": \"nothing\",\n \"description\": \"Каждый день бот будет присылать список новых задач в вашей команде\",\n \"selected\": true\n }\n ],\n \"hint\": \"Выберите одну из команд\"\n },\n {\n \"type\": \"radio\",\n \"name\": \"accessibility\",\n \"label\": \"Доступность\",\n \"options\": [\n {\n \"text\": \"Ничего\",\n \"value\": \"nothing\",\n \"description\": \"Каждый день бот будет присылать список новых задач в вашей команде\",\n \"checked\": true\n }\n ],\n \"required\": true,\n \"hint\": \"Если вы не планируете выходить на связь, то выберите вариант Ничего\"\n },\n {\n \"type\": \"checkbox\",\n \"name\": \"newsletters\",\n \"label\": \"Рассылки\",\n \"options\": [\n {\n \"text\": \"Ничего\",\n \"value\": \"nothing\",\n \"description\": \"Каждый день бот будет присылать список новых задач в вашей команде\",\n \"checked\": true\n }\n ],\n \"hint\": \"Выберите интересующие вас рассылки\"\n },\n {\n \"type\": \"date\",\n \"name\": \"date_start\",\n \"label\": \"Дата начала отпуска\",\n \"initial_date\": \"2025-07-01\",\n \"required\": true,\n \"hint\": \"Укажите дату начала отпуска\"\n },\n {\n \"type\": \"time\",\n \"name\": \"newsletter_time\",\n \"label\": \"Время рассылки\",\n \"initial_time\": \"11:00\",\n \"hint\": \"Укажите, в какое время присылать выбранные рассылки\"\n },\n {\n \"type\": \"file_input\",\n \"name\": \"request_doc\",\n \"label\": \"Заявление\",\n \"filetypes\": [\n \"pdf\",\n \"jpg\",\n \"png\"\n ],\n \"max_files\": 1,\n \"required\": true,\n \"hint\": \"Загрузите заполненное заявление с электронной подписью (в формате pdf, jpg или png)\"\n }\n ]\n }\n}\n```\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/views/open\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"type\": \"modal\",\n \"trigger_id\": \"791a056b-006c-49dd-834b-c633fde52fe8\",\n \"private_metadata\": \"{\\\"timeoff_id\\\":4378}\",\n \"callback_id\": \"timeoff_request_form\",\n \"view\": {\n \"title\": \"Уведомление об отпуске\",\n \"close_text\": \"Закрыть\",\n \"submit_text\": \"Отправить заявку\",\n \"blocks\": [\n {\n \"type\": \"header\",\n \"text\": \"Основная информация\"\n },\n {\n \"type\": \"plain_text\",\n \"text\": \"Заполните форму. После отправки формы в общий чат будет отправлено текстовое уведомление, а ваш отпуск будет сохранен в базе.\"\n },\n {\n \"type\": \"markdown\",\n \"text\": \"Информацию о доступных вам днях отпуска вы можете прочитать по [ссылке](https://www.website.com/timeoff)\"\n },\n {\n \"type\": \"divider\"\n },\n {\n \"type\": \"input\",\n \"name\": \"info\",\n \"label\": \"Описание отпуска\",\n \"placeholder\": \"Куда собираетесь и что будете делать\",\n \"multiline\": true,\n \"initial_value\": \"Начальный текст\",\n \"min_length\": 10,\n \"max_length\": 500,\n \"required\": true,\n \"hint\": \"Возможно вам подскаджут, какие места лучше посетить\"\n },\n {\n \"type\": \"select\",\n \"name\": \"team\",\n \"label\": \"Выберите команду\",\n \"options\": [\n {\n \"text\": \"Ничего\",\n \"value\": \"nothing\",\n \"description\": \"Каждый день бот будет присылать список новых задач в вашей команде\",\n \"selected\": true\n }\n ],\n \"hint\": \"Выберите одну из команд\"\n },\n {\n \"type\": \"radio\",\n \"name\": \"accessibility\",\n \"label\": \"Доступность\",\n \"options\": [\n {\n \"text\": \"Ничего\",\n \"value\": \"nothing\",\n \"description\": \"Каждый день бот будет присылать список новых задач в вашей команде\",\n \"checked\": true\n }\n ],\n \"required\": true,\n \"hint\": \"Если вы не планируете выходить на связь, то выберите вариант Ничего\"\n },\n {\n \"type\": \"checkbox\",\n \"name\": \"newsletters\",\n \"label\": \"Рассылки\",\n \"options\": [\n {\n \"text\": \"Ничего\",\n \"value\": \"nothing\",\n \"description\": \"Каждый день бот будет присылать список новых задач в вашей команде\",\n \"checked\": true\n }\n ],\n \"hint\": \"Выберите интересующие вас рассылки\"\n },\n {\n \"type\": \"date\",\n \"name\": \"date_start\",\n \"label\": \"Дата начала отпуска\",\n \"initial_date\": \"2025-07-01\",\n \"required\": true,\n \"hint\": \"Укажите дату начала отпуска\"\n },\n {\n \"type\": \"time\",\n \"name\": \"newsletter_time\",\n \"label\": \"Время рассылки\",\n \"initial_time\": \"11:00\",\n \"hint\": \"Укажите, в какое время присылать выбранные рассылки\"\n },\n {\n \"type\": \"file_input\",\n \"name\": \"request_doc\",\n \"label\": \"Заявление\",\n \"filetypes\": [\n \"pdf\",\n \"jpg\",\n \"png\"\n ],\n \"max_files\": 1,\n \"required\": true,\n \"hint\": \"Загрузите заполненное заявление с электронной подписью (в формате pdf, jpg или png)\"\n }\n ]\n }\n}'\n```\n\n## Ответы\n\n### 201: The request has succeeded and a new resource has been created as a result.\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 410: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"POST","path":"/views/{view_id}/submit_response","summary":"Ответ на отправку формы","scope":"views:write","plan":null,"auth":true,"paginated":false,"command":"pachca views submit-response","docLink":"https://dev.pachca.com/api/views/submit-response","describe":"# POST /views/{view_id}/submit_response — Ответ на отправку формы\n\n> **Скоуп:** `views:write`\n\n## Параметры\n\n- `view_id` — путь (обязательный): Идентификатор представления\n\n## Тело запроса\n\n- `submit_id: string` (required) — Идентификатор отправки формы из вебхука `view_submit`\n- `errors: Record` — Ошибки заполнения полей. Ключ — `name` блока, значение — текст ошибки под полем. Без этого поля представление закрывается как успешно отправленное.\n **Структура значений Record:**\n - Тип значения: `string`\n\n## Эквивалентная команда\n\n```bash\npachca views submit-response 01KAJZ2XDSS2S3DSW9EXJZ0TBV \\\n --submit-id=791a056b-006c-49dd-834b-c633fde52fe8 \\\n --errors='{\"date_end\":\"Дата окончания отпуска не может быть меньше даты начала\"}' \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/views/submit-response\nПолная справка: `pachca api POST /views/{view_id}/submit_response --docs` · схема: `--spec`\n","spec":{"method":"POST","path":"/views/{view_id}/submit_response","description":"Ответ на отправку формы\n\nЗакрывает форму сотруднику или показывает ему ошибки под полями. Метод нужен боту, у которого не задан адрес исходящего вебхука: отвечать на вебхук такому боту некуда, и событие `view_submit` он получает из метода [История событий](GET /webhooks/events). Если адрес вебхука задан, отвечайте прямо на вебхук — это проще и не требует опроса журнала.\n\nИдентификаторы `view_id` и `submit_id` приходят в теле события. Ответить нужно в течение 5 секунд с момента отправки формы, иначе сотрудник увидит ошибку отправки, а значения полей сохранятся для повторной попытки.\n\nТело без поля `errors` закрывает форму как успешно отправленную, с полем `errors` — показывает текст ошибки под каждым названным полем.\n\nОтвет принимается один раз. Повторный вызов с той же парой `view_id` и `submit_id`, как и опоздавший, получает `410` с кодом `submit_expired`.","parameters":[{"name":"view_id","in":"path","description":"Идентификатор представления","required":true,"schema":{"type":"string","example":"01KAJZ2XDSS2S3DSW9EXJZ0TBV"},"example":"01KAJZ2XDSS2S3DSW9EXJZ0TBV"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Ответ бота на отправку формы","required":["submit_id"],"properties":{"submit_id":{"type":"string","description":"Идентификатор отправки формы из вебхука `view_submit`","example":"791a056b-006c-49dd-834b-c633fde52fe8"},"errors":{"type":"object","description":"Ошибки заполнения полей. Ключ — `name` блока, значение — текст ошибки под полем. Без этого поля представление закрывается как успешно отправленное.","example":{"date_end":"Дата окончания отпуска не может быть меньше даты начала"},"additionalProperties":{"type":"string"}}},"$ref":"#/components/schemas/SubmitViewResponseRequest"}}}},"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Результат ответа на отправку формы","required":["success"],"properties":{"success":{"type":"boolean","description":"Признак успешной обработки","example":true}},"$ref":"#/components/schemas/SubmitViewResponseResult"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"410":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Service unavailable.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"views:write","scopeRoles":["owner","admin","user","multi_guest","bot"]},"paginated":false},"docs":"# Ответ на отправку формы\n\n**Метод**: `POST`\n\n**Путь**: `/views/{view_id}/submit_response`\n\n> **Скоуп:** `views:write`\n\nЗакрывает форму сотруднику или показывает ему ошибки под полями. Метод нужен боту, у которого не задан адрес исходящего вебхука: отвечать на вебхук такому боту некуда, и событие `view_submit` он получает из метода [История событий](GET /webhooks/events). Если адрес вебхука задан, отвечайте прямо на вебхук — это проще и не требует опроса журнала.\n\nИдентификаторы `view_id` и `submit_id` приходят в теле события. Ответить нужно в течение 5 секунд с момента отправки формы, иначе сотрудник увидит ошибку отправки, а значения полей сохранятся для повторной попытки.\n\nТело без поля `errors` закрывает форму как успешно отправленную, с полем `errors` — показывает текст ошибки под каждым названным полем.\n\nОтвет принимается один раз. Повторный вызов с той же парой `view_id` и `submit_id`, как и опоздавший, получает `410` с кодом `submit_expired`.\n\n## Параметры\n\n### Path параметры\n\n- `view_id: string` (required) — Идентификатор представления\n\n\n## Тело запроса\n\n**Обязательно**\n\nФормат: `application/json`\n\n### Схема\n\n- `submit_id: string` (required) — Идентификатор отправки формы из вебхука `view_submit`. Пример: `\"791a056b-006c-49dd-834b-c633fde52fe8\"`\n- `errors: Record` — Ошибки заполнения полей. Ключ — `name` блока, значение — текст ошибки под полем. Без этого поля представление закрывается как успешно отправленное. Пример: `{\"date_end\":\"Дата окончания отпуска не может быть меньше даты начала\"}`\n **Структура значений Record:**\n - Тип значения: `string`\n\n### Пример\n\n```json\n{\n \"submit_id\": \"791a056b-006c-49dd-834b-c633fde52fe8\",\n \"errors\": {\n \"date_end\": \"Дата окончания отпуска не может быть меньше даты начала\"\n }\n}\n```\n\n## Пример запроса\n\n```bash\ncurl \"https://api.pachca.com/api/shared/v1/views/01KAJZ2XDSS2S3DSW9EXJZ0TBV/submit_response\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"submit_id\": \"791a056b-006c-49dd-834b-c633fde52fe8\",\n \"errors\": {\n \"date_end\": \"Дата окончания отпуска не может быть меньше даты начала\"\n }\n}'\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `success: boolean` (required) — Признак успешной обработки. Пример: `true`\n\n**Пример ответа:**\n\n```json\n{\n \"success\": true\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 410: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 503: Service unavailable.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"GET","path":"/webhooks/events","summary":"История событий","scope":"webhooks:events:read","plan":null,"auth":true,"paginated":true,"command":"pachca bots list-events","docLink":"https://dev.pachca.com/api/bots/list-events","describe":"# GET /webhooks/events — История событий\n\n> **Скоуп:** `webhooks:events:read`\n\n> Пагинация: добавьте `--all` для автоматического обхода страниц\n\n## Параметры\n\n- `limit` — query: Количество возвращаемых сущностей за один запрос\n- `cursor` — query: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n## Эквивалентная команда\n\n```bash\n# Добавьте --all для автоматической пагинации\npachca bots list-events \\\n --limit=1 \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/bots/list-events\nПолная справка: `pachca api GET /webhooks/events --docs` · схема: `--spec`\n","spec":{"method":"GET","path":"/webhooks/events","description":"История событий\n\nЖурнал событий бота: то же самое, что уходит в исходящий вебхук, но забирается запросом. Метод нужен, когда принимать вебхуки на свой адрес нельзя — обработчик недоступен из интернета, поднимается не всегда или пишется прямо сейчас.\n\nЖурнал ведётся, только когда в настройках бота включён пункт «Сохранять историю событий» на вкладке «Исходящий вебхук». Адрес вебхука при этом можно не указывать вовсе, а если он указан, событие и уедет на него, и ляжет в журнал.\n\nМетод работает только с токеном бота: у личного токена своего журнала нет. События отдаются от новых к старым, идентификатор события — строка, а не число.\n\nСам журнал не очищается: прочитанные события удаляйте методом [Удаление события](DELETE /webhooks/events/{id}), иначе они придут снова при повторном запросе.","parameters":[{"name":"limit","in":"query","description":"Количество возвращаемых сущностей за один запрос","required":false,"schema":{"type":"integer","format":"int32","default":50,"example":1,"minimum":1,"maximum":50},"example":1,"explode":false},{"name":"cursor","in":"query","description":"Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)","required":false,"schema":{"type":"string","example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9"},"example":"eyJpZCI6MTAsImRpciI6ImFzYyJ9","explode":false}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","description":"Обертка ответа с данными и пагинацией","required":["data","meta"],"properties":{"data":{"type":"array","items":{"type":"object","description":"Событие исходящего вебхука","required":["id","event_type","payload","created_at"],"properties":{"id":{"type":"string","description":"Идентификатор события","example":"01KAJZ2XDSS2S3DSW9EXJZ0TBV"},"event_type":{"type":"string","description":"Тип события","example":"message_new"},"payload":{"description":"Объект вебхука","allOf":[{"description":"Объединение всех типов payload вебхуков","anyOf":[{"type":"object","description":"Структура исходящего вебхука о сообщении","required":["type","id","event","entity_type","entity_id","content","user_id","created_at","url","chat_id","webhook_timestamp"],"properties":{"type":{"type":"string","description":"Тип объекта","enum":["message"],"x-enum-descriptions":{"message":"Для сообщений всегда message"},"example":"message"},"id":{"type":"integer","format":"int32","description":"Идентификатор сообщения","example":1245817},"event":{"description":"Тип события","example":"new","allOf":[{"type":"string","description":"Тип события webhook","enum":["new","update","delete"],"x-enum-descriptions":{"new":"Создание","update":"Обновление","delete":"Удаление"},"$ref":"#/components/schemas/WebhookEventType"}]},"entity_type":{"description":"Тип сущности, к которой относится сообщение","example":"discussion","allOf":[{"type":"string","description":"Тип сущности для сообщений","enum":["discussion","thread","user"],"x-enum-descriptions":{"discussion":"Беседа или канал","thread":"Тред","user":"Пользователь"},"$ref":"#/components/schemas/MessageEntityType"}]},"entity_id":{"type":"integer","format":"int32","description":"Идентификатор сущности, к которой относится сообщение","example":5678},"content":{"type":"string","description":"Текст сообщения","example":"Текст сообщения"},"user_id":{"type":"integer","format":"int32","description":"Идентификатор отправителя сообщения","example":2345},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2025-05-15T14:30:00.000Z"},"changed_at":{"type":"string","format":"date-time","description":"Дата и время последнего изменения сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. У неотредактированного сообщения совпадает с датой создания. `null` у сообщений, отправленных до появления этого поля.","example":"2025-05-15T14:35:00.000Z","nullable":true},"url":{"type":"string","description":"Прямая ссылка на сообщение","example":"https://pachca.com/chats/1245817/messages/5678"},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором находится сообщение","example":9012},"parent_message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, к которому написан ответ. `null`, если сообщение не является ответом на другое сообщение.","example":3456,"nullable":true},"thread":{"type":"object","description":"Тред, в котором отправлено сообщение. `null`, если сообщение отправлено не в треде. В отличие от поля `thread` в объекте сообщения REST API, здесь описывается тред, внутри которого находится сообщение.","nullable":true,"allOf":[{"type":"object","description":"Объект треда в вебхуке сообщения","required":["message_id","message_chat_id"],"properties":{"message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, к которому был создан тред. `null` у треда без сообщения-родителя — такие создаёт [Новый самостоятельный тред](POST /threads).","example":12345,"nullable":true},"message_chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата сообщения, к которому был создан тред. `null` у треда без сообщения-родителя.","example":67890,"nullable":true}},"$ref":"#/components/schemas/WebhookMessageThread"}]},"webhook_timestamp":{"type":"integer","format":"int32","description":"Дата и время отправки вебхука (UTC+0) в формате UNIX","example":1747574400}},"$ref":"#/components/schemas/MessageWebhookPayload"},{"type":"object","description":"Структура исходящего вебхука о реакции","required":["type","event","chat_id","message_id","code","name","user_id","created_at","webhook_timestamp"],"properties":{"type":{"type":"string","description":"Тип объекта","enum":["reaction"],"x-enum-descriptions":{"reaction":"Для реакций всегда reaction"},"example":"reaction"},"event":{"description":"Тип события","example":"new","allOf":[{"type":"string","description":"Тип события webhook для реакций","enum":["new","delete"],"x-enum-descriptions":{"new":"Создание","delete":"Удаление"},"$ref":"#/components/schemas/ReactionEventType"}]},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором находится сообщение. Поле всегда присутствует в payload. В редких случаях (например, если сообщение было удалено к моменту отправки вебхука) может быть `null`.","example":9012,"nullable":true},"message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, к которому относится реакция","example":1245817},"code":{"type":"string","description":"Emoji символ реакции","example":"👍"},"name":{"type":"string","description":"Название реакции","example":"thumbsup"},"user_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, который добавил или удалил реакцию","example":2345},"created_at":{"type":"string","format":"date-time","description":"Дата и время добавления реакции (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Поле присутствует и для события удаления реакции.","example":"2025-05-15T14:30:00.000Z"},"webhook_timestamp":{"type":"integer","format":"int32","description":"Дата и время отправки вебхука (UTC+0) в формате UNIX","example":1747574400}},"$ref":"#/components/schemas/ReactionWebhookPayload"},{"type":"object","description":"Структура исходящего вебхука о нажатии кнопки","required":["type","event","message_id","trigger_id","data","user_id","chat_id","webhook_timestamp"],"properties":{"type":{"type":"string","description":"Тип объекта","enum":["button"],"x-enum-descriptions":{"button":"Для кнопки всегда button"},"example":"button"},"event":{"type":"string","description":"Тип события","enum":["click"],"x-enum-descriptions":{"click":"Нажатие кнопки"},"example":"click"},"message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, к которому относится кнопка","example":1245817},"trigger_id":{"type":"string","description":"Уникальный идентификатор события. Время жизни — 3 секунды. Может быть использован, например, для открытия представления пользователю.","example":"a1b2c3d4-5e6f-7g8h-9i10-j11k12l13m14"},"data":{"type":"string","description":"Данные нажатой кнопки","example":"button_data"},"user_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, который нажал кнопку","example":2345},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором была нажата кнопка","example":9012},"webhook_timestamp":{"type":"integer","format":"int32","description":"Дата и время отправки вебхука (UTC+0) в формате UNIX","example":1747574400}},"$ref":"#/components/schemas/ButtonWebhookPayload"},{"type":"object","description":"Структура исходящего вебхука о заполнении формы","required":["type","event","callback_id","private_metadata","chat_id","user_id","view_id","submit_id","data","webhook_timestamp"],"properties":{"type":{"type":"string","description":"Тип объекта","enum":["view"],"x-enum-descriptions":{"view":"Для формы всегда view"},"example":"view"},"event":{"type":"string","description":"Тип события","enum":["submit"],"x-enum-descriptions":{"submit":"Отправка формы"},"example":"submit"},"callback_id":{"type":"string","description":"Идентификатор обратного вызова, указанный при открытии представления. `null`, если при открытии формы он не был указан.","example":"timeoff_request_form","nullable":true},"private_metadata":{"type":"string","description":"Приватные метаданные, указанные при открытии представления. `null`, если при открытии формы они не были указаны.","example":"{\"timeoff_id\":4378}","nullable":true},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором была нажата кнопка, открывшая форму. Поле может быть `null` для форм, открытых до выкатки этого поля.","example":9012,"nullable":true},"user_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, который отправил форму","example":1235523},"view_id":{"type":"string","description":"Идентификатор представления. Нужен боту без адреса исходящего вебхука, чтобы ответить методом [Ответ на отправку формы](POST /views/{view_id}/submit_response).","example":"01KAJZ2XDSS2S3DSW9EXJZ0TBV"},"submit_id":{"type":"string","description":"Идентификатор отправки формы. Нужен боту без адреса исходящего вебхука, чтобы ответить методом [Ответ на отправку формы](POST /views/{view_id}/submit_response).","example":"791a056b-006c-49dd-834b-c633fde52fe8"},"data":{"type":"object","description":"Данные заполненных полей представления. Ключ — `name` блока, значение — введённые данные. У блока `file_input` значение приходит массивом объектов с полями `name`, `size` и `url`, ссылка действует 2 часа.","additionalProperties":{}},"webhook_timestamp":{"type":"integer","format":"int32","description":"Дата и время отправки вебхука (UTC+0) в формате UNIX","example":1755075544}},"$ref":"#/components/schemas/ViewSubmitWebhookPayload"},{"type":"object","description":"Структура исходящего вебхука об участниках чата","required":["type","event","chat_id","user_ids","created_at","webhook_timestamp"],"properties":{"type":{"type":"string","description":"Тип объекта","enum":["chat_member"],"x-enum-descriptions":{"chat_member":"Для участника чата всегда chat_member"},"example":"chat_member"},"event":{"description":"Тип события","example":"add","allOf":[{"type":"string","description":"Тип события webhook для участников","enum":["add","remove"],"x-enum-descriptions":{"add":"Добавление","remove":"Удаление"},"$ref":"#/components/schemas/MemberEventType"}]},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором изменился состав участников","example":9012},"thread_id":{"type":"integer","format":"int32","description":"Идентификатор треда. `null`, если участники добавлены в обычный чат или канал, а не в тред.","example":5678,"nullable":true},"user_ids":{"type":"array","description":"Массив идентификаторов пользователей, с которыми произошло событие","example":[2345,6789],"items":{"type":"integer","format":"int32"}},"created_at":{"type":"string","format":"date-time","description":"Дата и время события (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ssZ. В этом вебхуке время приходит без долей секунды, в отличие от остальных.","example":"2025-05-15T14:30:00Z"},"webhook_timestamp":{"type":"integer","format":"int32","description":"Дата и время отправки вебхука (UTC+0) в формате UNIX","example":1747574400}},"$ref":"#/components/schemas/ChatMemberWebhookPayload"},{"type":"object","description":"Структура исходящего вебхука об участниках пространства","required":["type","event","user_ids","created_at","webhook_timestamp"],"properties":{"type":{"type":"string","description":"Тип объекта","enum":["company_member"],"x-enum-descriptions":{"company_member":"Для участника пространства всегда company_member"},"example":"company_member"},"event":{"description":"Тип события","example":"invite","allOf":[{"type":"string","description":"Тип события webhook для пользователей","enum":["invite","confirm","update","suspend","activate","delete"],"x-enum-descriptions":{"invite":"Приглашение","confirm":"Подтверждение","update":"Обновление","suspend":"Приостановка","activate":"Активация","delete":"Удаление"},"$ref":"#/components/schemas/UserEventType"}]},"user_ids":{"type":"array","description":"Массив идентификаторов пользователей, с которыми произошло событие","example":[2345,6789],"items":{"type":"integer","format":"int32"}},"created_at":{"type":"string","format":"date-time","description":"Дата и время события (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ssZ. В этом вебхуке время приходит без долей секунды, в отличие от остальных.","example":"2025-05-15T14:30:00Z"},"webhook_timestamp":{"type":"integer","format":"int32","description":"Дата и время отправки вебхука (UTC+0) в формате UNIX","example":1747574400}},"$ref":"#/components/schemas/CompanyMemberWebhookPayload"},{"type":"object","description":"Структура исходящего вебхука о разворачивании ссылок","required":["type","event","chat_id","message_id","links","user_id","entity_type","entity_id","thread","created_at","webhook_timestamp"],"properties":{"type":{"type":"string","description":"Тип объекта","enum":["message"],"x-enum-descriptions":{"message":"Для разворачивания ссылок всегда message"},"example":"message"},"event":{"type":"string","description":"Тип события","enum":["link_shared"],"x-enum-descriptions":{"link_shared":"Обнаружена ссылка на отслеживаемый домен"},"example":"link_shared"},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором обнаружена ссылка","example":23438},"message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, содержащего ссылку","example":268092},"links":{"type":"array","description":"Массив обнаруженных ссылок на отслеживаемые домены","items":{"type":"object","description":"Объект ссылки в вебхуке разворачивания ссылок","required":["url","domain","skip"],"properties":{"url":{"type":"string","description":"URL ссылки","example":"https://example.com/page1"},"domain":{"type":"string","description":"Домен ссылки","example":"example.com"},"skip":{"type":"boolean","description":"Признак того, что автор сообщения скрыл превью для этой ссылки. Если `true` — бот не должен создавать превью.","example":false}},"$ref":"#/components/schemas/WebhookLink"}},"user_id":{"type":"integer","format":"int32","description":"Идентификатор отправителя сообщения","example":2345},"entity_type":{"description":"Тип сущности, к которой относится сообщение со ссылкой","example":"discussion","allOf":[{"type":"string","description":"Тип сущности для сообщений","enum":["discussion","thread","user"],"x-enum-descriptions":{"discussion":"Беседа или канал","thread":"Тред","user":"Пользователь"},"$ref":"#/components/schemas/MessageEntityType"}]},"entity_id":{"type":"integer","format":"int32","description":"Идентификатор сущности: беседы или канала, треда. В личной переписке `null`: бот в ней не участвует, и собеседника ему не раскрывают.","example":23438,"nullable":true},"thread":{"type":"object","description":"Тред, в котором отправлено сообщение со ссылкой. `null`, если сообщение отправлено не в треде.","nullable":true,"allOf":[{"type":"object","description":"Объект треда в вебхуке сообщения","required":["message_id","message_chat_id"],"properties":{"message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, к которому был создан тред. `null` у треда без сообщения-родителя — такие создаёт [Новый самостоятельный тред](POST /threads).","example":12345,"nullable":true},"message_chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата сообщения, к которому был создан тред. `null` у треда без сообщения-родителя.","example":67890,"nullable":true}},"$ref":"#/components/schemas/WebhookMessageThread"}]},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2024-09-18T19:53:14.000Z"},"webhook_timestamp":{"type":"integer","format":"int32","description":"Дата и время отправки вебхука (UTC+0) в формате UNIX","example":1726685594}},"$ref":"#/components/schemas/LinkSharedWebhookPayload"},{"type":"object","description":"Структура исходящего вебхука о видеозвонке","required":["type","event","video_room_id","chat_id","owner_id","webhook_timestamp"],"properties":{"type":{"type":"string","description":"Тип объекта","enum":["video_call"],"x-enum-descriptions":{"video_call":"Для видеозвонков всегда video_call"},"example":"video_call"},"event":{"description":"Тип события","example":"started","allOf":[{"type":"string","description":"Тип события видеозвонка","enum":["started","finished","recording_ready"],"x-enum-descriptions":{"started":"Видеозвонок начался","finished":"Видеозвонок завершился","recording_ready":"Запись видеозвонка готова"},"$ref":"#/components/schemas/VideoCallEventType"}]},"video_room_id":{"type":"integer","format":"int32","description":"Идентификатор видеозвонка","example":9012},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата, в котором проходит видеозвонок","example":23438},"owner_id":{"type":"integer","format":"int32","description":"Идентификатор пользователя, начавшего видеозвонок","example":2345},"thread":{"type":"object","description":"Объект с параметрами треда, если видеозвонок проходит в треде. `null`, если звонок не в треде.","nullable":true,"allOf":[{"type":"object","description":"Параметры треда, в котором проходит видеозвонок","required":["id","chat_id","message_id","message_chat_id"],"properties":{"id":{"type":"integer","format":"int32","description":"Идентификатор треда","example":12345},"chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата треда","example":67890},"message_id":{"type":"integer","format":"int32","description":"Идентификатор сообщения, к которому создан тред. `null` у треда без сообщения-родителя — такие создаёт [Новый самостоятельный тред](POST /threads).","example":268092,"nullable":true},"message_chat_id":{"type":"integer","format":"int32","description":"Идентификатор чата сообщения, к которому создан тред. `null` у треда без сообщения-родителя.","example":23438,"nullable":true}},"$ref":"#/components/schemas/WebhookVideoCallThread"}]},"started_at":{"type":"string","format":"date-time","description":"Дата и время начала звонка (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Присутствует для событий started и finished.","example":"2025-05-15T14:30:00.000Z"},"finished_at":{"type":"string","format":"date-time","description":"Дата и время завершения звонка (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Присутствует для события finished.","example":"2025-05-15T14:45:00.000Z"},"duration":{"type":"integer","format":"int32","description":"Длительность в секундах. Для события finished — длительность звонка, для recording_ready — длительность записи.","example":900},"members":{"type":"array","description":"Список участников звонка. Присутствует для события finished.","items":{"type":"object","description":"Участник видеозвонка","required":["user_id","joined_at","left_at"],"properties":{"user_id":{"type":"integer","format":"int32","description":"Идентификатор участника","example":2345},"joined_at":{"type":"string","format":"date-time","description":"Дата и время первого подключения к звонку (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2025-05-15T14:30:00.000Z"},"left_at":{"type":"string","format":"date-time","description":"Дата и время выхода из звонка (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Если участник оставался в звонке до его завершения, совпадает с временем окончания звонка.","example":"2025-05-15T14:45:00.000Z"}},"$ref":"#/components/schemas/WebhookVideoCallMember"}},"recording_id":{"type":"integer","format":"int32","description":"Идентификатор записи. Присутствует для события recording_ready.","example":4567},"file_id":{"type":"integer","format":"int32","description":"Идентификатор файла записи. Присутствует для события recording_ready. `null`, если файл ещё не привязан.","example":89012,"nullable":true},"url":{"type":"string","description":"Прямая ссылка на файл записи. Присутствует для события recording_ready.","example":"https://api.pachca.com/files/89012"},"size":{"type":"integer","format":"int64","description":"Размер файла записи в байтах. Присутствует для события recording_ready.","example":10485760},"webhook_timestamp":{"type":"integer","format":"int32","description":"Дата и время отправки вебхука (UTC+0) в формате UNIX","example":1747574400}},"$ref":"#/components/schemas/VideoCallWebhookPayload"}],"$ref":"#/components/schemas/WebhookPayloadUnion"}]},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания события (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ","example":"2025-05-15T14:30:00.000Z"}},"$ref":"#/components/schemas/WebhookEvent"}},"meta":{"type":"object","description":"Метаданные пагинации","required":["paginate"],"properties":{"paginate":{"type":"object","description":"Вспомогательная информация","required":["next_page"],"properties":{"next_page":{"type":"string","description":"Курсор пагинации следующей страницы","example":"eyJxZCO2MiwiZGlyIjomSNYjIn3"},"prev_page":{"type":"string","description":"Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка.","example":"eyJxZCO2MiwiZGlyIjoiYXNjIn0"},"has_next":{"type":"boolean","description":"Есть ли ещё данные на следующей странице. На последней странице — `false`.","example":true},"has_prev":{"type":"boolean","description":"Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`.","example":false}}}},"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"description":"The server could not understand the request due to invalid syntax.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"422":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"webhooks:events:read","scopeRoles":["owner","admin","user","bot"]},"paginated":true},"docs":"# История событий\n\n**Метод**: `GET`\n\n**Путь**: `/webhooks/events`\n\n> **Скоуп:** `webhooks:events:read`\n\nЖурнал событий бота: то же самое, что уходит в исходящий вебхук, но забирается запросом. Метод нужен, когда принимать вебхуки на свой адрес нельзя — обработчик недоступен из интернета, поднимается не всегда или пишется прямо сейчас.\n\nЖурнал ведётся, только когда в настройках бота включён пункт «Сохранять историю событий» на вкладке «Исходящий вебхук». Адрес вебхука при этом можно не указывать вовсе, а если он указан, событие и уедет на него, и ляжет в журнал.\n\nМетод работает только с токеном бота: у личного токена своего журнала нет. События отдаются от новых к старым, идентификатор события — строка, а не число.\n\nСам журнал не очищается: прочитанные события удаляйте методом [Удаление события](DELETE /webhooks/events/{id}), иначе они придут снова при повторном запросе.\n\n## Параметры\n\n### Query параметры\n\n- `limit: integer, int32` (default: 50) — Количество возвращаемых сущностей за один запрос\n- `cursor: string` — Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)\n\n\n## Пример запроса\n\n```bash\n# Для получения следующей страницы используйте cursor из meta.paginate.next_page\ncurl \"https://api.pachca.com/api/shared/v1/webhooks/events?limit=1\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 200: The request has succeeded.\n\n**Схема ответа:**\n\n- `data: array of object` (required)\n - `id: string` (required) — Идентификатор события. Пример: `\"01KAJZ2XDSS2S3DSW9EXJZ0TBV\"`\n - `event_type: string` (required) — Тип события. Пример: `\"message_new\"`\n - `payload: anyOf` (required) — Объект вебхука\n **Возможные варианты:**\n\n - **MessageWebhookPayload**: Структура исходящего вебхука о сообщении\n - `type: string` (required) — Тип объекта. Пример: `\"message\"`\n Значения: `message` — Для сообщений всегда message\n - `id: integer, int32` (required) — Идентификатор сообщения. Пример: `1245817`\n - `event: string` (required) — Тип события\n Значения: `new` — Создание, `update` — Обновление, `delete` — Удаление\n - `entity_type: string` (required) — Тип сущности, к которой относится сообщение\n Значения: `discussion` — Беседа или канал, `thread` — Тред, `user` — Пользователь\n - `entity_id: integer, int32` (required) — Идентификатор сущности, к которой относится сообщение. Пример: `5678`\n - `content: string` (required) — Текст сообщения. Пример: `\"Текст сообщения\"`\n - `user_id: integer, int32` (required) — Идентификатор отправителя сообщения. Пример: `2345`\n - `created_at: date-time` (required) — Дата и время создания сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2025-05-15T14:30:00.000Z\"`\n - `changed_at: date-time` (nullable) — Дата и время последнего изменения сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. У неотредактированного сообщения совпадает с датой создания. `null` у сообщений, отправленных до появления этого поля. Пример: `\"2025-05-15T14:35:00.000Z\"`\n - `url: string` (required) — Прямая ссылка на сообщение. Пример: `\"https://pachca.com/chats/1245817/messages/5678\"`\n - `chat_id: integer, int32` (required) — Идентификатор чата, в котором находится сообщение. Пример: `9012`\n - `parent_message_id: integer, int32` (nullable) — Идентификатор сообщения, к которому написан ответ. `null`, если сообщение не является ответом на другое сообщение. Пример: `3456`\n - `thread: object` — Тред, в котором отправлено сообщение. `null`, если сообщение отправлено не в треде. В отличие от поля `thread` в объекте сообщения REST API, здесь описывается тред, внутри которого находится сообщение.\n - `message_id: integer, int32` (required, nullable) — Идентификатор сообщения, к которому был создан тред. `null` у треда без сообщения-родителя — такие создаёт [Новый самостоятельный тред](POST /threads). Пример: `12345`\n - `message_chat_id: integer, int32` (required, nullable) — Идентификатор чата сообщения, к которому был создан тред. `null` у треда без сообщения-родителя. Пример: `67890`\n - `webhook_timestamp: integer, int32` (required) — Дата и время отправки вебхука (UTC+0) в формате UNIX. Пример: `1747574400`\n - **ReactionWebhookPayload**: Структура исходящего вебхука о реакции\n - `type: string` (required) — Тип объекта. Пример: `\"reaction\"`\n Значения: `reaction` — Для реакций всегда reaction\n - `event: string` (required) — Тип события\n Значения: `new` — Создание, `delete` — Удаление\n - `chat_id: integer, int32` (required, nullable) — Идентификатор чата, в котором находится сообщение. Поле всегда присутствует в payload. В редких случаях (например, если сообщение было удалено к моменту отправки вебхука) может быть `null`. Пример: `9012`\n - `message_id: integer, int32` (required) — Идентификатор сообщения, к которому относится реакция. Пример: `1245817`\n - `code: string` (required) — Emoji символ реакции. Пример: `\"👍\"`\n - `name: string` (required) — Название реакции. Пример: `\"thumbsup\"`\n - `user_id: integer, int32` (required) — Идентификатор пользователя, который добавил или удалил реакцию. Пример: `2345`\n - `created_at: date-time` (required) — Дата и время добавления реакции (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Поле присутствует и для события удаления реакции. Пример: `\"2025-05-15T14:30:00.000Z\"`\n - `webhook_timestamp: integer, int32` (required) — Дата и время отправки вебхука (UTC+0) в формате UNIX. Пример: `1747574400`\n - **ButtonWebhookPayload**: Структура исходящего вебхука о нажатии кнопки\n - `type: string` (required) — Тип объекта. Пример: `\"button\"`\n Значения: `button` — Для кнопки всегда button\n - `event: string` (required) — Тип события. Пример: `\"click\"`\n Значения: `click` — Нажатие кнопки\n - `message_id: integer, int32` (required) — Идентификатор сообщения, к которому относится кнопка. Пример: `1245817`\n - `trigger_id: string` (required) — Уникальный идентификатор события. Время жизни — 3 секунды. Может быть использован, например, для открытия представления пользователю. Пример: `\"a1b2c3d4-5e6f-7g8h-9i10-j11k12l13m14\"`\n - `data: string` (required) — Данные нажатой кнопки. Пример: `\"button_data\"`\n - `user_id: integer, int32` (required) — Идентификатор пользователя, который нажал кнопку. Пример: `2345`\n - `chat_id: integer, int32` (required) — Идентификатор чата, в котором была нажата кнопка. Пример: `9012`\n - `webhook_timestamp: integer, int32` (required) — Дата и время отправки вебхука (UTC+0) в формате UNIX. Пример: `1747574400`\n - **ViewSubmitWebhookPayload**: Структура исходящего вебхука о заполнении формы\n - `type: string` (required) — Тип объекта. Пример: `\"view\"`\n Значения: `view` — Для формы всегда view\n - `event: string` (required) — Тип события. Пример: `\"submit\"`\n Значения: `submit` — Отправка формы\n - `callback_id: string` (required, nullable) — Идентификатор обратного вызова, указанный при открытии представления. `null`, если при открытии формы он не был указан. Пример: `\"timeoff_request_form\"`\n - `private_metadata: string` (required, nullable) — Приватные метаданные, указанные при открытии представления. `null`, если при открытии формы они не были указаны. Пример: `\"{\\\"timeoff_id\\\":4378}\"`\n - `chat_id: integer, int32` (required, nullable) — Идентификатор чата, в котором была нажата кнопка, открывшая форму. Поле может быть `null` для форм, открытых до выкатки этого поля. Пример: `9012`\n - `user_id: integer, int32` (required) — Идентификатор пользователя, который отправил форму. Пример: `1235523`\n - `view_id: string` (required) — Идентификатор представления. Нужен боту без адреса исходящего вебхука, чтобы ответить методом [Ответ на отправку формы](POST /views/{view_id}/submit_response). Пример: `\"01KAJZ2XDSS2S3DSW9EXJZ0TBV\"`\n - `submit_id: string` (required) — Идентификатор отправки формы. Нужен боту без адреса исходящего вебхука, чтобы ответить методом [Ответ на отправку формы](POST /views/{view_id}/submit_response). Пример: `\"791a056b-006c-49dd-834b-c633fde52fe8\"`\n - `data: Record` (required) — Данные заполненных полей представления. Ключ — `name` блока, значение — введённые данные. У блока `file_input` значение приходит массивом объектов с полями `name`, `size` и `url`, ссылка действует 2 часа.\n **Структура значений Record:**\n - Тип значения: `any`\n - `webhook_timestamp: integer, int32` (required) — Дата и время отправки вебхука (UTC+0) в формате UNIX. Пример: `1755075544`\n - **ChatMemberWebhookPayload**: Структура исходящего вебхука об участниках чата\n - `type: string` (required) — Тип объекта. Пример: `\"chat_member\"`\n Значения: `chat_member` — Для участника чата всегда chat_member\n - `event: string` (required) — Тип события\n Значения: `add` — Добавление, `remove` — Удаление\n - `chat_id: integer, int32` (required) — Идентификатор чата, в котором изменился состав участников. Пример: `9012`\n - `thread_id: integer, int32` (nullable) — Идентификатор треда. `null`, если участники добавлены в обычный чат или канал, а не в тред. Пример: `5678`\n - `user_ids: array of integer` (required) — Массив идентификаторов пользователей, с которыми произошло событие. Пример: `[2345,6789]`\n - `created_at: date-time` (required) — Дата и время события (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ssZ. В этом вебхуке время приходит без долей секунды, в отличие от остальных. Пример: `\"2025-05-15T14:30:00Z\"`\n - `webhook_timestamp: integer, int32` (required) — Дата и время отправки вебхука (UTC+0) в формате UNIX. Пример: `1747574400`\n - **CompanyMemberWebhookPayload**: Структура исходящего вебхука об участниках пространства\n - `type: string` (required) — Тип объекта. Пример: `\"company_member\"`\n Значения: `company_member` — Для участника пространства всегда company_member\n - `event: string` (required) — Тип события\n Значения: `invite` — Приглашение, `confirm` — Подтверждение, `update` — Обновление, `suspend` — Приостановка, `activate` — Активация, `delete` — Удаление\n - `user_ids: array of integer` (required) — Массив идентификаторов пользователей, с которыми произошло событие. Пример: `[2345,6789]`\n - `created_at: date-time` (required) — Дата и время события (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ssZ. В этом вебхуке время приходит без долей секунды, в отличие от остальных. Пример: `\"2025-05-15T14:30:00Z\"`\n - `webhook_timestamp: integer, int32` (required) — Дата и время отправки вебхука (UTC+0) в формате UNIX. Пример: `1747574400`\n - **LinkSharedWebhookPayload**: Структура исходящего вебхука о разворачивании ссылок\n - `type: string` (required) — Тип объекта. Пример: `\"message\"`\n Значения: `message` — Для разворачивания ссылок всегда message\n - `event: string` (required) — Тип события. Пример: `\"link_shared\"`\n Значения: `link_shared` — Обнаружена ссылка на отслеживаемый домен\n - `chat_id: integer, int32` (required) — Идентификатор чата, в котором обнаружена ссылка. Пример: `23438`\n - `message_id: integer, int32` (required) — Идентификатор сообщения, содержащего ссылку. Пример: `268092`\n - `links: array of object` (required) — Массив обнаруженных ссылок на отслеживаемые домены\n - `url: string` (required) — URL ссылки. Пример: `\"https://example.com/page1\"`\n - `domain: string` (required) — Домен ссылки. Пример: `\"example.com\"`\n - `skip: boolean` (required) — Признак того, что автор сообщения скрыл превью для этой ссылки. Если `true` — бот не должен создавать превью. Пример: `false`\n - `user_id: integer, int32` (required) — Идентификатор отправителя сообщения. Пример: `2345`\n - `entity_type: string` (required) — Тип сущности, к которой относится сообщение со ссылкой\n Значения: `discussion` — Беседа или канал, `thread` — Тред, `user` — Пользователь\n - `entity_id: integer, int32` (required, nullable) — Идентификатор сущности: беседы или канала, треда. В личной переписке `null`: бот в ней не участвует, и собеседника ему не раскрывают. Пример: `23438`\n - `thread: object` (required) — Тред, в котором отправлено сообщение со ссылкой. `null`, если сообщение отправлено не в треде.\n - `message_id: integer, int32` (required, nullable) — Идентификатор сообщения, к которому был создан тред. `null` у треда без сообщения-родителя — такие создаёт [Новый самостоятельный тред](POST /threads). Пример: `12345`\n - `message_chat_id: integer, int32` (required, nullable) — Идентификатор чата сообщения, к которому был создан тред. `null` у треда без сообщения-родителя. Пример: `67890`\n - `created_at: date-time` (required) — Дата и время создания сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2024-09-18T19:53:14.000Z\"`\n - `webhook_timestamp: integer, int32` (required) — Дата и время отправки вебхука (UTC+0) в формате UNIX. Пример: `1726685594`\n - **VideoCallWebhookPayload**: Структура исходящего вебхука о видеозвонке\n - `type: string` (required) — Тип объекта. Пример: `\"video_call\"`\n Значения: `video_call` — Для видеозвонков всегда video_call\n - `event: string` (required) — Тип события\n Значения: `started` — Видеозвонок начался, `finished` — Видеозвонок завершился, `recording_ready` — Запись видеозвонка готова\n - `video_room_id: integer, int32` (required) — Идентификатор видеозвонка. Пример: `9012`\n - `chat_id: integer, int32` (required) — Идентификатор чата, в котором проходит видеозвонок. Пример: `23438`\n - `owner_id: integer, int32` (required) — Идентификатор пользователя, начавшего видеозвонок. Пример: `2345`\n - `thread: object` — Объект с параметрами треда, если видеозвонок проходит в треде. `null`, если звонок не в треде.\n - `id: integer, int32` (required) — Идентификатор треда. Пример: `12345`\n - `chat_id: integer, int32` (required) — Идентификатор чата треда. Пример: `67890`\n - `message_id: integer, int32` (required, nullable) — Идентификатор сообщения, к которому создан тред. `null` у треда без сообщения-родителя — такие создаёт [Новый самостоятельный тред](POST /threads). Пример: `268092`\n - `message_chat_id: integer, int32` (required, nullable) — Идентификатор чата сообщения, к которому создан тред. `null` у треда без сообщения-родителя. Пример: `23438`\n - `started_at: date-time` — Дата и время начала звонка (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Присутствует для событий started и finished. Пример: `\"2025-05-15T14:30:00.000Z\"`\n - `finished_at: date-time` — Дата и время завершения звонка (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Присутствует для события finished. Пример: `\"2025-05-15T14:45:00.000Z\"`\n - `duration: integer, int32` — Длительность в секундах. Для события finished — длительность звонка, для recording_ready — длительность записи. Пример: `900`\n - `members: array of object` — Список участников звонка. Присутствует для события finished.\n - `user_id: integer, int32` (required) — Идентификатор участника. Пример: `2345`\n - `joined_at: date-time` (required) — Дата и время первого подключения к звонку (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2025-05-15T14:30:00.000Z\"`\n - `left_at: date-time` (required) — Дата и время выхода из звонка (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Если участник оставался в звонке до его завершения, совпадает с временем окончания звонка. Пример: `\"2025-05-15T14:45:00.000Z\"`\n - `recording_id: integer, int32` — Идентификатор записи. Присутствует для события recording_ready. Пример: `4567`\n - `file_id: integer, int32` (nullable) — Идентификатор файла записи. Присутствует для события recording_ready. `null`, если файл ещё не привязан. Пример: `89012`\n - `url: string` — Прямая ссылка на файл записи. Присутствует для события recording_ready. Пример: `\"https://api.pachca.com/files/89012\"`\n - `size: integer, int64` — Размер файла записи в байтах. Присутствует для события recording_ready. Пример: `10485760`\n - `webhook_timestamp: integer, int32` (required) — Дата и время отправки вебхука (UTC+0) в формате UNIX. Пример: `1747574400`\n - `created_at: date-time` (required) — Дата и время создания события (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `\"2025-05-15T14:30:00.000Z\"`\n- `meta: object` (required) — Метаданные пагинации\n - `paginate: object` (required) — Вспомогательная информация\n - `next_page: string` (required) — Курсор пагинации следующей страницы. Пример: `\"eyJxZCO2MiwiZGlyIjomSNYjIn3\"`\n - `prev_page: string` — Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка. Пример: `\"eyJxZCO2MiwiZGlyIjoiYXNjIn0\"`\n - `has_next: boolean` — Есть ли ещё данные на следующей странице. На последней странице — `false`. Пример: `true`\n - `has_prev: boolean` — Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — `false`. Пример: `false`\n\n**Пример ответа:**\n\n```json\n{\n \"data\": [\n {\n \"id\": \"01KAJZ2XDSS2S3DSW9EXJZ0TBV\",\n \"event_type\": \"message_new\",\n \"payload\": {\n \"type\": \"message\",\n \"id\": 1245817,\n \"event\": \"new\",\n \"entity_type\": \"discussion\",\n \"entity_id\": 5678,\n \"content\": \"Текст сообщения\",\n \"user_id\": 2345,\n \"created_at\": \"2025-05-15T14:30:00.000Z\",\n \"changed_at\": \"2025-05-15T14:35:00.000Z\",\n \"url\": \"https://pachca.com/chats/1245817/messages/5678\",\n \"chat_id\": 9012,\n \"parent_message_id\": 3456,\n \"thread\": {\n \"message_id\": 12345,\n \"message_chat_id\": 67890\n },\n \"webhook_timestamp\": 1747574400\n },\n \"created_at\": \"2025-05-15T14:30:00.000Z\"\n }\n ],\n \"meta\": {\n \"paginate\": {\n \"next_page\": \"eyJxZCO2MiwiZGlyIjomSNYjIn3\",\n \"prev_page\": \"eyJxZCO2MiwiZGlyIjoiYXNjIn0\",\n \"has_next\": true,\n \"has_prev\": false\n }\n }\n}\n```\n\n### 400: The server could not understand the request due to invalid syntax.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 422: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"},{"method":"DELETE","path":"/webhooks/events/{id}","summary":"Удаление события","scope":"webhooks:events:delete","plan":null,"auth":true,"paginated":false,"command":"pachca bots remove-event","docLink":"https://dev.pachca.com/api/bots/remove-event","describe":"# DELETE /webhooks/events/{id} — Удаление события\n\n> **Скоуп:** `webhooks:events:delete`\n\n## Параметры\n\n- `id` — путь (обязательный): Идентификатор события\n\n## Эквивалентная команда\n\n```bash\npachca bots remove-event 01KAJZ2XDSS2S3DSW9EXJZ0TBV \\\n --json \\\n --token YOUR_ACCESS_TOKEN\n```\n\nДокументация: https://dev.pachca.com/api/bots/remove-event\nПолная справка: `pachca api DELETE /webhooks/events/{id} --docs` · схема: `--spec`\n","spec":{"method":"DELETE","path":"/webhooks/events/{id}","description":"Удаление события\n\nУбирает событие из журнала бота. Разбирая журнал, удаляйте событие сразу после обработки: журнал не очищается сам, и всё, что осталось, придёт снова при повторном запросе.\n\nМетод работает только с токеном того бота, которому принадлежит событие.","parameters":[{"name":"id","in":"path","description":"Идентификатор события","required":true,"schema":{"type":"string","example":"01KAJZ2XDSS2S3DSW9EXJZ0TBV"},"example":"01KAJZ2XDSS2S3DSW9EXJZ0TBV"}],"responses":{"204":{"description":"There is no content to send for this request, but the headers may be useful. "},"401":{"description":"Access is unauthorized.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"402":{"description":"Client error","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Access is forbidden.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка OAuth авторизации (используется для 401 и 403)","required":["error","error_description"],"properties":{"error":{"type":"string","description":"Код ошибки","example":"invalid_token"},"error_description":{"type":"string","description":"Описание ошибки","example":"Access token is missing"}},"$ref":"#/components/schemas/OAuthError"}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"schema":{"type":"object","description":"Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)","required":["errors"],"properties":{"errors":{"type":"array","description":"Массив ошибок","items":{"type":"object","description":"Детальная информация об ошибке","required":["key","value","message","code","payload"],"properties":{"key":{"type":"string","description":"Ключ поля с ошибкой","example":"field.name"},"value":{"type":"string","description":"Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению.","example":"invalid_value","nullable":true},"message":{"type":"string","description":"Сообщение об ошибке","example":"Поле не может быть пустым"},"code":{"description":"Код ошибки","example":"blank","allOf":[{"type":"string","description":"Коды ошибок валидации","enum":["blank","too_long","invalid","inclusion","exclusion","taken","wrong_emoji","not_found","already_exists","personal_chat","displayed_error","not_authorized","invalid_date_range","invalid_webhook_url","rate_limit","licenses_limit","user_limit","unique_limit","general_limit","unhandled","trigger_not_found","trigger_expired","required","in","not_applicable","self_update","owner_protected","already_assigned","next_send_at_invalid","schedule_invalid","schedule_end_date_invalid","scheduled_messages_limit","draft_type_change_forbidden","confidential_download_denied","decryption_failed","bot_add_denied","timeout","forbidden","permission_denied","access_denied","wrong_params","payment_required","min_length","max_length","use_of_system_words","export_file_not_found","cannot_kick_owner","pin_failed","message_deleted","thread_message","view_not_found","submit_expired","service_unavailable"],"x-enum-descriptions":{"blank":"Обязательное поле (не может быть пустым)","too_long":"Слишком длинное значение (пояснения вы получите в поле message)","invalid":"Поле не соответствует правилам (пояснения вы получите в поле message)","inclusion":"Поле имеет непредусмотренное значение","exclusion":"Поле имеет недопустимое значение","taken":"Название для этого поля уже существует","wrong_emoji":"Emoji статуса не может содержать значения отличные от Emoji символа","not_found":"Объект не найден","already_exists":"Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить","personal_chat":"Ошибка личного чата (пояснения вы получите в поле message)","displayed_error":"Отображаемая ошибка (пояснения вы получите в поле message)","not_authorized":"Действие запрещено","invalid_date_range":"Выбран слишком большой диапазон дат","invalid_webhook_url":"Некорректный URL вебхука","rate_limit":"Достигнут лимит запросов","licenses_limit":"Превышен лимит активных сотрудников (пояснения вы получите в поле message)","user_limit":"Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций)","unique_limit":"Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций)","general_limit":"Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций)","unhandled":"Ошибка выполнения запроса (пояснения вы получите в поле message)","trigger_not_found":"Не удалось найти идентификатор события","trigger_expired":"Время жизни идентификатора события истекло","required":"Обязательный параметр не передан","in":"Недопустимое значение (не входит в список допустимых)","not_applicable":"Значение неприменимо в данном контексте (пояснения вы получите в поле message)","self_update":"Нельзя изменить свои собственные данные","owner_protected":"Нельзя изменить данные владельца","already_assigned":"Значение уже назначено","forbidden":"Недостаточно прав для выполнения действия (пояснения вы получите в поле message)","permission_denied":"Доступ запрещён (недостаточно прав)","access_denied":"Доступ запрещён","wrong_params":"Некорректные параметры запроса (пояснения вы получите в поле message)","payment_required":"Требуется оплата","min_length":"Значение слишком короткое (пояснения вы получите в поле message)","max_length":"Значение слишком длинное (пояснения вы получите в поле message)","use_of_system_words":"Использовано зарезервированное системное слово (here, all)","export_file_not_found":"Файл экспорта не найден или ещё не готов","cannot_kick_owner":"Нельзя исключить владельца чата","pin_failed":"Не удалось закрепить сообщение","message_deleted":"Сообщение удалено","thread_message":"Нельзя создать тред для сообщения, которое уже находится в треде","view_not_found":"Представление не найдено или принадлежит другому боту","submit_expired":"Время на ответ об отправке формы истекло или ответ уже был принят","service_unavailable":"Сервис временно недоступен, повторите запрос","next_send_at_invalid":"Ближайшая отправка отложенного сообщения приходится на прошлое","schedule_invalid":"Расписание отложенного сообщения не складывается в повтор","schedule_end_date_invalid":"Расписание заканчивается раньше ближайшей отправки","scheduled_messages_limit":"Превышен лимит отложенных сообщений на чат (50)","draft_type_change_forbidden":"Отложенное сообщение нельзя превратить обратно в черновик","confidential_download_denied":"Скачивание файла запрещено: нужен запрос из безопасного контура","decryption_failed":"Не удалось расшифровать файл","bot_add_denied":"Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`","timeout":"Поиск не уложился по времени: сузьте запрос и повторите"},"$ref":"#/components/schemas/ValidationErrorCode"}]},"payload":{"type":"object","description":"Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`.","example":null,"nullable":true,"additionalProperties":{}}},"$ref":"#/components/schemas/ApiErrorItem"}}},"$ref":"#/components/schemas/ApiError"}}}}},"requirements":{"scope":"webhooks:events:delete","scopeRoles":["owner","admin","user","bot"]},"paginated":false},"docs":"# Удаление события\n\n**Метод**: `DELETE`\n\n**Путь**: `/webhooks/events/{id}`\n\n> **Скоуп:** `webhooks:events:delete`\n\nУбирает событие из журнала бота. Разбирая журнал, удаляйте событие сразу после обработки: журнал не очищается сам, и всё, что осталось, придёт снова при повторном запросе.\n\nМетод работает только с токеном того бота, которому принадлежит событие.\n\n## Параметры\n\n### Path параметры\n\n- `id: string` (required) — Идентификатор события\n\n\n## Пример запроса\n\n```bash\ncurl -X DELETE \"https://api.pachca.com/api/shared/v1/webhooks/events/01KAJZ2XDSS2S3DSW9EXJZ0TBV\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n```\n\n## Ответы\n\n### 204: There is no content to send for this request, but the headers may be useful. \n\n### 401: Access is unauthorized.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 402: Client error\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n### 403: Access is forbidden.\n\n**Схема ответа при ошибке:**\n\n- `error: string` (required) — Код ошибки. Пример: `\"invalid_token\"`\n- `error_description: string` (required) — Описание ошибки. Пример: `\"Access token is missing\"`\n\n**Пример ответа:**\n\n```json\n{\n \"error\": \"invalid_token\",\n \"error_description\": \"Access token is missing\"\n}\n```\n\n### 404: The server cannot find the requested resource.\n\n**Схема ответа при ошибке:**\n\n- `errors: array of object` (required) — Массив ошибок\n - `key: string` (required) — Ключ поля с ошибкой. Пример: `\"field.name\"`\n - `value: string` (required, nullable) — Значение поля, которое вызвало ошибку. `null`, если ошибка не относится к конкретному значению. Пример: `\"invalid_value\"`\n - `message: string` (required) — Сообщение об ошибке. Пример: `\"Поле не может быть пустым\"`\n - `code: string` (required) — Код ошибки\n Значения: `blank` — Обязательное поле (не может быть пустым), `too_long` — Слишком длинное значение (пояснения вы получите в поле message), `invalid` — Поле не соответствует правилам (пояснения вы получите в поле message), `inclusion` — Поле имеет непредусмотренное значение, `exclusion` — Поле имеет недопустимое значение, `taken` — Название для этого поля уже существует, `wrong_emoji` — Emoji статуса не может содержать значения отличные от Emoji символа, `not_found` — Объект не найден, `already_exists` — Объект с такими данными уже есть. Конфликтующее поле приходит в key, если его удалось определить, `personal_chat` — Ошибка личного чата (пояснения вы получите в поле message), `displayed_error` — Отображаемая ошибка (пояснения вы получите в поле message), `not_authorized` — Действие запрещено, `invalid_date_range` — Выбран слишком большой диапазон дат, `invalid_webhook_url` — Некорректный URL вебхука, `rate_limit` — Достигнут лимит запросов, `licenses_limit` — Превышен лимит активных сотрудников (пояснения вы получите в поле message), `user_limit` — Превышен лимит количества реакций, которые может добавить пользователь (20 уникальных реакций), `unique_limit` — Превышен лимит количества уникальных реакций, которые можно добавить на сообщение (30 уникальных реакций), `general_limit` — Превышен лимит количества реакций, которые можно добавить на сообщение (1000 реакций), `unhandled` — Ошибка выполнения запроса (пояснения вы получите в поле message), `trigger_not_found` — Не удалось найти идентификатор события, `trigger_expired` — Время жизни идентификатора события истекло, `required` — Обязательный параметр не передан, `in` — Недопустимое значение (не входит в список допустимых), `not_applicable` — Значение неприменимо в данном контексте (пояснения вы получите в поле message), `self_update` — Нельзя изменить свои собственные данные, `owner_protected` — Нельзя изменить данные владельца, `already_assigned` — Значение уже назначено, `next_send_at_invalid` — Ближайшая отправка отложенного сообщения приходится на прошлое, `schedule_invalid` — Расписание отложенного сообщения не складывается в повтор, `schedule_end_date_invalid` — Расписание заканчивается раньше ближайшей отправки, `scheduled_messages_limit` — Превышен лимит отложенных сообщений на чат (50), `draft_type_change_forbidden` — Отложенное сообщение нельзя превратить обратно в черновик, `confidential_download_denied` — Скачивание файла запрещено: нужен запрос из безопасного контура, `decryption_failed` — Не удалось расшифровать файл, `bot_add_denied` — Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`, `timeout` — Поиск не уложился по времени: сузьте запрос и повторите, `forbidden` — Недостаточно прав для выполнения действия (пояснения вы получите в поле message), `permission_denied` — Доступ запрещён (недостаточно прав), `access_denied` — Доступ запрещён, `wrong_params` — Некорректные параметры запроса (пояснения вы получите в поле message), `payment_required` — Требуется оплата, `min_length` — Значение слишком короткое (пояснения вы получите в поле message), `max_length` — Значение слишком длинное (пояснения вы получите в поле message), `use_of_system_words` — Использовано зарезервированное системное слово (here, all), `export_file_not_found` — Файл экспорта не найден или ещё не готов, `cannot_kick_owner` — Нельзя исключить владельца чата, `pin_failed` — Не удалось закрепить сообщение, `message_deleted` — Сообщение удалено, `thread_message` — Нельзя создать тред для сообщения, которое уже находится в треде, `view_not_found` — Представление не найдено или принадлежит другому боту, `submit_expired` — Время на ответ об отправке формы истекло или ответ уже был принят, `service_unavailable` — Сервис временно недоступен, повторите запрос\n - `payload: Record` (required, nullable) — Дополнительные данные об ошибке. Содержимое зависит от кода ошибки: `{id: number}` — при ошибке кастомного свойства (идентификатор свойства), `{record: {type: string, id: number}, query: string}` — при ошибке авторизации, `{draft_id: number}` — когда черновик в этом чате уже есть. В большинстве случаев `null`. Пример: `null`\n **Структура значений Record:**\n - Тип значения: `any`\n\n**Пример ответа:**\n\n```json\n{\n \"errors\": [\n {\n \"key\": \"field.name\",\n \"value\": \"invalid_value\",\n \"message\": \"Поле не может быть пустым\",\n \"code\": \"blank\",\n \"payload\": null\n }\n ]\n}\n```\n\n"}] \ No newline at end of file diff --git a/packages/cli/src/data/workflows.json b/packages/cli/src/data/workflows.json index e4f06c9ed..bb214e8b5 100644 --- a/packages/cli/src/data/workflows.json +++ b/packages/cli/src/data/workflows.json @@ -456,12 +456,44 @@ "skill": "pachca-bots", "steps": [ { - "description": "Пользовательским токеном (администратор, владелец компании или создатель бота) — перевыпусти токен по `id` бота. Прежний токен инвалидируется сразу", + "description": "Пользовательским токеном (создатель бота или администратор, если бот открыт администраторам) — перевыпусти основной токен по `id` бота: тот, что без имени, а если такого нет, самый старый. Прежнее значение инвалидируется сразу", "command": "pachca bots recreate-token " }, { - "description": "Или: бот перевыпускает собственный токен своим же токеном (скоуп `bot_self:write`). Токен, которым выполнен запрос, инвалидируется сразу — обязательно сохрани новый `access_token` из ответа, иначе бот потеряет доступ к API", + "description": "Или: бот перевыпускает свой основной токен сам (скоуп `bot_self:write`). Если запрос сделан основным токеном, он инвалидируется сразу — обязательно сохрани новый `access_token` из ответа, иначе бот потеряет доступ к API", "command": "pachca bots recreate-token-self" + }, + { + "description": "Отдельный токен бота перевыпускай по его `id` из `pachca bots list-tokens`: значение меняется, имя и права остаются", + "command": "pachca bots reissue-token " + } + ] + }, + { + "title": "Выпустить боту отдельный токен", + "skill": "pachca-bots", + "steps": [ + { + "description": "Пользовательским токеном (создатель бота или администратор, если бот открыт администраторам) получи каталог прав, которые можно выдать этому боту", + "command": "pachca bots list-scopes " + }, + { + "description": "Выпусти токен с именем и правами из каталога. Без `--scopes` токен выпускается без прав, право не из каталога отклоняется с `400`", + "command": "pachca bots create-token --name=\"Сервер уведомлений\" --scopes='[\"messages:create\"]'" + } + ] + }, + { + "title": "Включить боту авторизацию от имени сотрудника", + "skill": "pachca-bots", + "steps": [ + { + "description": "Пользовательским токеном (создатель бота или администратор, если бот открыт администраторам) включи авторизацию: где хранится секрет, адреса возврата и права, которые бот попросит у сотрудника. Права бери из `pachca bots list-scopes`", + "command": "pachca bots update --oauth-client='{\"confidential\":true,\"redirect_uris\":[\"https://example.com/oauth/callback\"],\"scopes\":[\"messages:read\",\"messages:create\"]}'" + }, + { + "description": "Чтобы бот появился в витрине, добавь описание и опубликуй страницу", + "command": "pachca bots update --promo='{\"description\":\"Собирает сводку по задачам\",\"published\":true}'" } ] }, @@ -474,7 +506,7 @@ "command": "pachca bots list --query=\"задач\"" }, { - "description": "Возьми `id` нужного бота из списка и удали его (скоуп `bots:write`). Доступно администратору, владельцу компании или создателю бота — владельцы чатов удалять бота не могут. Прежний токен инвалидируется сразу, бот исключается из всех чатов, его исходящий вебхук удаляется", + "description": "Возьми `id` нужного бота из списка и удали его (скоуп `bots:write`). Доступно создателю бота и администратору, если бот открыт администраторам, — владельцы чатов удалять бота не могут. Все токены бота инвалидируются сразу, бот исключается из всех чатов, его вебхуки удаляются", "command": "pachca bots delete " } ] @@ -539,6 +571,10 @@ "title": "Обработка событий через историю (polling)", "skill": "pachca-bots", "steps": [ + { + "description": "Включи историю событий флагом `--events-history-enabled` (Webhook URL для этого не нужен) или настройкой «Сохранять историю событий» на вкладке «Исходящий вебхук» — в интерфейсе она появляется после включения вебхука", + "command": "pachca bots update --events-history-enabled" + }, { "description": "Получи накопленные события", "command": "pachca bots list-events --all" diff --git a/packages/cli/src/oauth.ts b/packages/cli/src/oauth.ts index 62c566df9..24dad1045 100644 --- a/packages/cli/src/oauth.ts +++ b/packages/cli/src/oauth.ts @@ -1,4 +1,5 @@ import { spawn, spawnSync } from 'node:child_process'; +import * as os from 'node:os'; import { getBaseUrl } from './client.js'; /** Uses the global timer on purpose: `node:timers/promises` is not fakeable in tests. */ @@ -25,6 +26,9 @@ const MIN_POLL_INTERVAL_SECONDS = 5; /** RFC 8628: on `slow_down` the client raises its interval by 5 seconds. */ const SLOW_DOWN_STEP_SECONDS = 5; +/** The backend keeps a device name of at most this many characters. */ +const DEVICE_NAME_MAX_LENGTH = 255; + export interface DeviceCodeGrant { device_code: string; user_code: string; @@ -100,11 +104,32 @@ async function postForm(endpoint: string, params: Record): Promi return body; } -/** Step 1 — ask the server for a device code and the code the user types in. */ -export async function requestDeviceCode(): Promise { - const body = (await postForm('device_authorization', { client_id: CLI_CLIENT_ID })) as - | Partial - | null; +/** + * What the token list on the «API» page calls this login. + * + * Every login is a row there, revoked one by one, so the rows have to tell + * machines apart: the machine name, plus the profile unless it is the default — + * two logins from one laptop differ by nothing else. The page joins a row's + * fields with « · », so the profile goes in parentheses rather than after one. + */ +export function deviceName(profile: string, hostname: string = os.hostname()): string | undefined { + const machine = hostname.trim().replace(/\.local$/i, ''); + const name = profile === 'default' ? machine : machine ? `${machine} (${profile})` : profile; + // Counted in characters, as the backend counts them, so a cut never splits one. + return Array.from(name).slice(0, DEVICE_NAME_MAX_LENGTH).join('') || undefined; +} + +/** + * Step 1 — ask the server for a device code and the code the user types in. + * + * A server older than device names drops the extra parameter without a word, + * so it is sent regardless of which server the CLI talks to. + */ +export async function requestDeviceCode(device?: string): Promise { + const params: Record = { client_id: CLI_CLIENT_ID }; + if (device) params.device_name = device; + + const body = (await postForm('device_authorization', params)) as Partial | null; if (!body?.device_code || !body.user_code || !body.verification_uri) { throw new OAuthError('invalid_response', 'Сервер вернул неполный ответ на запрос кода'); diff --git a/packages/cli/tests/commands.test.ts b/packages/cli/tests/commands.test.ts index 9387b55ac..a53a00447 100644 --- a/packages/cli/tests/commands.test.ts +++ b/packages/cli/tests/commands.test.ts @@ -365,6 +365,28 @@ describe('generated commands — functional tests', () => { expect(stderr).toContain('PACHCA_AUTH_ERROR'); }); + it('401 с сохранённым токеном → подсказка сохранить новый в тот же профиль', async () => { + mockFetch({ status: 401, data: { error: 'invalid_token', error_description: 'Access token is invalid' } }); + const { stderr } = await runCommand(['users', 'list'], { root: CLI_ROOT }); + expect(JSON.parse(stderr.trim()).hint).toBe('pachca auth login --profile test --token '); + }); + + it('401 после входа через браузер → подсказка войти заново, без флага для default', async () => { + fs.writeFileSync( + path.join(tmpDir, 'pachca', 'config.toml'), + `active_profile = "default"\n\n[profiles.default]\ntype = "user"\nauth = "oauth"\ntoken = "test-token"\nuser = "Test User"\n`, + ); + mockFetch({ status: 401, data: { error: 'invalid_token', error_description: 'Access token is invalid' } }); + const { stderr } = await runCommand(['users', 'list'], { root: CLI_ROOT }); + expect(JSON.parse(stderr.trim()).hint).toBe('pachca auth login'); + }); + + it('401 с токеном из --token → подсказка про сам токен', async () => { + mockFetch({ status: 401, data: { error: 'invalid_token', error_description: 'Access token is invalid' } }); + const { stderr } = await runCommand(['users', 'list', '--token', 'bad'], { root: CLI_ROOT }); + expect(JSON.parse(stderr.trim()).hint).toBe('token from --token or PACHCA_TOKEN is invalid or revoked'); + }); + it('404 → PACHCA_API_ERROR', async () => { mockFetch({ status: 404, diff --git a/packages/cli/tests/oauth.test.ts b/packages/cli/tests/oauth.test.ts index c5d501e22..02cebd2f8 100644 --- a/packages/cli/tests/oauth.test.ts +++ b/packages/cli/tests/oauth.test.ts @@ -6,6 +6,7 @@ import * as os from 'node:os'; import { CLI_CLIENT_ID, OAuthError, + deviceName, pollForToken, refreshAccessToken, requestDeviceCode, @@ -27,6 +28,35 @@ afterEach(() => { vi.restoreAllMocks(); }); +describe('device name', () => { + it('is the machine name for the default profile', () => { + expect(deviceName('default', 'macbook')).toBe('macbook'); + }); + + it('drops the .local suffix macOS adds', () => { + expect(deviceName('default', 'Office-MacBook-Pro.local')).toBe('Office-MacBook-Pro'); + }); + + it('adds any other profile in parentheses', () => { + expect(deviceName('ci', 'macbook')).toBe('macbook (ci)'); + }); + + it('falls back to the profile, then to nothing, without a machine name', () => { + expect(deviceName('ci', ' ')).toBe('ci'); + expect(deviceName('default', '')).toBeUndefined(); + }); + + it('keeps within the 255 characters the server stores', () => { + const name = deviceName('ci', 'ы'.repeat(300)); + expect(name).toBeDefined(); + expect(Array.from(name ?? '').length).toBe(255); + }); + + it('defaults to this machine', () => { + expect(deviceName('default')).toBe(os.hostname().trim().replace(/\.local$/i, '') || undefined); + }); +}); + describe('oauth device flow', () => { it('requests a device code with the CLI client id', async () => { const fetchMock = vi.fn().mockResolvedValue( @@ -48,6 +78,23 @@ describe('oauth device flow', () => { expect(init.body).toBe(`client_id=${CLI_CLIENT_ID}`); }); + it('names the device when asked to', async () => { + const fetchMock = vi.fn().mockResolvedValue( + jsonResponse(200, { + device_code: 'dev-code', + user_code: 'BCDF-GHJK', + verification_uri: 'https://app.pachca.com/apps/authorize', + }), + ); + globalThis.fetch = fetchMock as unknown as typeof fetch; + + await requestDeviceCode('macbook (ci)'); + + const body = new URLSearchParams(fetchMock.mock.calls[0][1].body); + expect(body.get('client_id')).toBe(CLI_CLIENT_ID); + expect(body.get('device_name')).toBe('macbook (ci)'); + }); + it('raises the floor on a too-small interval from the server', async () => { globalThis.fetch = vi.fn().mockResolvedValue( jsonResponse(200, { diff --git a/packages/spec/openapi.en.yaml b/packages/spec/openapi.en.yaml index 6644706a4..d04c2bb00 100644 --- a/packages/spec/openapi.en.yaml +++ b/packages/spec/openapi.en.yaml @@ -199,7 +199,8 @@ paths: without knowing its own `id`. - The very token the request was made with is rotated, and it is invalidated immediately. + The bot's main token is reissued — the one without a name, or the oldest one if there is none — and it is + invalidated immediately. If the bot works with an additional token, that token stays as it was. The new token is returned in the response once — be sure to save it, otherwise the bot loses access to the API. @@ -216,11 +217,20 @@ paths: - data properties: data: - $ref: '#/components/schemas/BotCreateResponse' + $ref: '#/components/schemas/BotSelfTokenResponse' description: Response wrapper with data example: data: id: 1738816 + oauth_client: + client_id: aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY + client_secret_preview: dGhpc19p...ZWNy + confidential: true + redirect_uris: + - https://example.com/oauth/callback + scopes: + - messages:read + - messages:create webhook: name: Tasks bot nickname: tasks_bot @@ -293,11 +303,20 @@ paths: - data properties: data: - $ref: '#/components/schemas/BotResponse' + $ref: '#/components/schemas/BotSelfResponse' description: Response wrapper with data example: data: id: 1738816 + oauth_client: + client_id: aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY + client_secret_preview: dGhpc19p...ZWNy + confidential: true + redirect_uris: + - https://example.com/oauth/callback + scopes: + - messages:read + - messages:create webhook: name: Tasks bot nickname: tasks_bot @@ -373,8 +392,9 @@ paths: edit access. - The `query` parameter selects bots by part of the name, without typos. Bot tokens do not come in the list — they - are shown once at creation and at rotation. + The `query` parameter selects bots by part of the name, without typos. Bot tokens do not come in the list: a + token value is shown once, and the bot's tokens themselves are returned by [Bot token list](GET + /bots/{id}/tokens). The list of all bots in the workspace, including other people's, is available to the owner on the "Corporation" @@ -433,6 +453,13 @@ paths: example: data: - id: 1738816 + name: Tasks bot + nickname: tasks_bot + avatar_url: null + creator_id: 12 + created_at: '2025-05-15T14:30:00.000Z' + authorized_users_count: 3 + last_used_at: '2025-05-20T09:15:00.000Z' webhook: name: Tasks bot nickname: tasks_bot @@ -454,6 +481,27 @@ paths: can_edit: - admin who_can_add: creator + kind: simple + unfurl_domains: [] + last_request_at: '2025-05-20T09:15:00.000Z' + oauth_client_enabled: true + oauth_client: + client_id: aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY + client_secret_preview: dGhpc19p...ZWNy + confidential: true + redirect_uris: + - https://example.com/oauth/callback + scopes: + - messages:read + - messages:create + promo: + description: Collects a summary of tasks and sends it to the chat + published: true + promo_images: [] + permissions: + update_oauth_client: true + recreate_token: true + destroy: true meta: paginate: next_page: eyJpZCI6MTczODgxNn0 @@ -486,9 +534,14 @@ paths: New bot - Creates a bot in the workspace and immediately returns its `access_token`. Save the token at creation: the same - one is not shown again, and what remains is to reissue it with [Bot token rotation](POST - /bots/{id}/recreate_token). + Creates a bot in the workspace. By default the bot gets an incoming webhook in its own format and immediately + returns its `access_token`. Save the token at creation: the same one is not shown again, and what remains is to + reissue it with [Bot token rotation](POST /bots/{id}/recreate_token). + + + With `empty: true` an empty bot is created, as in the interface: only a name and a nickname, without a token and + without an incoming webhook. Tokens are issued to it with [New bot token](POST /bots/{id}/tokens), and the + incoming webhook is enabled with the `kind` field in the `webhook` object. A newly created bot does not write anywhere yet. It writes into a conversation and a channel only as a member, @@ -502,8 +555,12 @@ paths: To write into one particular chat, take the [New message](POST /messages) method — that one does need a token. - The nickname must end with `_bot` and be free in the workspace. The `single_chat` restriction is set only here: - when editing a bot it can no longer be changed. + Authorization on behalf of an employee can be enabled right away by passing `oauth_client`, and the catalog page + can be filled in `promo`. For a server-side client the secret comes in `client_secret` once. Learn more in + [Authorization setup](/guides/oauth/setup). + + + The nickname must end with `_bot` and be free in the workspace. parameters: [] responses: '201': @@ -521,6 +578,13 @@ paths: example: data: id: 1738816 + name: Tasks bot + nickname: tasks_bot + avatar_url: null + creator_id: 12 + created_at: '2025-05-15T14:30:00.000Z' + authorized_users_count: 0 + last_used_at: null webhook: name: Tasks bot nickname: tasks_bot @@ -542,6 +606,28 @@ paths: can_edit: - admin who_can_add: creator + kind: simple + unfurl_domains: [] + last_request_at: null + oauth_client_enabled: true + oauth_client: + client_id: aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY + client_secret_preview: dGhpc19p...ZWNy + confidential: true + redirect_uris: + - https://example.com/oauth/callback + scopes: + - messages:read + - messages:create + promo: + description: null + published: false + promo_images: [] + permissions: + update_oauth_client: true + recreate_token: true + destroy: true + client_secret: dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA access_token: bm90X2FfcmVhbF90b2tlbg '400': description: The server could not understand the request due to invalid syntax. @@ -587,6 +673,13 @@ paths: - /task scopes: - messages:create + oauth_client: + confidential: true + redirect_uris: + - https://example.com/oauth/callback + scopes: + - messages:read + - messages:create x-requirements: scope: bots:write /bots/{id}: @@ -597,12 +690,13 @@ paths: The bot's settings. The token does not come in the response — it is shown once at the bot's creation and at [Bot - token rotation](POST /bots/{id}/recreate_token). + token rotation](POST /bots/{id}/recreate_token). The bot's tokens are returned by [Bot token list](GET + /bots/{id}/tokens). The method returns only the bots the caller is entitled to configure: their own, and, if the bot's settings - allow it, also as a workspace administrator or as the owner of a chat the bot belongs to. For someone else's bot - the method responds `403`. + allow it, also as a workspace administrator or as an owner or admin of a chat the bot belongs to. For someone + else's bot the method responds `403`. The list of all bots in the workspace, including other people's, is available to the owner on the "Corporation" @@ -633,6 +727,13 @@ paths: example: data: id: 1738816 + name: Tasks bot + nickname: tasks_bot + avatar_url: null + creator_id: 12 + created_at: '2025-05-15T14:30:00.000Z' + authorized_users_count: 3 + last_used_at: '2025-05-20T09:15:00.000Z' webhook: name: Tasks bot nickname: tasks_bot @@ -654,6 +755,27 @@ paths: can_edit: - admin who_can_add: creator + kind: simple + unfurl_domains: [] + last_request_at: '2025-05-20T09:15:00.000Z' + oauth_client_enabled: true + oauth_client: + client_id: aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY + client_secret_preview: dGhpc19p...ZWNy + confidential: true + redirect_uris: + - https://example.com/oauth/callback + scopes: + - messages:read + - messages:create + promo: + description: Collects a summary of tasks and sends it to the chat + published: true + promo_images: [] + permissions: + update_oauth_client: true + recreate_token: true + destroy: true '401': description: Access is unauthorized. content: @@ -691,17 +813,27 @@ paths: Changes a bot's settings: only the fields you pass are overwritten. - The `single_chat` field is accepted only when a bot is created. In this method it is silently ignored: the - response is successful and the bot's mode does not change. + The nickname must end with `_bot` and be free in the workspace, otherwise the method responds with a validation + error. Commands and scopes are replaced by the passed list as a whole. Scopes apply to the bot's main token — + the one without a name, or the oldest one if there is none — and take effect on it right away, there is no need + to reissue it. The scopes of an additional token are changed by [Edit bot token](PUT + /bots/{id}/tokens/{token_id}). - The nickname must end with `_bot` and be free in the workspace, otherwise the method responds with a validation - error. Commands and scopes are replaced by the passed list as a whole, and the new set of scopes is applied to - the bot's current token right away — there is no need to reissue it. + The `oauth_client` object enables authorization on behalf of an employee or changes its settings, and `null` + disables it: authorizations granted by employees are revoked, the catalog page is deleted, and the bot's own + tokens keep working. When the client becomes server-side, its secret comes in `client_secret` once. The catalog + page is set by `promo` while authorization is enabled. + + + Only a workspace administrator or owner can enable the `message_link_shared` event, and for a bot with it change + the domains, the webhook address and the event history. - You cannot edit a bot whose settings are not accessible to you (the "Who can edit bot settings" field is located - on the "General" tab in the bot settings). + The bot name, authorization on behalf of an employee and the catalog page are changed only by the bot's creator, + and a workspace administrator if the bot's settings grant administrators edit access. Other settings cannot be + changed for a bot whose settings are not accessible to you (the "Who can edit bot settings" field is located on + the "General" tab in the bot settings). parameters: - name: id in: path @@ -748,7 +880,9 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/OAuthError' + anyOf: + - $ref: '#/components/schemas/ApiError' + - $ref: '#/components/schemas/OAuthError' '404': description: The server cannot find the requested resource. content: @@ -777,11 +911,12 @@ paths: Delete bot - Delete a bot. The bot's previous `access_token` is invalidated immediately, the bot is removed from all chats, - and its outgoing webhook is deleted. + Removes the bot from the workspace for good. All of the bot's tokens stop working at once, as do the + authorizations employees granted to it. The bot is removed from all chats, and its webhooks and catalog page are + deleted. - Deletion is available to the bot creator, and to a workspace administrator if the bot's settings grant + Deletion is available to the bot's creator, and a workspace administrator if the bot's settings grant administrators edit access. Chat owners and admins cannot delete a bot, even if they are allowed to edit it. parameters: - name: id @@ -835,11 +970,15 @@ paths: compromised or for scheduled secret rotation in `CI`. + The bot's main token is reissued — the one without a name, or the oldest one if there is none. An additional + token is reissued by [Reissue bot token](POST /bots/{id}/tokens/{token_id}/reissue). + + The new token is returned in the response only once — save it right away. Its permissions are the same: the scopes are carried over from the previous token. - Rotation is available to the bot creator, and also to a workspace administrator if the bot's settings grant + Rotation is available to the bot's creator, and a workspace administrator if the bot's settings grant administrators edit access. The owner of a chat the bot belongs to cannot rotate the token, even when the rest of the bot's settings are open to them. parameters: @@ -868,6 +1007,13 @@ paths: example: data: id: 1738816 + name: Tasks bot + nickname: tasks_bot + avatar_url: null + creator_id: 12 + created_at: '2025-05-15T14:30:00.000Z' + authorized_users_count: 3 + last_used_at: '2025-05-20T09:15:00.000Z' webhook: name: Tasks bot nickname: tasks_bot @@ -889,6 +1035,27 @@ paths: can_edit: - admin who_can_add: creator + kind: simple + unfurl_domains: [] + last_request_at: '2025-05-20T09:15:00.000Z' + oauth_client_enabled: true + oauth_client: + client_id: aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY + client_secret_preview: dGhpc19p...ZWNy + confidential: true + redirect_uris: + - https://example.com/oauth/callback + scopes: + - messages:read + - messages:create + promo: + description: Collects a summary of tasks and sends it to the chat + published: true + promo_images: [] + permissions: + update_oauth_client: true + recreate_token: true + destroy: true access_token: bm90X2FfcmVhbF90b2tlbg '401': description: Access is unauthorized. @@ -918,30 +1085,37 @@ paths: - Bots x-requirements: scope: bots:write - /chats: + /bots/{id}/rotate_client_secret: post: - operationId: ChatOperations_createChat + operationId: BotOperations_rotateBotClientSecret description: >- - New chat + Client secret rotation - Creates a conversation or a channel. The token owner becomes the chat owner, and this role is not transferred - later on. + Issues a new `client_secret` for authorization on behalf of an employee. The previous secret stops working at + once, so prepare the bot for the replacement first. Authorizations already granted and tokens already received + keep working. - To create a one-on-one direct message with a user, use the [New message](POST /messages) method. To discuss a - particular message there is no need to create a chat — a thread is started under it with the [New thread](POST - /messages/{id}/thread) method. + The new secret comes in `client_secret` once. The method works only for a bot with authorization enabled and a + server-side client (`confidential: true`), otherwise it responds `400`. - Members can be passed right away: `member_ids` adds them one by one, `group_tag_ids` brings in everyone who - belongs to the tag and keeps the membership up to date afterwards. IDs that do not exist in the workspace, as - well as suspended and deleted employees, are silently dropped — the response is successful but the employee is - not in the chat, so check the membership in the response. - parameters: [] + Rotation is available to the bot's creator, and to a workspace administrator if the bot's settings give + administrators edit access. + parameters: + - name: id + in: path + required: true + description: Bot ID + schema: + type: integer + format: int32 + example: 1738816 + example: 1738816 responses: - '201': - description: The request has succeeded and a new resource has been created as a result. + '200': + description: The request has succeeded. content: application/json: schema: @@ -950,8 +1124,61 @@ paths: - data properties: data: - $ref: '#/components/schemas/Chat' + $ref: '#/components/schemas/BotResponse' description: Response wrapper with data + example: + data: + id: 1738816 + name: Tasks bot + nickname: tasks_bot + avatar_url: null + creator_id: 12 + created_at: '2025-05-15T14:30:00.000Z' + authorized_users_count: 3 + last_used_at: '2025-05-20T09:15:00.000Z' + webhook: + name: Tasks bot + nickname: tasks_bot + outgoing_url: https://www.website.com/tasks/new + events: + - message_new + trigger_on: commands + commands: + - /task + scopes: + - messages:create + template: Order from {{ client }} for {{ amount }} ₽ + template_engine: liquid + challenge_key: challenge + link_preview_enabled: true + ignore_self_messages: false + events_history_enabled: false + single_chat: false + can_edit: + - admin + who_can_add: creator + kind: simple + unfurl_domains: [] + last_request_at: '2025-05-20T09:15:00.000Z' + oauth_client_enabled: true + oauth_client: + client_id: aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY + client_secret_preview: dGhpc19p...ZWNy + confidential: true + redirect_uris: + - https://example.com/oauth/callback + scopes: + - messages:read + - messages:create + promo: + description: Collects a summary of tasks and sends it to the chat + published: true + promo_images: [] + permissions: + update_oauth_client: true + recreate_token: true + destroy: true + client_secret: dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA '400': description: The server could not understand the request due to invalid syntax. content: @@ -975,120 +1202,125 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/OAuthError' - '422': - description: Client error + anyOf: + - $ref: '#/components/schemas/ApiError' + - $ref: '#/components/schemas/OAuthError' + '404': + description: The server cannot find the requested resource. content: application/json: schema: $ref: '#/components/schemas/ApiError' tags: - - Chats - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/ChatCreateRequest' + - Bots x-requirements: - scope: chats:create + scope: bots:write + /bots/{id}/scopes: get: - operationId: ChatOperations_listChats + operationId: BotOperations_getBotScopes description: >- - List chats + Bot scope catalog - By default — the conversations, channels, and direct messages the token owner belongs to. With - `availability=public` the method returns instead all public chats of the workspace, including the ones the - caller has not joined. + The scopes that can be granted to this bot: to its tokens and to authorization on behalf of an employee. Each + scope has a description, a category and the ready-made sets it belongs to, as when choosing scopes in the + interface. - Threads never come in this list; for them there is [List threads](GET /threads). + The catalog is available to the same people who see the bot's tokens: the bot's creator, and a workspace + administrator if the bot's settings give administrators edit access. + parameters: + - name: id + in: path + required: true + description: Bot ID + schema: + type: integer + format: int32 + example: 1738816 + example: 1738816 + responses: + '200': + description: The request has succeeded. + content: + application/json: + schema: + $ref: '#/components/schemas/BotScopeCatalog' + example: + scopes: + - id: messages:create + title: Send messages + group: messages + preset: + - admin + groups: + - id: messages + title: Messages + description: Working with messages + presets: + - id: read-only + title: Read only + - id: admin + title: Administrator + '401': + description: Access is unauthorized. + content: + application/json: + schema: + $ref: '#/components/schemas/OAuthError' + '402': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '403': + description: Access is forbidden. + content: + application/json: + schema: + anyOf: + - $ref: '#/components/schemas/ApiError' + - $ref: '#/components/schemas/OAuthError' + '404': + description: The server cannot find the requested resource. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - Bots + x-requirements: + scope: bots:read + /bots/{id}/tokens: + get: + operationId: BotOperations_listBotTokens + description: >- + Bot token list - `archived=true` does not switch the results to the archive, it adds archived chats to the active ones. + The bot's active tokens: the main one, issued together with the bot, and additional ones — each with its own + name and scopes. The token value is masked here: in full it is shown once, when the token is issued and when it + is reissued. + + + Only the bot's creator and a workspace administrator, if the bot's settings give administrators edit access, can + work with the bot's tokens. For the owner of a chat with the bot the method responds `403`, even when the bot's + other settings are open to them. parameters: - - name: sort - in: query - required: false - description: Sort field - schema: - allOf: - - $ref: '#/components/schemas/ChatSortField' - default: id - example: id - explode: false - - name: order - in: query - required: false - description: Sort direction - schema: - allOf: - - $ref: '#/components/schemas/SortOrder' - default: desc - example: desc - explode: false - - name: availability - in: query - required: false - description: Parameter that controls chat availability and filtering for the user - schema: - allOf: - - $ref: '#/components/schemas/ChatAvailability' - default: is_member - example: is_member - explode: false - - name: archived - in: query - required: false - description: >- - Include archived chats in the response. By default only active chats are returned. Works with any - `availability` value. - schema: - type: boolean - example: true - default: false - example: true - explode: false - - name: last_message_at_after - in: query - required: false - description: >- - Filter by the creation time of the last message: chats where it is later than the specified one are - returned. The value is in ISO-8601, an offset such as `+03:00` is taken into account, and a time without an - offset is treated as UTC. - schema: - type: string - format: date-time - example: '2025-01-01T00:00:00.000Z' - example: '2025-01-01T00:00:00.000Z' - explode: false - - name: last_message_at_before - in: query - required: false - description: >- - Filter by the creation time of the last message: chats where it is earlier than the specified one are - returned. The value is in ISO-8601, an offset such as `+03:00` is taken into account, and a time without an - offset is treated as UTC. - schema: - type: string - format: date-time - example: '2025-02-01T00:00:00.000Z' - example: '2025-02-01T00:00:00.000Z' - explode: false - - name: personal - in: query - required: false - description: Filter by direct and group chats. If not specified, all chats are returned. + - name: id + in: path + required: true + description: Bot ID schema: - type: boolean - example: false - example: false - explode: false + type: integer + format: int32 + example: 1738816 + example: 1738816 - name: limit in: query required: false - description: Number of records to return per request + description: Number of entities returned per request schema: type: integer format: int32 @@ -1101,11 +1333,11 @@ paths: - name: cursor in: query required: false - description: Pagination cursor (from `meta.paginate.next_page` or `meta.paginate.prev_page`) + description: Pagination cursor (from `meta.paginate.next_page`) schema: type: string - example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 - example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 + example: eyJpZCI6NDgyN30 + example: eyJpZCI6NDgyN30 explode: false responses: '200': @@ -1121,12 +1353,29 @@ paths: data: type: array items: - $ref: '#/components/schemas/Chat' + $ref: '#/components/schemas/BotAccessToken' meta: $ref: '#/components/schemas/PaginationMeta' description: Response wrapper with data and pagination - '400': - description: The server could not understand the request due to invalid syntax. + example: + data: + - id: 4827 + token: cH5kR9mN...x7Qp + name: Notification server + user_id: 1738816 + scopes: + - messages:create + - chats:read + created_at: '2025-01-15T10:30:00.000Z' + revoked_at: null + expires_in: null + last_used_at: '2025-02-24T14:20:00.000Z' + authorized_at: null + meta: + paginate: + next_page: eyJpZCI6NDgyN30 + '400': + description: The server could not understand the request due to invalid syntax. content: application/json: schema: @@ -1148,41 +1397,79 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/OAuthError' - '422': - description: Client error + anyOf: + - $ref: '#/components/schemas/ApiError' + - $ref: '#/components/schemas/OAuthError' + '404': + description: The server cannot find the requested resource. content: application/json: schema: $ref: '#/components/schemas/ApiError' tags: - - Chats + - Bots x-paginated: true x-requirements: - scope: chats:read - /chats/exports: + scope: bots:read post: - operationId: ExportOperations_requestExport + operationId: BotOperations_createBotToken description: >- - Export messages + New bot token - Order an export of the workspace messages for a period. The archive is prepared in the background, so the - response comes back empty and contains no export identifier. + Issues one more token for the bot, with its own name and scopes. A bot can have several tokens: for example, a + separate one for each service, so that they can be revoked one by one. - The number of the finished export arrives in the `export_id` field of the webhook sent to the address from - `webhook_url`. The employee who ordered it also receives an email and a notification in Pachca with a link of - the form `/full_exports/{id}` — the number in it is the identifier. The webhook address is optional, but without - it a program has nowhere to take the number from: only the email and the notification to whoever ordered it are - left. + The token value comes in the response once — save it right away. The token does not expire and works until it is + deleted. - With that identifier the archive is fetched by the [Download export archive](GET /chats/exports/{id}) method. - parameters: [] + Scopes are chosen from those that can be granted to a bot: they are listed by [Bot scope catalog](GET + /bots/{id}/scopes). For a scope that is not in the catalog the method responds `400`. Without `scopes` the token + is issued without scopes. + + + Only the bot's creator and a workspace administrator, if the bot's settings give administrators edit access, can + work with the bot's tokens. For the owner of a chat with the bot the method responds `403`, even when the bot's + other settings are open to them. + parameters: + - name: id + in: path + required: true + description: Bot ID + schema: + type: integer + format: int32 + example: 1738816 + example: 1738816 responses: - '204': - description: 'There is no content to send for this request, but the headers may be useful. ' + '201': + description: The request has succeeded and a new resource has been created as a result. + content: + application/json: + schema: + type: object + required: + - data + properties: + data: + $ref: '#/components/schemas/BotAccessToken' + description: Response wrapper with data + example: + data: + id: 4827 + token: bm90X2FfcmVhbF90b2tlbg + name: Notification server + user_id: 1738816 + scopes: + - messages:create + - chats:read + created_at: '2025-01-15T10:30:00.000Z' + revoked_at: null + expires_in: null + last_used_at: null + authorized_at: null '400': description: The server could not understand the request due to invalid syntax. content: @@ -1195,6 +1482,12 @@ paths: application/json: schema: $ref: '#/components/schemas/OAuthError' + '402': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' '403': description: Access is forbidden. content: @@ -1203,73 +1496,113 @@ paths: anyOf: - $ref: '#/components/schemas/ApiError' - $ref: '#/components/schemas/OAuthError' - '422': - description: Client error + '404': + description: The server cannot find the requested resource. content: application/json: schema: $ref: '#/components/schemas/ApiError' tags: - - Chats + - Bots requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/ExportRequest' + $ref: '#/components/schemas/BotTokenCreateRequest' + example: + name: Notification server + scopes: + - messages:create + - chats:read x-requirements: - scope: chat_exports:write - plan: corporation - /chats/exports/{id}: - get: - operationId: ExportOperations_downloadExport + scope: bots:write + /bots/{id}/tokens/{token_id}: + put: + operationId: BotOperations_updateBotToken description: >- - Download export archive + Edit bot token - In response to the request the server returns `302 Found` with a `Location` header containing a temporary - download link for the file. Most HTTP clients automatically follow the redirect and download the file. + Changes the token's name or scopes. New scopes take effect immediately: there is no need to reissue the token, + and its value stays the same. Scopes are replaced by the passed list as a whole. - The link is valid for 5 minutes, so download the archive right after the request. The archive itself is stored - for 7 days, and only the employee who ordered the export can download it — the method refuses another employee - holding the same permission. + Only the bot's creator and a workspace administrator, if the bot's settings give administrators edit access, can + work with the bot's tokens. For the owner of a chat with the bot the method responds `403`, even when the bot's + other settings are open to them. parameters: - name: id in: path required: true - description: Export ID + description: Bot ID schema: type: integer format: int32 - example: 22322 - example: 22322 + example: 1738816 + example: 1738816 + - name: token_id + in: path + required: true + description: Token ID + schema: + type: integer + format: int64 + example: 4827 + example: 4827 responses: - '302': - description: Redirection - headers: - location: - required: true - description: Temporary link to the archive in storage, valid for 5 minutes + '200': + description: The request has succeeded. + content: + application/json: schema: - type: string - format: uri + type: object + required: + - data + properties: + data: + $ref: '#/components/schemas/BotAccessToken' + description: Response wrapper with data + example: + data: + id: 4827 + token: cH5kR9mN...x7Qp + name: Notification server + user_id: 1738816 + scopes: + - messages:create + - chats:read + created_at: '2025-01-15T10:30:00.000Z' + revoked_at: null + expires_in: null + last_used_at: '2025-02-24T14:20:00.000Z' + authorized_at: null + '400': + description: The server could not understand the request due to invalid syntax. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/OAuthError' + '402': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' '403': description: Access is forbidden. content: application/json: schema: anyOf: + - $ref: '#/components/schemas/ApiError' - $ref: '#/components/schemas/OAuthError' - - anyOf: - - $ref: '#/components/schemas/ApiError' - - $ref: '#/components/schemas/OAuthError' '404': description: The server cannot find the requested resource. content: @@ -1277,51 +1610,54 @@ paths: schema: $ref: '#/components/schemas/ApiError' tags: - - Chats + - Bots + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/BotTokenUpdateRequest' + example: + name: Notification server + scopes: + - messages:create + - chats:read x-requirements: - scope: chat_exports:read - plan: corporation - /chats/{id}: - get: - operationId: ChatOperations_getChat + scope: bots:write + delete: + operationId: BotOperations_deleteBotToken description: >- - Chat info + Delete bot token - The chat's details together with the list of members and the linked tags. - - - A private conversation the caller does not belong to responds `403`, not `404`: this method does not hide the - existence of a chat. A public channel of your own workspace is returned even to someone who has not joined it. - The method does not open other people's private chats to the workspace owner either — the full list of those is - returned by [List workspace chats](GET /company/chats). + Deletes the token: requests with it stop passing at once. The bot's other tokens keep working. - Only active members come in `member_ids`: suspended ones do not make it into the list, although their membership - is kept. + Only the bot's creator and a workspace administrator, if the bot's settings give administrators edit access, can + work with the bot's tokens. For the owner of a chat with the bot the method responds `403`, even when the bot's + other settings are open to them. parameters: - name: id in: path required: true - description: Chat ID + description: Bot ID schema: type: integer format: int32 - example: 334 - example: 334 + example: 1738816 + example: 1738816 + - name: token_id + in: path + required: true + description: Token ID + schema: + type: integer + format: int64 + example: 4827 + example: 4827 responses: - '200': - description: The request has succeeded. - content: - application/json: - schema: - type: object - required: - - data - properties: - data: - $ref: '#/components/schemas/Chat' - description: Response wrapper with data + '204': + description: 'There is no content to send for this request, but the headers may be useful. ' '401': description: Access is unauthorized. content: @@ -1339,7 +1675,9 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/OAuthError' + anyOf: + - $ref: '#/components/schemas/ApiError' + - $ref: '#/components/schemas/OAuthError' '404': description: The server cannot find the requested resource. content: @@ -1347,36 +1685,46 @@ paths: schema: $ref: '#/components/schemas/ApiError' tags: - - Chats + - Bots x-requirements: - scope: chats:read - put: - operationId: ChatOperations_updateChat + scope: bots:write + /bots/{id}/tokens/{token_id}/reissue: + post: + operationId: BotOperations_reissueBotToken description: >- - Edit chat + Reissue bot token - Changes the name of a conversation or a channel and its availability. Both changes are visible to the members as - a system message in the chat feed. + Replaces the token value with a new one: the previous value stops working at once, the name and scopes stay. The + new value comes in the response once — save it right away. - A direct chat cannot be renamed, and neither can an archived one: [Unarchive chat](PUT /chats/{id}/unarchive) it - first. In a private chat the method is available to the chat owner and a chat administrator, in a public one to - any employee of the workspace, even a non-member. + The method is needed when a token has leaked or is changed on schedule. The bot's main token can also be + reissued with [Bot token rotation](POST /bots/{id}/recreate_token). - The membership is not changed by this method; for that there are [Add users](POST /chats/{id}/members) and - [Remove user](DELETE /chats/{id}/members/{user_id}). + Only the bot's creator and a workspace administrator, if the bot's settings give administrators edit access, can + work with the bot's tokens. For the owner of a chat with the bot the method responds `403`, even when the bot's + other settings are open to them. parameters: - name: id in: path required: true - description: Chat ID + description: Bot ID schema: type: integer format: int32 - example: 334 - example: 334 + example: 1738816 + example: 1738816 + - name: token_id + in: path + required: true + description: Token ID + schema: + type: integer + format: int64 + example: 4827 + example: 4827 responses: '200': description: The request has succeeded. @@ -1388,14 +1736,22 @@ paths: - data properties: data: - $ref: '#/components/schemas/Chat' + $ref: '#/components/schemas/BotAccessToken' description: Response wrapper with data - '400': - description: The server could not understand the request due to invalid syntax. - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' + example: + data: + id: 4827 + token: bm90X2FfcmVhbF90b2tlbg + name: Notification server + user_id: 1738816 + scopes: + - messages:create + - chats:read + created_at: '2025-01-15T10:30:00.000Z' + revoked_at: null + expires_in: null + last_used_at: '2025-02-24T14:20:00.000Z' + authorized_at: null '401': description: Access is unauthorized. content: @@ -1413,37 +1769,552 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/OAuthError' + anyOf: + - $ref: '#/components/schemas/ApiError' + - $ref: '#/components/schemas/OAuthError' '404': description: The server cannot find the requested resource. content: application/json: schema: $ref: '#/components/schemas/ApiError' - '422': - description: Client error - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' tags: - - Chats - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/ChatUpdateRequest' + - Bots x-requirements: - scope: chats:update - /chats/{id}/archive: - put: - operationId: ChatOperations_archiveChat + scope: bots:write + /chats: + post: + operationId: ChatOperations_createChat description: >- - Archive chat + New chat - Sends a conversation or a channel to the archive: the chat disappears from the lists of all members, new + Creates a conversation or a channel. The token owner becomes the chat owner, and this role is not transferred + later on. + + + A multi-guest cannot create chats, as in the interface: the method responds `403` to them. + + + To create a one-on-one direct message with a user, use the [New message](POST /messages) method. To discuss a + particular message there is no need to create a chat — a thread is started under it with the [New thread](POST + /messages/{id}/thread) method. + + + Members can be passed right away: `member_ids` adds them one by one, `group_tag_ids` brings in everyone who + belongs to the tag and keeps the membership up to date afterwards. IDs that do not exist in the workspace, as + well as suspended and deleted employees, are silently dropped — the response is successful but the employee is + not in the chat, so check the membership in the response. Bots are stricter: if a bot's "Who can add the bot to + chats" setting does not let you add it, the chat is not created, and the method responds `403` with the + `bot_add_denied` code and the IDs of such bots in `value`. + parameters: [] + responses: + '201': + description: The request has succeeded and a new resource has been created as a result. + content: + application/json: + schema: + type: object + required: + - data + properties: + data: + $ref: '#/components/schemas/Chat' + description: Response wrapper with data + '400': + description: The server could not understand the request due to invalid syntax. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: Access is unauthorized. + content: + application/json: + schema: + $ref: '#/components/schemas/OAuthError' + '402': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '403': + description: Access is forbidden. + content: + application/json: + schema: + anyOf: + - $ref: '#/components/schemas/ApiError' + - $ref: '#/components/schemas/OAuthError' + '422': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - Chats + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ChatCreateRequest' + x-requirements: + scope: chats:create + get: + operationId: ChatOperations_listChats + description: >- + List chats + + + By default — the conversations, channels, and direct messages the token owner belongs to. With + `availability=public` the method returns instead all public chats of the workspace, including the ones the + caller has not joined. For a multi-guest — only the public chats they are a member of. + + + Threads never come in this list; for them there is [List threads](GET /threads). + + + `archived=true` does not switch the results to the archive, it adds archived chats to the active ones. + parameters: + - name: sort + in: query + required: false + description: Sort field + schema: + allOf: + - $ref: '#/components/schemas/ChatSortField' + default: id + example: id + explode: false + - name: order + in: query + required: false + description: Sort direction + schema: + allOf: + - $ref: '#/components/schemas/SortOrder' + default: desc + example: desc + explode: false + - name: availability + in: query + required: false + description: Parameter that controls chat availability and filtering for the user + schema: + allOf: + - $ref: '#/components/schemas/ChatAvailability' + default: is_member + example: is_member + explode: false + - name: archived + in: query + required: false + description: >- + Include archived chats in the response. By default only active chats are returned. Works with any + `availability` value. + schema: + type: boolean + example: true + default: false + example: true + explode: false + - name: last_message_at_after + in: query + required: false + description: >- + Filter by the creation time of the last message: chats where it is later than the specified one are + returned. The value is in ISO-8601, an offset such as `+03:00` is taken into account, and a time without an + offset is treated as UTC. + schema: + type: string + format: date-time + example: '2025-01-01T00:00:00.000Z' + example: '2025-01-01T00:00:00.000Z' + explode: false + - name: last_message_at_before + in: query + required: false + description: >- + Filter by the creation time of the last message: chats where it is earlier than the specified one are + returned. The value is in ISO-8601, an offset such as `+03:00` is taken into account, and a time without an + offset is treated as UTC. + schema: + type: string + format: date-time + example: '2025-02-01T00:00:00.000Z' + example: '2025-02-01T00:00:00.000Z' + explode: false + - name: personal + in: query + required: false + description: Filter by direct and group chats. If not specified, all chats are returned. + schema: + type: boolean + example: false + example: false + explode: false + - name: limit + in: query + required: false + description: Number of records to return per request + schema: + type: integer + format: int32 + minimum: 1 + maximum: 50 + example: 1 + default: 50 + example: 1 + explode: false + - name: cursor + in: query + required: false + description: Pagination cursor (from `meta.paginate.next_page` or `meta.paginate.prev_page`) + schema: + type: string + example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 + example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 + explode: false + responses: + '200': + description: The request has succeeded. + content: + application/json: + schema: + type: object + required: + - data + - meta + properties: + data: + type: array + items: + $ref: '#/components/schemas/Chat' + meta: + $ref: '#/components/schemas/PaginationMeta' + description: Response wrapper with data and pagination + '400': + description: The server could not understand the request due to invalid syntax. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: Access is unauthorized. + content: + application/json: + schema: + $ref: '#/components/schemas/OAuthError' + '402': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '403': + description: Access is forbidden. + content: + application/json: + schema: + $ref: '#/components/schemas/OAuthError' + '422': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - Chats + x-paginated: true + x-requirements: + scope: chats:read + /chats/exports: + post: + operationId: ExportOperations_requestExport + description: >- + Export messages + + + Order an export of the workspace messages for a period. The archive is prepared in the background, so the + response comes back empty and contains no export identifier. + + + The number of the finished export arrives in the `export_id` field of the webhook sent to the address from + `webhook_url`. The employee who ordered it also receives an email and a notification in Pachca with a link of + the form `/full_exports/{id}` — the number in it is the identifier. The webhook address is optional, but without + it a program has nowhere to take the number from: only the email and the notification to whoever ordered it are + left. + + + With that identifier the archive is fetched by the [Download export archive](GET /chats/exports/{id}) method. + parameters: [] + responses: + '204': + description: 'There is no content to send for this request, but the headers may be useful. ' + '400': + description: The server could not understand the request due to invalid syntax. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: Access is unauthorized. + content: + application/json: + schema: + $ref: '#/components/schemas/OAuthError' + '403': + description: Access is forbidden. + content: + application/json: + schema: + anyOf: + - $ref: '#/components/schemas/ApiError' + - $ref: '#/components/schemas/OAuthError' + '422': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - Chats + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ExportRequest' + x-requirements: + scope: chat_exports:write + plan: corporation + /chats/exports/{id}: + get: + operationId: ExportOperations_downloadExport + description: >- + Download export archive + + + In response to the request the server returns `302 Found` with a `Location` header containing a temporary + download link for the file. Most HTTP clients automatically follow the redirect and download the file. + + + The link is valid for 5 minutes, so download the archive right after the request. The archive itself is stored + for 7 days, and only the employee who ordered the export can download it — the method refuses another employee + holding the same permission. + parameters: + - name: id + in: path + required: true + description: Export ID + schema: + type: integer + format: int32 + example: 22322 + example: 22322 + responses: + '302': + description: Redirection + headers: + location: + required: true + description: Temporary link to the archive in storage, valid for 5 minutes + schema: + type: string + format: uri + '401': + description: Access is unauthorized. + content: + application/json: + schema: + $ref: '#/components/schemas/OAuthError' + '403': + description: Access is forbidden. + content: + application/json: + schema: + anyOf: + - $ref: '#/components/schemas/OAuthError' + - anyOf: + - $ref: '#/components/schemas/ApiError' + - $ref: '#/components/schemas/OAuthError' + '404': + description: The server cannot find the requested resource. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - Chats + x-requirements: + scope: chat_exports:read + plan: corporation + /chats/{id}: + get: + operationId: ChatOperations_getChat + description: >- + Chat info + + + The chat's details together with the list of members and the linked tags. + + + A private conversation the caller does not belong to responds `403`, not `404`: this method does not hide the + existence of a chat. A public channel of your own workspace is returned even to someone who has not joined it. + The method does not open other people's private chats to the workspace owner either — the full list of those is + returned by [List workspace chats](GET /company/chats). + + + Only active members come in `member_ids`: suspended ones do not make it into the list, although their membership + is kept. + parameters: + - name: id + in: path + required: true + description: Chat ID + schema: + type: integer + format: int32 + example: 334 + example: 334 + responses: + '200': + description: The request has succeeded. + content: + application/json: + schema: + type: object + required: + - data + properties: + data: + $ref: '#/components/schemas/Chat' + description: Response wrapper with data + '401': + description: Access is unauthorized. + content: + application/json: + schema: + $ref: '#/components/schemas/OAuthError' + '402': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '403': + description: Access is forbidden. + content: + application/json: + schema: + $ref: '#/components/schemas/OAuthError' + '404': + description: The server cannot find the requested resource. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - Chats + x-requirements: + scope: chats:read + put: + operationId: ChatOperations_updateChat + description: >- + Edit chat + + + Changes the name of a conversation or a channel and its availability. Both changes are visible to the members as + a system message in the chat feed. + + + A direct chat cannot be renamed, and neither can an archived one: [Unarchive chat](PUT /chats/{id}/unarchive) it + first. In a private chat the method is available to the chat owner and a chat administrator, in a public one to + any employee of the workspace, even a non-member. + + + The membership is not changed by this method; for that there are [Add users](POST /chats/{id}/members) and + [Remove user](DELETE /chats/{id}/members/{user_id}). + parameters: + - name: id + in: path + required: true + description: Chat ID + schema: + type: integer + format: int32 + example: 334 + example: 334 + responses: + '200': + description: The request has succeeded. + content: + application/json: + schema: + type: object + required: + - data + properties: + data: + $ref: '#/components/schemas/Chat' + description: Response wrapper with data + '400': + description: The server could not understand the request due to invalid syntax. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: Access is unauthorized. + content: + application/json: + schema: + $ref: '#/components/schemas/OAuthError' + '402': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '403': + description: Access is forbidden. + content: + application/json: + schema: + $ref: '#/components/schemas/OAuthError' + '404': + description: The server cannot find the requested resource. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - Chats + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ChatUpdateRequest' + x-requirements: + scope: chats:update + /chats/{id}/archive: + put: + operationId: ChatOperations_archiveChat + description: >- + Archive chat + + + Sends a conversation or a channel to the archive: the chat disappears from the lists of all members, new messages are not accepted into it, and the history is kept. @@ -1828,6 +2699,12 @@ paths: nobody is added. + A bot is added only by someone its "Who can add the bot to chats" setting allows — see [Bot + settings](/guides/bots/settings#kto-mozhet-dobavlyat-bota-v-chaty). If `member_ids` contains a bot you are not + allowed to add, the method adds nobody and responds `403` with the `bot_add_denied` code and the IDs of such + bots in `value`. If the same request also has an unknown ID, the response is `404` with both errors. + + Adding a whole department at once is more convenient with a tag — [Add tags](POST /chats/{id}/group_tags): then the chat membership is maintained by itself. parameters: @@ -1860,7 +2737,9 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/OAuthError' + anyOf: + - $ref: '#/components/schemas/ApiError' + - $ref: '#/components/schemas/OAuthError' '404': description: The server cannot find the requested resource. content: @@ -2072,6 +2951,82 @@ paths: - Chats x-requirements: scope: chats:archive + /chats/{id}/unread: + put: + operationId: ChatOperations_markChatUnread + description: >- + Mark chat as unread + + + Marks a chat as unread for the token owner, like "Mark as unread" in the interface. Only their own counter + changes, the other members notice nothing. + + + Without `message_id` the last message of the chat becomes unread, with `message_id` — this message and all + messages after it. A repeated request with the same message changes nothing, and in a chat without messages the + method responds with success and does nothing. + + + Works in conversations, channels, direct chats and threads the token owner belongs to. A hidden direct chat + appears in the list again. For a chat the token owner is not in, and for a message from another chat, the method + responds `404`. + parameters: + - name: id + in: path + required: true + description: Chat or thread ID + schema: + type: integer + format: int32 + example: 334 + example: 334 + responses: + '204': + description: 'There is no content to send for this request, but the headers may be useful. ' + '400': + description: The server could not understand the request due to invalid syntax. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: Access is unauthorized. + content: + application/json: + schema: + $ref: '#/components/schemas/OAuthError' + '402': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '403': + description: Access is forbidden. + content: + application/json: + schema: + anyOf: + - $ref: '#/components/schemas/ApiError' + - $ref: '#/components/schemas/OAuthError' + '404': + description: The server cannot find the requested resource. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - Chats + requestBody: + required: false + content: + application/json: + schema: + $ref: '#/components/schemas/MarkChatUnreadRequest' + example: + message_id: 1194275 + x-requirements: + scope: chats:mark_unread /company/bots: get: operationId: CompanyBotOperations_listCompanyBots @@ -2138,6 +3093,15 @@ paths: example: data: - id: 1738816 + oauth_client: + client_id: aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY + client_secret_preview: dGhpc19p...ZWNy + confidential: true + redirect_uris: + - https://example.com/oauth/callback + scopes: + - messages:read + - messages:create webhook: name: Tasks bot nickname: tasks_bot @@ -2160,6 +3124,7 @@ paths: - admin who_can_add: creator - id: 1738817 + oauth_client: null webhook: name: Release bot nickname: release_bot @@ -3023,12 +3988,13 @@ paths: List tags - All tags of the workspace with the number of employees in each. They are visible the same way to all roles, - regardless of which chats they are linked to. + All tags of the workspace with the number of employees in each, regardless of which chats they are linked to. A + multi-guest gets only the tags of active conversations and channels they are a member of. The `names` parameter looks tags up by name — this is the way to get an `id` from a name known from the - interface. It accepts no more than 100 names per request. + interface. It accepts no more than 100 names per request, and for more the method responds `400` with the + `too_long` code. Who belongs to a particular tag is returned by [List tag employees](GET /group_tags/{id}/users). @@ -3132,6 +4098,10 @@ paths: Only active employees are counted in `users_count`: suspended ones do not make it into the counter, although they remain in [List tag employees](GET /group_tags/{id}/users). + + + Only the tags that come to a multi-guest in [List tags](GET /group_tags) are available to them; for the rest the + method responds `404`. parameters: - name: id in: path @@ -3339,6 +4309,10 @@ paths: The membership of a tag is changed in an employee's profile — [Edit employee](PUT /users/{id}) with the `list_tags` field, one employee at a time. + + + For a multi-guest the method responds `403`: the list of workspace employees is closed to them, as in the + interface. parameters: - name: id in: path @@ -3451,6 +4425,10 @@ paths: with yourself — the same place where an employee sends notes to themselves. + To reply to a specific message with a quote, pass its ID in `parent_message_id`. This works in any chat, + including a thread: the reply is sent to the same chat or thread where the original message is. + + The text in the `content` field is parsed as markdown: bold, italic, strikethrough, inline code, code block, and links. Lists and tables are not parsed — `-`, `1.`, and `|` stay as they are, a quote loses its `>`, and a line with a hash and a space becomes bold. The details are in the [Text formatting](/guides/markdown) section. @@ -3568,7 +4546,7 @@ paths: The messages of a thread are returned by the `chat_id` of the thread itself, not by the chat where the parent - message hangs. The thread identifier arrives in the `thread` field of the parent message. + message hangs. This `chat_id` arrives in the `thread.chat_id` field of the parent message. parameters: - name: chat_id in: query @@ -4853,6 +5831,10 @@ paths: The method searches names, not content. To find where something was discussed or agreed, use [Search messages](GET /search/messages). + + + A query that is too heavy may not finish in time: then the method responds `504` with the `timeout` code, and + the query is worth narrowing. parameters: - name: query in: query @@ -4982,6 +5964,12 @@ paths: application/json: schema: $ref: '#/components/schemas/OAuthError' + '504': + description: Server error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' tags: - Search x-paginated: true @@ -5005,6 +5993,10 @@ paths: By default messages come from newest to oldest. `sort=relevance` switches the results to how well they match the query, where recent messages are still valued higher. + + + A query that is too heavy may not finish in time: then the method responds `504` with the `timeout` code, and + the query is worth narrowing. parameters: - name: query in: query @@ -5158,6 +6150,12 @@ paths: application/json: schema: $ref: '#/components/schemas/OAuthError' + '504': + description: Server error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' tags: - Search x-paginated: true @@ -5180,6 +6178,10 @@ paths: Deleted employees are never found; suspended ones only when a text query is given, and they stand below the rest in the results. Of the bots, only public ones are found. + + + A query that is too heavy may not finish in time: then the method responds `504` with the `timeout` code, and + the query is worth narrowing. parameters: - name: query in: query @@ -5306,6 +6308,12 @@ paths: application/json: schema: $ref: '#/components/schemas/OAuthError' + '504': + description: Server error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' tags: - Search x-paginated: true @@ -5430,8 +6438,9 @@ paths: required: false description: >- Filter by the chats the tasks are attached to. Accessible chats are the ones you are a member of, public - conversations and channels of the workspace, and threads available to you through their parent chat. The - remaining IDs are ignored without an error. Up to 100 IDs. + conversations and channels of the workspace, and threads available to you through their parent chat. For a + multi-guest, public conversations and channels are accessible only if they are a member. The remaining IDs + are ignored without an error. Up to 100 IDs. schema: type: array items: @@ -5943,8 +6952,9 @@ paths: Thread info - The thread's identifiers: its own `id`, the `chat_id` for reading and sending messages, and the message it hangs - under. For a standalone thread `message_id` and `message_chat_id` come back as `null`. + The identifiers of the thread and of the message it hangs under. The thread's `id` is used to write to it with + the [New message](POST /messages) method with `entity_type: "thread"`, and its `chat_id` to read its messages. + For a standalone thread `message_id` and `message_chat_id` come back as `null`. The response carries identifiers only: a thread has no name and no message counter, and what it is about can be @@ -6158,8 +7168,17 @@ paths: bots](GET /bots). + For a multi-guest the method returns not the whole workspace but the people they see in the interface: + themselves, members of their shared chats including bots, and public bots. Threads and archived chats do not + count as shared. + + Email and phone come back as `null` if the display of personal data is turned off in the workspace and the - caller is not an administrator. + caller is not an administrator. For a multi-guest they always come back as `null`. + + + A `query` search may not finish in time: then the method responds `504` with the `timeout` code, and the query + is worth narrowing. The profile of a single employee is returned by [Employee info](GET /users/{id}), and your own by [Own @@ -6246,6 +7265,12 @@ paths: application/json: schema: $ref: '#/components/schemas/ApiError' + '504': + description: Server error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' tags: - Users x-paginated: true @@ -6265,9 +7290,14 @@ paths: also comes here as an employee, with `bot: true`. + For a multi-guest the method returns only those who come to them in [List employees](GET /users), and responds + `404` for the rest. + + Email and phone come back as `null` if the display of personal data is turned off in the workspace and the - caller is not an administrator. An employee sees their own profile in full — the same one is returned by the - [Own profile](GET /profile) method, and without the `users:read` scope. + caller is not an administrator. For a multi-guest they always come back as `null`. An employee sees their own + profile in full — the same one is returned by the [Own profile](GET /profile) method, and without the + `users:read` scope. parameters: - name: id in: path @@ -6344,6 +7374,11 @@ paths: An unknown role value is silently ignored by the method: the response is successful and the role stays as it was. + + + A bot's nickname must end with `_bot` and be unique in the workspace, otherwise the method responds `422` with + an error on the `nickname` field: `invalid` or `already_exists`. A bot's existing nickname is checked only when + it is changed. parameters: - name: id in: path @@ -6635,6 +7670,10 @@ paths: The status of another employee: the emoji, the title, the expiry, and away mode. + For a multi-guest the method returns statuses only of those who come to them in [List employees](GET /users), + and responds `404` for the rest. + + If no status is set, the method returns `200` and `null` in the response body — with no wrapper object. A status whose `expires_at` has passed may still be returned for a short time until it is cleared, so check `expires_at` on the client side. @@ -7249,7 +8288,7 @@ components: items: $ref: '#/components/schemas/ApiErrorItem' description: Array of errors - description: API error (used for 400, 402, 403, 404, 409, 410, 422) + description: API error (used for 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) x-error: true ApiErrorItem: type: object @@ -7303,13 +8342,24 @@ components: format: int32 nullable: true description: ID of the user who performed the action. `null` if the action was performed without an initiator. - description: 'For: bot_deleted, bot_token_recreated' + description: 'For: bot_deleted, bot_token_recreated, bot_token_created, bot_token_updated, bot_token_reissued' AuditDetailsBotOAuthClient: type: object required: + - bot_id + - actor_id - client_id - changes properties: + bot_id: + type: integer + format: int32 + description: Bot ID + actor_id: + type: integer + format: int32 + nullable: true + description: ID of the user who performed the action. `null` if the action was performed without an initiator. client_id: type: string description: Bot OAuth client ID @@ -7320,12 +8370,73 @@ components: Changed client settings. The key is the setting name (confidential, redirect_uris, scopes), the value is an object with previous and new fields. description: 'For: bot_oauth_client_updated' + AuditDetailsBotOAuthClientDisabled: + type: object + required: + - bot_id + - actor_id + - client_id + - deleted_access_tokens_count + - deleted_access_grants_count + properties: + bot_id: + type: integer + format: int32 + description: Bot ID + actor_id: + type: integer + format: int32 + nullable: true + description: ID of the user who performed the action. `null` if the action was performed without an initiator. + client_id: + type: string + description: Bot OAuth client ID + deleted_access_tokens_count: + type: integer + format: int32 + description: Number of employee tokens revoked + deleted_access_grants_count: + type: integer + format: int32 + description: Number of unused authorization codes revoked + description: 'For: bot_oauth_client_disabled' + AuditDetailsBotOAuthClientSecretRotated: + type: object + required: + - bot_id + - actor_id + - client_id + properties: + bot_id: + type: integer + format: int32 + description: Bot ID + actor_id: + type: integer + format: int32 + nullable: true + description: ID of the user who performed the action. `null` if the action was performed without an initiator. + client_id: + type: string + description: Bot OAuth client ID + description: 'For: bot_oauth_client_secret_rotated' AuditDetailsBotScopes: type: object required: + - bot_id + - actor_id - added_scopes - removed_scopes properties: + bot_id: + type: integer + format: int32 + description: Bot ID + actor_id: + type: integer + format: int32 + nullable: true + description: ID of the user who performed the action. `null` if the action was performed without an initiator. added_scopes: type: array items: @@ -7340,8 +8451,19 @@ components: AuditDetailsBotWebhookSettings: type: object required: + - bot_id + - actor_id - changes properties: + bot_id: + type: integer + format: int32 + description: Bot ID + actor_id: + type: integer + format: int32 + nullable: true + description: ID of the user who performed the action. `null` if the action was performed without an initiator. changes: type: object additionalProperties: {} @@ -7786,6 +8908,8 @@ components: - $ref: '#/components/schemas/AuditDetailsVideoCallStarted' - $ref: '#/components/schemas/AuditDetailsVideoCallFinished' - $ref: '#/components/schemas/AuditDetailsVideoCallRecording' + - $ref: '#/components/schemas/AuditDetailsBotOAuthClientSecretRotated' + - $ref: '#/components/schemas/AuditDetailsBotOAuthClientDisabled' description: Additional audit event details. Structure depends on the event_key value. AuditEventKey: type: string @@ -7833,6 +8957,11 @@ components: - bot_token_recreated - bot_deleted - bot_oauth_client_updated + - bot_oauth_client_disabled + - bot_oauth_client_secret_rotated + - bot_token_created + - bot_token_updated + - bot_token_reissued - oauth_authorization_granted - oauth_authorization_revoked - oauth_device_authorization_approved @@ -7886,6 +9015,11 @@ components: bot_token_recreated: Bot token recreated (rotation) bot_deleted: Bot deleted bot_oauth_client_updated: Bot OAuth client settings changed + bot_oauth_client_disabled: Authorization on behalf of an employee disabled for the bot + bot_oauth_client_secret_rotated: Bot OAuth client secret rotated + bot_token_created: Bot token issued + bot_token_updated: Bot token name or scopes changed + bot_token_reissued: Additional bot token reissued oauth_authorization_granted: User granted an OAuth client access to their data oauth_authorization_revoked: An OAuth client's access to user data was revoked oauth_device_authorization_approved: Employee confirmed an app sign-in from a device @@ -7901,9 +9035,84 @@ components: properties: image_url: type: string - description: Avatar URL - example: https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg - description: Avatar data + description: Avatar URL + example: https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg + description: Avatar data + BotAccessToken: + type: object + required: + - id + - token + - name + - user_id + - scopes + - created_at + - revoked_at + - expires_in + - last_used_at + - authorized_at + properties: + id: + type: integer + format: int64 + description: Token ID + example: 4827 + token: + type: string + description: >- + Masked token (the first 8 and the last 4 characters are visible). The full value is returned once: when the + token is issued and when it is reissued. + example: cH5kR9mN...x7Qp + name: + type: string + nullable: true + description: Token name. `null` for a token issued without a name. + example: Notification server + user_id: + type: integer + format: int64 + description: ID of the bot the token belongs to + example: 1738816 + scopes: + type: array + items: + type: string + description: Token scopes + example: + - messages:create + - chats:read + created_at: + type: string + format: date-time + description: Token issue date and time (ISO-8601, UTC+0) in YYYY-MM-DDThh:mm:ss.sssZ format + example: '2025-01-15T10:30:00.000Z' + revoked_at: + type: string + format: date-time + nullable: true + description: 'Token revocation date. Always `null`: revoked tokens are not returned.' + example: null + expires_in: + type: integer + format: int32 + nullable: true + description: 'Token lifetime in seconds. `null` for bot tokens: they do not expire.' + example: null + last_used_at: + type: string + format: date-time + nullable: true + description: >- + Token last used date. `null` until the token has been used at least once. Updated at most once per hour, so + it may lag behind. + example: '2025-02-24T14:20:00.000Z' + authorized_at: + type: string + format: date-time + nullable: true + description: Authorization date. `null` for bot tokens. + example: null + description: Bot token BotCanEdit: type: string enum: @@ -7918,6 +9127,13 @@ components: required: - webhook properties: + empty: + type: boolean + description: >- + Create an empty bot: without a token and without an incoming webhook. Without this field the bot is created + with an incoming webhook in its own format, and its token comes in `access_token`. + example: false + default: false webhook: type: object properties: @@ -8016,33 +9232,132 @@ components: type: boolean description: >- Restricts the bot to a single group chat. `true` — the bot can be added to one discussion or channel - only, `false` — to multiple. Personal chats and threads don't count toward this limit. Set only on - creation and not changed on update. + only, `false` — to multiple. Personal chats and threads don't count toward this limit. example: false default: false + kind: + allOf: + - $ref: '#/components/schemas/BotWebhookKind' + description: >- + Incoming webhook source. Without `empty` it defaults to `simple`, and an empty bot gets an incoming + webhook only through this field. + example: simple + unfurl_domains: + type: array + items: + type: string + description: Domains whose links the bot unfurls, up to 5. They work together with the `message_link_shared` event. + example: + - example.com required: - name description: Webhook parameters object of the bot to create + oauth_client: + allOf: + - $ref: '#/components/schemas/BotOAuthClientRequest' + description: Enable authorization on behalf of an employee right at creation + promo: + allOf: + - $ref: '#/components/schemas/BotPromoRequest' + description: 'The bot''s catalog page. Set only together with `oauth_client`: without authorization the bot has no page.' description: Bot creation request BotCreateResponse: type: object required: - id + - name + - nickname + - avatar_url + - creator_id + - created_at + - authorized_users_count + - last_used_at - webhook - - access_token + - oauth_client_enabled + - oauth_client + - promo + - permissions properties: id: type: integer format: int32 description: Bot ID (same as the bot's `user_id`) example: 1738816 + name: + type: string + description: Bot name + example: Tasks bot + nickname: + type: string + description: Bot nickname + example: tasks_bot + avatar_url: + type: string + nullable: true + description: Bot avatar URL. `null` if no avatar is set. + example: https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg + creator_id: + type: integer + format: int32 + nullable: true + description: ID of the employee who created the bot. `null` if the creator is not recorded. + example: 12 + created_at: + type: string + format: date-time + description: Bot creation date and time (ISO-8601, UTC+0) in YYYY-MM-DDThh:mm:ss.sssZ format + example: '2025-05-15T14:30:00.000Z' + authorized_users_count: + type: integer + format: int32 + description: How many employees have authorized the bot + example: 3 + last_used_at: + type: string + format: date-time + nullable: true + description: >- + Date and time the bot last worked (ISO-8601, UTC+0) in YYYY-MM-DDThh:mm:ss.sssZ format: a request to the + incoming webhook or an API call with any of the bot's tokens, including employee tokens. `null` if there has + been none. Token use is recorded at most once an hour. + example: '2025-05-15T14:30:00.000Z' webhook: allOf: - $ref: '#/components/schemas/BotWebhook' description: Webhook parameters object + oauth_client_enabled: + type: boolean + description: Whether authorization on behalf of an employee is enabled for the bot + example: true + oauth_client: + type: object + allOf: + - $ref: '#/components/schemas/BotOAuthClient' + nullable: true + description: >- + Authorization on behalf of an employee. It can come even for a bot with authorization disabled, so check + `oauth_client_enabled` to see whether it is enabled. A bot without tokens may get `null`. + promo: + type: object + allOf: + - $ref: '#/components/schemas/BotPromo' + nullable: true + description: The bot's catalog page. `null` if authorization is disabled for the bot. + permissions: + allOf: + - $ref: '#/components/schemas/BotPermissions' + description: What you can do with this bot + client_secret: + type: string + description: >- + Client secret. Returned once: when a server-side client is enabled, when the client switches to server-side, + and when the secret is rotated. + example: dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA access_token: type: string - description: Bot access token. Returned when the bot is created and when the token is rotated. + description: >- + Bot access token. Returned when the bot is created and when the token is rotated. Not returned if the bot is + created with `empty: true`. example: bm90X2FfcmVhbF90b2tlbg description: Created bot parameters BotEventName: @@ -8086,10 +9401,345 @@ components: video_call_started: Video call started video_call_finished: Video call finished video_call_recording_ready: Video call recording ready + BotOAuthClient: + type: object + required: + - client_id + - client_secret_preview + - confidential + - redirect_uris + - scopes + properties: + client_id: + type: string + description: Client ID for the authorization link + example: aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY + client_secret_preview: + type: string + description: >- + Masked client secret. The full value comes in `client_secret` once: when a server-side client is enabled and + when the secret is rotated. + example: cH5kR9mN...x7Qp + confidential: + type: boolean + description: >- + Where the secret is stored: `true` — a server-side application, `false` — an application without a secret + that exchanges the code with PKCE + example: true + redirect_uris: + type: array + items: + type: string + description: Redirect URIs after consent + example: + - https://example.com/oauth/callback + scopes: + type: array + items: + type: string + description: Scopes the bot requests from an employee on the consent screen + example: + - messages:read + - messages:create + description: Authorization on behalf of an employee + BotOAuthClientRequest: + type: object + properties: + confidential: + type: boolean + description: >- + Where the secret is stored: `true` — a server-side application stores `client_secret` and exchanges the code + on its side, `false` — an application without a secret (browser, mobile, CLI) exchanges the code with PKCE. + If omitted, the value does not change, and a new client gets `true`. + example: true + redirect_uris: + type: array + items: + type: string + description: >- + Redirect URIs after consent. HTTPS is required, except for addresses on the same computer (`localhost`, + `127.0.0.1`). The address in the authorization link must exactly match one from the list, except that the + port is not compared for `localhost` and `127.0.0.1`. Pass at least one address when enabling. The list is + replaced as a whole. + example: + - https://example.com/oauth/callback + scopes: + type: array + items: + type: string + description: >- + Scopes the bot requests from an employee on the consent screen. Only scopes that can be granted to the bot + itself are available. If omitted when enabling, all bot scopes are requested. The list is replaced as a + whole. + example: + - messages:read + - messages:create + description: Settings of authorization on behalf of an employee + BotPermissions: + type: object + required: + - update_oauth_client + - recreate_token + - destroy + properties: + update_oauth_client: + type: boolean + description: Change authorization on behalf of an employee, the catalog page and the bot name + example: true + recreate_token: + type: boolean + description: Issue, change and delete the bot's tokens and rotate the client secret + example: true + destroy: + type: boolean + description: Delete the bot + example: true + description: What the current user can do with the bot + BotPromo: + type: object + required: + - description + - published + - promo_images + properties: + description: + type: string + nullable: true + description: Bot description. `null` if not set. + example: Collects a summary of Jira tasks and sends it to the chat + published: + type: boolean + description: Whether the bot is published in the catalog + example: true + promo_images: + type: array + items: + $ref: '#/components/schemas/BotPromoImage' + description: Screenshots for the bot's page + description: The bot's catalog page + BotPromoImage: + type: object + required: + - key + - url + properties: + key: + type: string + description: Image key + example: attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png + url: + type: string + description: Image URL + example: >- + https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png + description: Screenshot for the bot's catalog page + BotPromoRequest: + type: object + properties: + description: + type: string + description: 'Description: what the bot does and why to connect it. A bot cannot be published without a description.' + example: Collects a summary of Jira tasks and sends it to the chat + published: + type: boolean + description: >- + Publish the bot to the catalog: it appears as a card on the "Overview" tab. Publishing requires a + description. + example: true + promo_images: + type: array + items: + type: string + description: >- + Screenshots for the bot's page, up to 5: keys of uploaded images (`key` from [Get signature, key and other + parameters](POST /uploads)). The list is replaced as a whole, the order is kept. + example: + - attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png + description: The bot's catalog page BotResponse: type: object required: - id + - name + - nickname + - avatar_url + - creator_id + - created_at + - authorized_users_count + - last_used_at + - webhook + - oauth_client_enabled + - oauth_client + - promo + - permissions + properties: + id: + type: integer + format: int32 + description: Bot ID + example: 1738816 + name: + type: string + description: Bot name + example: Tasks bot + nickname: + type: string + description: Bot nickname + example: tasks_bot + avatar_url: + type: string + nullable: true + description: Bot avatar URL. `null` if no avatar is set. + example: https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg + creator_id: + type: integer + format: int32 + nullable: true + description: ID of the employee who created the bot. `null` if the creator is not recorded. + example: 12 + created_at: + type: string + format: date-time + description: Bot creation date and time (ISO-8601, UTC+0) in YYYY-MM-DDThh:mm:ss.sssZ format + example: '2025-05-15T14:30:00.000Z' + authorized_users_count: + type: integer + format: int32 + description: How many employees have authorized the bot + example: 3 + last_used_at: + type: string + format: date-time + nullable: true + description: >- + Date and time the bot last worked (ISO-8601, UTC+0) in YYYY-MM-DDThh:mm:ss.sssZ format: a request to the + incoming webhook or an API call with any of the bot's tokens, including employee tokens. `null` if there has + been none. Token use is recorded at most once an hour. + example: '2025-05-15T14:30:00.000Z' + webhook: + allOf: + - $ref: '#/components/schemas/BotWebhook' + description: Webhook parameters object + oauth_client_enabled: + type: boolean + description: Whether authorization on behalf of an employee is enabled for the bot + example: true + oauth_client: + type: object + allOf: + - $ref: '#/components/schemas/BotOAuthClient' + nullable: true + description: >- + Authorization on behalf of an employee. It can come even for a bot with authorization disabled, so check + `oauth_client_enabled` to see whether it is enabled. A bot without tokens may get `null`. + promo: + type: object + allOf: + - $ref: '#/components/schemas/BotPromo' + nullable: true + description: The bot's catalog page. `null` if authorization is disabled for the bot. + permissions: + allOf: + - $ref: '#/components/schemas/BotPermissions' + description: What you can do with this bot + client_secret: + type: string + description: >- + Client secret. Returned once: when a server-side client is enabled, when the client switches to server-side, + and when the secret is rotated. + example: dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA + description: Bot parameters + BotScopeCatalog: + type: object + required: + - scopes + - groups + - presets + properties: + scopes: + type: array + items: + $ref: '#/components/schemas/BotScopeCatalogItem' + description: Scopes available to the bot + groups: + type: array + items: + $ref: '#/components/schemas/BotScopeCatalogGroup' + description: Scope categories + presets: + type: array + items: + $ref: '#/components/schemas/BotScopeCatalogPreset' + description: Ready-made scope sets + description: Catalog of scopes that can be granted to the bot + BotScopeCatalogGroup: + type: object + required: + - id + - title + - description + properties: + id: + type: string + description: Category ID + example: messages + title: + type: string + description: Category name + example: Messages + description: + type: string + description: Category description + example: Working with messages + description: Scope category + BotScopeCatalogItem: + type: object + required: + - id + - title + - group + - preset + properties: + id: + type: string + description: Scope + example: messages:create + title: + type: string + description: Scope description + example: Send messages + group: + type: string + description: Scope category, `id` from `groups` + example: messages + preset: + type: array + items: + type: string + description: Sets that include the scope, `id` from `presets` + example: + - admin + description: Scope in the bot scope catalog + BotScopeCatalogPreset: + type: object + required: + - id + - title + properties: + id: + type: string + description: 'Set ID: `read-only` or `admin`' + example: read-only + title: + type: string + description: Set name + example: Read only + description: Ready-made scope set + BotSelfResponse: + type: object + required: + - id + - oauth_client - webhook properties: id: @@ -8097,11 +9747,160 @@ components: format: int32 description: Bot ID example: 1738816 + oauth_client: + type: object + allOf: + - $ref: '#/components/schemas/BotOAuthClient' + nullable: true + description: >- + Authorization on behalf of an employee. It can come even for a bot with authorization disabled. A bot + without tokens may get `null`. webhook: allOf: - - $ref: '#/components/schemas/BotWebhook' + - $ref: '#/components/schemas/BotSelfWebhook' description: Webhook parameters object - description: Bot parameters + description: Bot parameters in the responses of the bot's own methods + BotSelfTokenResponse: + type: object + required: + - id + - oauth_client + - webhook + - access_token + properties: + id: + type: integer + format: int32 + description: Bot ID + example: 1738816 + oauth_client: + type: object + allOf: + - $ref: '#/components/schemas/BotOAuthClient' + nullable: true + description: >- + Authorization on behalf of an employee. It can come even for a bot with authorization disabled. A bot + without tokens may get `null`. + webhook: + allOf: + - $ref: '#/components/schemas/BotSelfWebhook' + description: Webhook parameters object + access_token: + type: string + description: New bot token. Returned once. + example: bm90X2FfcmVhbF90b2tlbg + description: Bot parameters with a new token + BotSelfWebhook: + type: object + required: + - name + - nickname + - outgoing_url + - events + - trigger_on + - commands + - scopes + - template + - template_engine + - challenge_key + - link_preview_enabled + - ignore_self_messages + - events_history_enabled + - single_chat + - can_edit + - who_can_add + properties: + name: + type: string + maxLength: 255 + description: Bot name + example: Tasks bot + nickname: + type: string + maxLength: 255 + description: Bot nickname + example: tasks_bot + outgoing_url: + type: string + nullable: true + description: Outgoing webhook URL + example: https://www.website.com/tasks/new + events: + type: array + items: + $ref: '#/components/schemas/BotEventName' + description: Events the bot is subscribed to + example: + - message_new + trigger_on: + allOf: + - $ref: '#/components/schemas/BotTriggerOn' + description: Outgoing webhook trigger condition + example: commands + commands: + type: array + items: + type: string + description: Bot commands (trigger words) + example: + - /task + scopes: + type: array + items: + type: string + description: >- + Bot token scopes (permissions). The default set is broader than what can be assigned explicitly, so values + that cannot be set explicitly may appear here. + example: + - messages:create + template: + type: string + nullable: true + description: Template for formatting the incoming webhook. `null` if not set. + example: Order from {{ client }} for {{ amount }} ₽ + template_engine: + allOf: + - $ref: '#/components/schemas/BotTemplateEngine' + description: Template engine used to process the incoming webhook template + example: liquid + challenge_key: + type: string + nullable: true + description: Verification field name for incoming webhook verification. `null` if not set. + example: challenge + link_preview_enabled: + type: boolean + description: Show link previews in incoming webhook messages + example: true + ignore_self_messages: + type: boolean + description: Ignore incoming messages sent by the bot itself + example: false + events_history_enabled: + type: boolean + description: Save the bot's event history for later retrieval via the event history method + example: false + single_chat: + type: boolean + description: >- + Restricts the bot to a single group chat. `true` — the bot can be added to one discussion or channel only, + `false` — to multiple. Personal chats and threads don't count toward this limit + example: false + can_edit: + type: array + items: + $ref: '#/components/schemas/BotCanEdit' + description: >- + Roles allowed to edit the bot settings in addition to the creator. The creator can always edit. An empty + array means only the creator can edit. + example: + - admin + who_can_add: + allOf: + - $ref: '#/components/schemas/BotWhoCanAdd' + description: Who can add the bot to chats + example: creator + description: Bot webhook parameters in the responses of the bot's own methods BotTemplateEngine: type: string enum: @@ -8111,6 +9910,46 @@ components: x-enum-descriptions: liquid: Liquid — conditions, loops, and filters mustache: Mustache — simple substitution without logic + BotTokenCreateRequest: + type: object + required: + - name + properties: + name: + type: string + maxLength: 255 + description: 'Token name: tokens are told apart by it in the list' + example: Notification server + scopes: + type: array + items: + type: string + description: >- + Token scopes. Only scopes that can be granted to a bot are available. If omitted, the token is issued + without scopes. + example: + - messages:create + - chats:read + description: Bot token issue request + BotTokenUpdateRequest: + type: object + properties: + name: + type: string + maxLength: 255 + description: New token name + example: Notification server + scopes: + type: array + items: + type: string + description: >- + New token scopes. The list is replaced as a whole and takes effect immediately, there is no need to reissue + the token. + example: + - messages:create + - chats:read + description: Bot token update request BotTriggerOn: type: string enum: @@ -8124,8 +9963,6 @@ components: unfurl: On link unfurling (link previews) BotUpdateRequest: type: object - required: - - webhook properties: webhook: type: object @@ -8221,7 +10058,37 @@ components: array means only the creator can edit. example: - admin + single_chat: + type: boolean + description: >- + Restricts the bot to a single group chat. `true` — the bot can be added to one discussion or channel + only, `false` — to multiple. Personal chats and threads don't count toward this limit + example: false + kind: + allOf: + - $ref: '#/components/schemas/BotWebhookKind' + description: Incoming webhook source. If the bot had no incoming webhook, it is enabled. + example: simple + unfurl_domains: + type: array + items: + type: string + description: Domains whose links the bot unfurls, up to 5. They work together with the `message_link_shared` event. + example: + - example.com description: Webhook parameters object of the bot to update + oauth_client: + type: object + allOf: + - $ref: '#/components/schemas/BotOAuthClientRequest' + nullable: true + description: >- + Settings of authorization on behalf of an employee. If authorization is disabled, the object enables it, and + `null` disables it: authorizations granted by employees are revoked and the catalog page is deleted. + promo: + allOf: + - $ref: '#/components/schemas/BotPromoRequest' + description: The bot's catalog page. Available only while authorization is enabled for the bot. description: Bot update request BotWebhook: type: object @@ -8242,6 +10109,9 @@ components: - single_chat - can_edit - who_can_add + - kind + - unfurl_domains + - last_request_at properties: name: type: string @@ -8333,7 +10203,39 @@ components: - $ref: '#/components/schemas/BotWhoCanAdd' description: Who can add the bot to chats example: creator + kind: + allOf: + - $ref: '#/components/schemas/BotWebhookKind' + nullable: true + description: Incoming webhook source. `null` if the bot's incoming webhook is disabled. + example: simple + unfurl_domains: + type: array + items: + type: string + description: Domains whose links the bot unfurls + example: + - example.com + last_request_at: + type: string + format: date-time + nullable: true + description: >- + Date and time of the last request to the bot's incoming webhook (ISO-8601, UTC+0) in + YYYY-MM-DDThh:mm:ss.sssZ format. `null` if there have been no requests. + example: '2025-05-15T14:30:00.000Z' description: Bot webhook parameters + BotWebhookKind: + type: string + enum: + - simple + - gitlab + - grafana + description: Incoming webhook source of the bot + x-enum-descriptions: + simple: 'Custom format: the message is built from the request body with the bot''s template' + gitlab: 'GitLab: Pachca parses the request and builds the message itself' + grafana: 'Grafana: Pachca parses the request and builds the message itself' BotWebhookSelfUpdateRequest: type: object required: @@ -8362,7 +10264,7 @@ components: creator: Only the bot creator creator_admin: The creator and company administrators creator_admin_user: The creator, administrators, and company members - anyone: Anyone, including guests + anyone: 'Public bot: any employee except guests and multi-guests can add it' Button: type: object required: @@ -8707,6 +10609,7 @@ components: type: object required: - id + - oauth_client - webhook properties: id: @@ -8714,6 +10617,14 @@ components: format: int32 description: Bot ID example: 1738816 + oauth_client: + type: object + allOf: + - $ref: '#/components/schemas/BotOAuthClient' + nullable: true + description: >- + Authorization on behalf of an employee. `null` for a bot you cannot edit. It can also come for a bot with + authorization disabled, and a bot without tokens may get `null`. webhook: allOf: - $ref: '#/components/schemas/CompanyBotWebhook' @@ -9131,7 +11042,9 @@ components: duration_ms: type: integer format: int32 - description: Duration in milliseconds. Required for a voice message (`file_type` is `voice`). + description: >- + Duration in milliseconds. Required for a voice message (`file_type` is `voice`). A voice message longer than + 30 minutes (1,800,000 ms) is rejected with `422`. example: 5400 waveform: type: string @@ -9661,6 +11574,9 @@ components: - message_id - links - user_id + - entity_type + - entity_id + - thread - created_at - webhook_timestamp properties: @@ -9700,6 +11616,25 @@ components: format: int32 description: Message sender ID example: 2345 + entity_type: + allOf: + - $ref: '#/components/schemas/MessageEntityType' + description: Type of the entity the message with the link belongs to + example: discussion + entity_id: + type: integer + format: int32 + nullable: true + description: >- + Entity ID: the conversation or channel, or the thread. `null` in a direct chat: the bot does not take part + in it, and the other participant is not disclosed to it. + example: 23438 + thread: + type: object + allOf: + - $ref: '#/components/schemas/WebhookMessageThread' + nullable: true + description: Thread the message with the link was sent in. `null` if the message was not sent in a thread. created_at: type: string format: date-time @@ -9711,6 +11646,18 @@ components: description: Webhook send date and time (UTC+0) in UNIX format example: 1726685594 description: Outgoing webhook payload for link unfurling + MarkChatUnreadRequest: + type: object + properties: + message_id: + type: integer + format: int32 + minimum: 1 + description: >- + ID of the message from which the chat becomes unread: this message and all messages after it. If omitted, + the last message becomes unread. + example: 1194275 + description: Request to mark a chat as unread MemberEventType: type: string enum: @@ -9811,12 +11758,16 @@ components: id: type: integer format: int64 - description: Thread ID + description: >- + Thread ID. To write to the thread, pass it in `entity_id` of the [New message](POST /messages) method + with `entity_type: "thread"`. example: 265142 chat_id: type: integer format: int64 - description: Thread chat ID + description: >- + Thread chat ID. It is used to read the thread's messages with the [List chat messages](GET /messages) + method. example: 2637266155 required: - id @@ -9891,7 +11842,9 @@ components: example: 334 content: type: string - description: 'Message text. Supports mentions: `@nickname` or `<@user_id>` (automatically converted to `@nickname`).' + description: >- + Message text. Supports mentions: `@nickname` or `<@user_id>` (automatically converted to `@nickname`). + For a multi-guest, `<@user_id>` of an employee not accessible to them stays in the text as is. example: Yesterday we sold 756 t-shirts (10% more than last Sunday) files: type: array @@ -9936,7 +11889,7 @@ components: minimum: 1 description: >- Duration in milliseconds. Required for voice messages (`file_type` is `voice`), not used for other - types. + types. A voice message longer than 30 minutes (1,800,000 ms) is rejected with `422`. example: 5400 waveform: type: string @@ -9970,8 +11923,10 @@ components: type: integer format: int32 description: >- - ID of the message you are replying to. The reply appears right in the chat feed rather than in a thread: - to write into a thread, send the message with `entity_type: "thread"`. + ID of the message you are replying to with a quote. You can reply to a message in any chat, including a + thread: send the reply to the same chat or thread where that message is, otherwise the request returns a + `422` error. To write into the thread under a message, set `entity_type: "thread"` and the thread ID in + `entity_id`. example: 194270 display_avatar_url: type: string @@ -10035,7 +11990,9 @@ components: properties: content: type: string - description: 'Message text. Supports mentions: `@nickname` or `<@user_id>` (automatically converted to `@nickname`).' + description: >- + Message text. Supports mentions: `@nickname` or `<@user_id>` (automatically converted to `@nickname`). + For a multi-guest, `<@user_id>` of an employee not accessible to them stays in the text as is. example: >- Try to spell these correctly on the first attempt: bureaucracy, accommodate, definitely, entrepreneur, liaison, necessary, surveillance, questionnaire. @@ -10083,7 +12040,7 @@ components: minimum: 1 description: >- Duration in milliseconds. Required for voice messages (`file_type` is `voice`), not used for other - types. + types. A voice message longer than 30 minutes (1,800,000 ms) is rejected with `422`. example: 5400 waveform: type: string @@ -10236,6 +12193,7 @@ components: - chats:read - chats:create - chats:update + - chats:mark_unread - chats:archive - chats:leave - chat_members:read @@ -10296,6 +12254,7 @@ components: - owner - admin - user + - multi_guest - bot chats_create: - owner @@ -10306,11 +12265,19 @@ components: - owner - admin - user + - multi_guest + - bot + chats_mark_unread: + - owner + - admin + - user + - multi_guest - bot chats_archive: - owner - admin - user + - multi_guest - bot chats_leave: - owner @@ -10321,11 +12288,13 @@ components: - owner - admin - user + - multi_guest - bot chat_members_write: - owner - admin - user + - multi_guest - bot chat_exports_read: - owner @@ -10335,46 +12304,55 @@ components: - owner - admin - user + - multi_guest - bot messages_create: - owner - admin - user + - multi_guest - bot messages_update: - owner - admin - user + - multi_guest - bot messages_delete: - owner - admin - user + - multi_guest - bot reactions_read: - owner - admin - user + - multi_guest - bot reactions_write: - owner - admin - user + - multi_guest - bot pins_write: - owner - admin - user + - multi_guest - bot threads_read: - owner - admin - user + - multi_guest - bot threads_create: - owner - admin - user + - multi_guest - bot link_previews_write: - owner @@ -10385,11 +12363,13 @@ components: - owner - admin - user + - multi_guest - bot users_read: - owner - admin - user + - multi_guest - bot users_create: - owner @@ -10404,6 +12384,7 @@ components: - owner - admin - user + - multi_guest - bot group_tags_write: - owner @@ -10424,26 +12405,31 @@ components: - owner - admin - user + - multi_guest - bot profile_status_read: - owner - admin - user + - multi_guest - bot profile_status_write: - owner - admin - user + - multi_guest - bot profile_avatar_write: - owner - admin - user + - multi_guest - bot user_status_read: - owner - admin - user + - multi_guest - bot user_status_write: - owner @@ -10455,6 +12441,7 @@ components: - owner - admin - user + - multi_guest - bot audit_events_read: - owner @@ -10466,26 +12453,31 @@ components: - owner - admin - user + - multi_guest - bot tasks_create: - owner - admin - user + - multi_guest - bot tasks_update: - owner - admin - user + - multi_guest - bot tasks_delete: - owner - admin - user + - multi_guest - bot files_read: - owner - admin - user + - multi_guest - bot files_write: - owner @@ -10496,6 +12488,7 @@ components: - owner - admin - user + - multi_guest - bot webhooks_read: - owner @@ -10521,29 +12514,35 @@ components: - owner - admin - user + - multi_guest - bot search_chats: - owner - admin - user + - multi_guest - bot search_messages: - owner - admin - user + - multi_guest - bot drafts_read: - owner - admin - user + - multi_guest drafts_write: - owner - admin - user + - multi_guest x-enum-descriptions: chats_read: View chats and chat list chats_create: Create new chats chats_update: Update chat settings + chats_mark_unread: Mark chats as unread chats_archive: Archive and unarchive chats chats_leave: Leave chats chat_members_read: View chat members @@ -11201,14 +13200,16 @@ components: id: type: integer format: int64 - description: Created thread ID (the thread is written to with the [New message](POST /messages) method) + description: >- + Thread ID. To write to the thread, pass it in `entity_id` of the [New message](POST /messages) method with + `entity_type: "thread"`. example: 265142 chat_id: type: integer format: int64 description: >- - Thread chat ID (it is used to write to the thread with the [New message](POST /messages) method and to read - it with the [List chat messages](GET /messages) method) + Thread chat ID. It is used to read the thread's messages with the [List chat messages](GET /messages) method + and to manage its members. example: 2637266155 message_id: type: integer @@ -11344,7 +13345,7 @@ components: description: >- Email. In someone else's card it comes as `null` if the caller has no right to see personal data: the workspace owner and an administrator always have it, an employee and a bot only when showing personal data - is enabled in the workspace, and a guest never. In your own card the field always comes. + is enabled in the workspace, and a guest or a multi-guest never. In your own card the field always comes. example: olegp@example.com phone_number: type: string @@ -11353,7 +13354,7 @@ components: description: >- Phone number. In someone else's card it comes as `null` if the caller has no right to see personal data: the workspace owner and an administrator always have it, an employee and a bot only when showing personal data - is enabled in the workspace, and a guest never. In your own card the field always comes. + is enabled in the workspace, and a guest or a multi-guest never. In your own card the field always comes. example: '+79001234567' department: type: string @@ -11392,7 +13393,7 @@ components: type: array items: type: string - description: Array of tags assigned to the employee + description: Array of tags assigned to the employee. For a multi-guest it comes empty in someone else's card. example: - Product - Design @@ -11498,7 +13499,9 @@ components: type: array items: type: string - description: Array of tags to assign to the employee + description: >- + Array of tag names to assign to the employee. A value that is not an array of non-empty strings is + ignored. example: - Product - Design @@ -11700,7 +13703,10 @@ components: type: array items: type: string - description: Array of tags to assign to the employee + description: >- + Array of tag names to assign to the employee. The list replaces the previous one as a whole, an empty + one removes all tags. A value that is not an array of non-empty strings is ignored: the employee's tags + do not change. example: - Product - Design @@ -11763,6 +13769,8 @@ components: - draft_type_change_forbidden - confidential_download_denied - decryption_failed + - bot_add_denied + - timeout - forbidden - permission_denied - access_denied @@ -11832,6 +13840,8 @@ components: draft_type_change_forbidden: A scheduled message cannot be turned back into a draft confidential_download_denied: 'Downloading the file is denied: the request has to come from the secure perimeter' decryption_failed: The file could not be decrypted + bot_add_denied: 'The bot''s "Who can add the bot to chats" setting does not let you add it: the IDs of such bots come in `value`' + timeout: 'Search did not finish in time: narrow the query and retry' VideoCallEventType: type: string enum: @@ -11990,7 +14000,7 @@ components: items: $ref: '#/components/schemas/ViewBlockCheckboxOption' minItems: 1 - maxItems: 10 + maxItems: 20 description: Array of checkboxes required: type: boolean @@ -12297,7 +14307,7 @@ components: items: $ref: '#/components/schemas/ViewBlockSelectableOption' minItems: 1 - maxItems: 10 + maxItems: 20 description: Array of radio buttons required: type: boolean diff --git a/packages/spec/openapi.yaml b/packages/spec/openapi.yaml index 91494d036..f18a22bdd 100644 --- a/packages/spec/openapi.yaml +++ b/packages/spec/openapi.yaml @@ -182,7 +182,7 @@ paths: Метод позволяет боту сгенерировать себе новый `access_token` своим же токеном — без участия администратора и без знания собственного `id`. - Ротируется тот самый токен, которым сделан запрос, и он инвалидируется сразу. + Перевыпускается основной токен бота — тот, что без имени, а если такого нет, самый старый, и он инвалидируется сразу. Если бот ходит отдельным токеном, этот токен остаётся прежним. Новый токен возвращается в ответе один раз — обязательно сохраните его, иначе бот потеряет доступ к API. Скоупы переносятся с прежнего токена. parameters: [] @@ -197,11 +197,20 @@ paths: - data properties: data: - $ref: '#/components/schemas/BotCreateResponse' + $ref: '#/components/schemas/BotSelfTokenResponse' description: Обертка ответа с данными example: data: id: 1738816 + oauth_client: + client_id: aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY + client_secret_preview: dGhpc19p...ZWNy + confidential: true + redirect_uris: + - https://example.com/oauth/callback + scopes: + - messages:read + - messages:create webhook: name: Бот задач nickname: tasks_bot @@ -271,11 +280,20 @@ paths: - data properties: data: - $ref: '#/components/schemas/BotResponse' + $ref: '#/components/schemas/BotSelfResponse' description: Обертка ответа с данными example: data: id: 1738816 + oauth_client: + client_id: aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY + client_secret_preview: dGhpc19p...ZWNy + confidential: true + redirect_uris: + - https://example.com/oauth/callback + scopes: + - messages:read + - messages:create webhook: name: Бот задач nickname: tasks_bot @@ -348,7 +366,7 @@ paths: Боты, которых вызывающий вправе настраивать: созданные им самим и те, чьи настройки открывают ему доступ к редактированию. - Параметр `query` отбирает ботов по части имени, без опечаток. Токены ботов в списке не приходят — их показывают один раз при создании и при ротации. + Параметр `query` отбирает ботов по части имени, без опечаток. Токены ботов в списке не приходят: значение токена показывают один раз, а сами токены бота отдаёт [Список токенов бота](GET /bots/{id}/tokens). Перечень всех ботов пространства, включая чужих, доступен владельцу на тарифе «Корпорация» — [Список ботов пространства](GET /company/bots). Там чужие боты приходят с одними лишь именем и ником, остальные настройки скрыты. parameters: @@ -404,6 +422,13 @@ paths: example: data: - id: 1738816 + name: Бот задач + nickname: tasks_bot + avatar_url: null + creator_id: 12 + created_at: '2025-05-15T14:30:00.000Z' + authorized_users_count: 3 + last_used_at: '2025-05-20T09:15:00.000Z' webhook: name: Бот задач nickname: tasks_bot @@ -425,6 +450,27 @@ paths: can_edit: - admin who_can_add: creator + kind: simple + unfurl_domains: [] + last_request_at: '2025-05-20T09:15:00.000Z' + oauth_client_enabled: true + oauth_client: + client_id: aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY + client_secret_preview: dGhpc19p...ZWNy + confidential: true + redirect_uris: + - https://example.com/oauth/callback + scopes: + - messages:read + - messages:create + promo: + description: Собирает сводку по задачам и присылает её в чат + published: true + promo_images: [] + permissions: + update_oauth_client: true + recreate_token: true + destroy: true meta: paginate: next_page: eyJpZCI6MTczODgxNn0 @@ -456,13 +502,17 @@ paths: description: |- Новый бот - Создаёт бота в пространстве и сразу отдаёт его `access_token`. Сохраните токен при создании: тот же самый повторно не показывают, останется перевыпустить его методом [Ротация токена бота](POST /bots/{id}/recreate_token). + Создаёт бота в пространстве. По умолчанию бот получает входящий вебхук в своём формате и сразу отдаёт свой `access_token`. Сохраните токен при создании: тот же самый повторно не показывают, останется перевыпустить его методом [Ротация токена бота](POST /bots/{id}/recreate_token). + + С `empty: true` создаётся пустой бот, как в интерфейсе: только имя и ник, без токена и без входящего вебхука. Токены ему выпускают методом [Новый токен бота](POST /bots/{id}/tokens), а входящий вебхук включают полем `kind` в объекте `webhook`. Созданный бот ещё никуда не пишет. В беседу и канал он пишет только как участник, а добавляют его как сотрудника — методом [Добавление пользователей](POST /chats/{id}/members), передав `id` бота. В канале бот получает роль редактора. Личные сообщения и треды в открытых чатах членства не требуют. Входящий вебхук бота отправляет сообщение сразу во все беседы и каналы, где бот состоит, поэтому набор его чатов и решает, куда оно попадёт. Токен для этого не нужен, достаточно адреса вебхука. Чтобы написать в один конкретный чат, берите метод [Новое сообщение](POST /messages) — вот там токен уже нужен. - Ник обязан заканчиваться на `_bot` и быть свободным в пространстве. Ограничение `single_chat` задаётся только здесь: при редактировании бота оно уже не меняется. + Авторизацию от имени сотрудника можно включить сразу, передав `oauth_client`, а страницу в витрине заполнить в `promo`. У серверного клиента секрет приходит в `client_secret` один раз. Подробнее — в разделе [Настройка авторизации](/guides/oauth/setup). + + Ник обязан заканчиваться на `_bot` и быть свободным в пространстве. parameters: [] responses: '201': @@ -480,6 +530,13 @@ paths: example: data: id: 1738816 + name: Бот задач + nickname: tasks_bot + avatar_url: null + creator_id: 12 + created_at: '2025-05-15T14:30:00.000Z' + authorized_users_count: 0 + last_used_at: null webhook: name: Бот задач nickname: tasks_bot @@ -501,6 +558,28 @@ paths: can_edit: - admin who_can_add: creator + kind: simple + unfurl_domains: [] + last_request_at: null + oauth_client_enabled: true + oauth_client: + client_id: aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY + client_secret_preview: dGhpc19p...ZWNy + confidential: true + redirect_uris: + - https://example.com/oauth/callback + scopes: + - messages:read + - messages:create + promo: + description: null + published: false + promo_images: [] + permissions: + update_oauth_client: true + recreate_token: true + destroy: true + client_secret: dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA access_token: bm90X2FfcmVhbF90b2tlbg '400': description: The server could not understand the request due to invalid syntax. @@ -546,6 +625,13 @@ paths: - /task scopes: - messages:create + oauth_client: + confidential: true + redirect_uris: + - https://example.com/oauth/callback + scopes: + - messages:read + - messages:create x-requirements: scope: bots:write /bots/{id}: @@ -554,9 +640,9 @@ paths: description: |- Информация о боте - Настройки бота. Токен в ответе не приходит — его показывают один раз при создании бота и при вызове метода [Ротация токена бота](POST /bots/{id}/recreate_token). + Настройки бота. Токен в ответе не приходит — его показывают один раз при создании бота и при вызове метода [Ротация токена бота](POST /bots/{id}/recreate_token). Токены бота отдаёт [Список токенов бота](GET /bots/{id}/tokens). - Метод отдаёт только тех ботов, которых вызывающий вправе настраивать: своих, а также чужих, если настройки бота открывают доступ администратору пространства или владельцу чата, где бот состоит. На остальных метод ответит `403`. + Метод отдаёт только тех ботов, которых вызывающий вправе настраивать: своих, а также чужих, если настройки бота открывают доступ администраторам пространства или руководителям чатов, где бот состоит. На остальных метод ответит `403`. Перечень всех ботов пространства, включая чужих, доступен владельцу на тарифе «Корпорация» — [Список ботов пространства](GET /company/bots). parameters: @@ -585,6 +671,13 @@ paths: example: data: id: 1738816 + name: Бот задач + nickname: tasks_bot + avatar_url: null + creator_id: 12 + created_at: '2025-05-15T14:30:00.000Z' + authorized_users_count: 3 + last_used_at: '2025-05-20T09:15:00.000Z' webhook: name: Бот задач nickname: tasks_bot @@ -606,6 +699,27 @@ paths: can_edit: - admin who_can_add: creator + kind: simple + unfurl_domains: [] + last_request_at: '2025-05-20T09:15:00.000Z' + oauth_client_enabled: true + oauth_client: + client_id: aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY + client_secret_preview: dGhpc19p...ZWNy + confidential: true + redirect_uris: + - https://example.com/oauth/callback + scopes: + - messages:read + - messages:create + promo: + description: Собирает сводку по задачам и присылает её в чат + published: true + promo_images: [] + permissions: + update_oauth_client: true + recreate_token: true + destroy: true '401': description: Access is unauthorized. content: @@ -641,11 +755,13 @@ paths: Меняет настройки бота: перезаписываются только переданные поля. - Поле `single_chat` принимается только при создании бота. В этом методе оно молча игнорируется: ответ приходит успешный, а режим бота не меняется. + Ник обязан заканчиваться на `_bot` и быть свободным в пространстве, иначе метод отвечает ошибкой валидации. Команды и скоупы заменяются переданным списком целиком. Скоупы относятся к основному токену бота — тому, что без имени, а если такого нет, к самому старому — и применяются к нему сразу, перевыпускать его не нужно. Права отдельного токена меняет [Изменение токена бота](PUT /bots/{id}/tokens/{token_id}). - Ник обязан заканчиваться на `_bot` и быть свободным в пространстве, иначе метод отвечает ошибкой валидации. Команды и скоупы заменяются переданным списком целиком, а новый набор скоупов сразу применяется к действующему токену бота — перевыпускать его не нужно. + Объект `oauth_client` включает авторизацию от имени сотрудника или меняет её настройки, а `null` её выключает: авторизации, выданные сотрудниками, отзываются, страница в витрине удаляется, собственные токены бота продолжают работать. Когда клиент становится серверным, его секрет приходит в `client_secret` один раз. Страницу в витрине задаёт `promo`, пока авторизация включена. - Вы не можете редактировать бота, настройки которого вам недоступны (поле «Кто может редактировать настройки бота» находится во вкладке «Основное» в настройках бота). + Включать событие `message_link_shared`, а у бота с ним менять домены, адрес вебхука и историю событий может только администратор или владелец пространства. + + Имя бота, авторизацию от имени сотрудника и страницу в витрине меняют только его создатель и администратор пространства, если настройки бота открывают администраторам доступ к редактированию. Остальные настройки нельзя менять у бота, настройки которого вам недоступны (поле «Кто может редактировать настройки бота» находится во вкладке «Основное» в настройках бота). parameters: - name: id in: path @@ -692,7 +808,9 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/OAuthError' + anyOf: + - $ref: '#/components/schemas/ApiError' + - $ref: '#/components/schemas/OAuthError' '404': description: The server cannot find the requested resource. content: @@ -720,7 +838,7 @@ paths: description: |- Удаление бота - Убирает бота из пространства насовсем. Прежний `access_token` бота сразу инвалидируется, бот исключается из всех чатов, его исходящий вебхук удаляется. + Убирает бота из пространства насовсем. Все токены бота сразу перестают работать, как и авторизации, выданные ему сотрудниками. Бот исключается из всех чатов, его вебхуки удаляются, страница в витрине тоже. Удаление доступно создателю бота, а также администратору пространства, если настройки бота открывают администраторам доступ к редактированию. Владельцы и администраторы чатов удалять бота не могут, даже если им разрешено его редактировать. parameters: @@ -772,8 +890,9 @@ paths: Метод генерирует боту новый `access_token` и сразу инвалидирует прежний. Используйте его при компрометации токена или плановой ротации секрета в `CI`. - Новый токен возвращается в ответе только один раз — сохраните его сразу. Права у него те же: скоупы переносятся с прежнего токена. + Перевыпускается основной токен бота — тот, что без имени, а если такого нет, самый старый. Отдельный токен перевыпускает [Перевыпуск токена бота](POST /bots/{id}/tokens/{token_id}/reissue). + Новый токен возвращается в ответе только один раз — сохраните его сразу. Права у него те же: скоупы переносятся с прежнего токена. Ротация доступна создателю бота, а также администратору пространства, если настройки бота открывают администраторам доступ к редактированию. Владелец чата, где состоит бот, ротировать токен не может, даже когда остальные настройки бота ему открыты. parameters: @@ -802,6 +921,13 @@ paths: example: data: id: 1738816 + name: Бот задач + nickname: tasks_bot + avatar_url: null + creator_id: 12 + created_at: '2025-05-15T14:30:00.000Z' + authorized_users_count: 3 + last_used_at: '2025-05-20T09:15:00.000Z' webhook: name: Бот задач nickname: tasks_bot @@ -823,6 +949,27 @@ paths: can_edit: - admin who_can_add: creator + kind: simple + unfurl_domains: [] + last_request_at: '2025-05-20T09:15:00.000Z' + oauth_client_enabled: true + oauth_client: + client_id: aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY + client_secret_preview: dGhpc19p...ZWNy + confidential: true + redirect_uris: + - https://example.com/oauth/callback + scopes: + - messages:read + - messages:create + promo: + description: Собирает сводку по задачам и присылает её в чат + published: true + promo_images: [] + permissions: + update_oauth_client: true + recreate_token: true + destroy: true access_token: bm90X2FfcmVhbF90b2tlbg '401': description: Access is unauthorized. @@ -852,21 +999,30 @@ paths: - Bots x-requirements: scope: bots:write - /chats: + /bots/{id}/rotate_client_secret: post: - operationId: ChatOperations_createChat + operationId: BotOperations_rotateBotClientSecret description: |- - Новый чат + Ротация секрета клиента - Создаёт беседу или канал. Владелец токена становится владельцем чата, и роль эта в дальнейшем не передаётся. + Выпускает новый `client_secret` для авторизации от имени сотрудника. Прежний секрет перестаёт работать сразу, поэтому сначала подготовьте бота к замене. Уже выданные авторизации и полученные токены продолжают работать. - Для создания личной переписки 1 на 1 с пользователем пользуйтесь методом [Новое сообщение](POST /messages). Чтобы обсудить конкретное сообщение, чат заводить не нужно — под ним заводят тред методом [Новый тред](POST /messages/{id}/thread). + Новый секрет приходит в `client_secret` один раз. Метод работает только у бота с включённой авторизацией и серверным клиентом (`confidential: true`), иначе отвечает `400`. - Участников можно передать сразу: `member_ids` добавляет поимённо, `group_tag_ids` приводит всех, кто состоит в теге, и дальше поддерживает состав сам. Идентификаторы, которых в пространстве нет, а также приостановленные и удалённые сотрудники молча отбрасываются — ответ приходит успешным, а сотрудника в чате не оказывается, поэтому сверяйте состав в ответе. - parameters: [] + Ротация доступна создателю бота, а также администратору пространства, если настройки бота открывают администраторам доступ к редактированию. + parameters: + - name: id + in: path + required: true + description: Идентификатор бота + schema: + type: integer + format: int32 + example: 1738816 + example: 1738816 responses: - '201': - description: The request has succeeded and a new resource has been created as a result. + '200': + description: The request has succeeded. content: application/json: schema: @@ -875,8 +1031,61 @@ paths: - data properties: data: - $ref: '#/components/schemas/Chat' + $ref: '#/components/schemas/BotResponse' description: Обертка ответа с данными + example: + data: + id: 1738816 + name: Бот задач + nickname: tasks_bot + avatar_url: null + creator_id: 12 + created_at: '2025-05-15T14:30:00.000Z' + authorized_users_count: 3 + last_used_at: '2025-05-20T09:15:00.000Z' + webhook: + name: Бот задач + nickname: tasks_bot + outgoing_url: https://www.website.com/tasks/new + events: + - message_new + trigger_on: commands + commands: + - /task + scopes: + - messages:create + template: Заказ от {{ client }} на сумму {{ amount }} ₽ + template_engine: liquid + challenge_key: challenge + link_preview_enabled: true + ignore_self_messages: false + events_history_enabled: false + single_chat: false + can_edit: + - admin + who_can_add: creator + kind: simple + unfurl_domains: [] + last_request_at: '2025-05-20T09:15:00.000Z' + oauth_client_enabled: true + oauth_client: + client_id: aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY + client_secret_preview: dGhpc19p...ZWNy + confidential: true + redirect_uris: + - https://example.com/oauth/callback + scopes: + - messages:read + - messages:create + promo: + description: Собирает сводку по задачам и присылает её в чат + published: true + promo_images: [] + permissions: + update_oauth_client: true + recreate_token: true + destroy: true + client_secret: dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA '400': description: The server could not understand the request due to invalid syntax. content: @@ -897,106 +1106,113 @@ paths: $ref: '#/components/schemas/ApiError' '403': description: Access is forbidden. + content: + application/json: + schema: + anyOf: + - $ref: '#/components/schemas/ApiError' + - $ref: '#/components/schemas/OAuthError' + '404': + description: The server cannot find the requested resource. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - Bots + x-requirements: + scope: bots:write + /bots/{id}/scopes: + get: + operationId: BotOperations_getBotScopes + description: |- + Каталог прав бота + + Права, которые можно выдать этому боту: его токенам и авторизации от имени сотрудника. У каждого права есть описание, категория и готовые наборы, в которые оно входит, как при выборе прав в интерфейсе. + + Каталог доступен тем же, кто видит токены бота: создателю бота, а также администратору пространства, если настройки бота открывают администраторам доступ к редактированию. + parameters: + - name: id + in: path + required: true + description: Идентификатор бота + schema: + type: integer + format: int32 + example: 1738816 + example: 1738816 + responses: + '200': + description: The request has succeeded. + content: + application/json: + schema: + $ref: '#/components/schemas/BotScopeCatalog' + example: + scopes: + - id: messages:create + title: Отправка сообщений + group: messages + preset: + - admin + groups: + - id: messages + title: Сообщения + description: Работа с сообщениями + presets: + - id: read-only + title: Только чтение + - id: admin + title: Администратор + '401': + description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/OAuthError' - '422': + '402': description: Client error content: application/json: schema: $ref: '#/components/schemas/ApiError' + '403': + description: Access is forbidden. + content: + application/json: + schema: + anyOf: + - $ref: '#/components/schemas/ApiError' + - $ref: '#/components/schemas/OAuthError' + '404': + description: The server cannot find the requested resource. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' tags: - - Chats - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/ChatCreateRequest' + - Bots x-requirements: - scope: chats:create + scope: bots:read + /bots/{id}/tokens: get: - operationId: ChatOperations_listChats + operationId: BotOperations_listBotTokens description: |- - Список чатов + Список токенов бота - По умолчанию — беседы, каналы и личные переписки, где состоит владелец токена. С `availability=public` метод отдаёт вместо этого все открытые чаты пространства, включая те, куда вызывающий не вступал. + Действующие токены бота: основной, выпущенный вместе с ботом, и отдельные — со своим именем и правами. Значение токена здесь замаскировано: полностью его показывают один раз, при выпуске и перевыпуске. - Треды в списке не приходят никогда, для них есть [Список тредов](GET /threads). - - `archived=true` не переключает выдачу на архив, а добавляет архивные чаты к активным. + Работать с токенами бота могут только его создатель и администратор пространства, если настройки бота открывают администраторам доступ к редактированию. Владельцу чата с ботом метод отвечает `403`, даже когда остальные настройки бота ему открыты. parameters: - - name: sort - in: query - required: false - description: Поле сортировки - schema: - allOf: - - $ref: '#/components/schemas/ChatSortField' - default: id - example: id - explode: false - - name: order - in: query - required: false - description: Направление сортировки - schema: - allOf: - - $ref: '#/components/schemas/SortOrder' - default: desc - example: desc - explode: false - - name: availability - in: query - required: false - description: Параметр, который отвечает за доступность и выборку чатов для пользователя - schema: - allOf: - - $ref: '#/components/schemas/ChatAvailability' - default: is_member - example: is_member - explode: false - - name: archived - in: query - required: false - description: Добавляет к выдаче архивные чаты. По умолчанию возвращаются только активные. Работает при любом значении `availability`. - schema: - type: boolean - example: true - default: false - example: true - explode: false - - name: last_message_at_after - in: query - required: false - description: 'Фильтрация по времени создания последнего сообщения: вернутся чаты, где оно позже указанного. Значение в ISO-8601, смещение вида `+03:00` учитывается, время без смещения считается UTC.' - schema: - type: string - format: date-time - example: '2025-01-01T00:00:00.000Z' - example: '2025-01-01T00:00:00.000Z' - explode: false - - name: last_message_at_before - in: query - required: false - description: 'Фильтрация по времени создания последнего сообщения: вернутся чаты, где оно раньше указанного. Значение в ISO-8601, смещение вида `+03:00` учитывается, время без смещения считается UTC.' - schema: - type: string - format: date-time - example: '2025-02-01T00:00:00.000Z' - example: '2025-02-01T00:00:00.000Z' - explode: false - - name: personal - in: query - required: false - description: Фильтрация по личным и групповым чатам. Если параметр не указан, возвращаются любые чаты. + - name: id + in: path + required: true + description: Идентификатор бота schema: - type: boolean - example: false - example: false - explode: false + type: integer + format: int32 + example: 1738816 + example: 1738816 - name: limit in: query required: false @@ -1013,11 +1229,11 @@ paths: - name: cursor in: query required: false - description: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`) + description: Курсор для пагинации (из `meta.paginate.next_page`) schema: type: string - example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 - example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 + example: eyJpZCI6NDgyN30 + example: eyJpZCI6NDgyN30 explode: false responses: '200': @@ -1033,10 +1249,27 @@ paths: data: type: array items: - $ref: '#/components/schemas/Chat' + $ref: '#/components/schemas/BotAccessToken' meta: $ref: '#/components/schemas/PaginationMeta' description: Обертка ответа с данными и пагинацией + example: + data: + - id: 4827 + token: cH5kR9mN...x7Qp + name: Сервер уведомлений + user_id: 1738816 + scopes: + - messages:create + - chats:read + created_at: '2025-01-15T10:30:00.000Z' + revoked_at: null + expires_in: null + last_used_at: '2025-02-24T14:20:00.000Z' + authorized_at: null + meta: + paginate: + next_page: eyJpZCI6NDgyN30 '400': description: The server could not understand the request due to invalid syntax. content: @@ -1060,33 +1293,69 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/OAuthError' - '422': - description: Client error + anyOf: + - $ref: '#/components/schemas/ApiError' + - $ref: '#/components/schemas/OAuthError' + '404': + description: The server cannot find the requested resource. content: application/json: schema: $ref: '#/components/schemas/ApiError' tags: - - Chats + - Bots x-paginated: true x-requirements: - scope: chats:read - /chats/exports: + scope: bots:read post: - operationId: ExportOperations_requestExport + operationId: BotOperations_createBotToken description: |- - Экспорт сообщений + Новый токен бота - Заказ выгрузки сообщений пространства за период. Архив готовится в фоне, поэтому ответ приходит пустым и идентификатора выгрузки не содержит. + Выпускает боту ещё один токен со своим именем и правами. Токенов у бота может быть несколько: например, отдельный на каждый сервис, чтобы отзывать их по одному. - Номер готовой выгрузки приходит в поле `export_id` вебхука на адрес из `webhook_url`. Заказавший дополнительно получает письмо и уведомление в Пачке со ссылкой вида `/full_exports/{id}` — число в ней и есть идентификатор. Адрес вебхука необязателен, но без него программе номер взять неоткуда: остаются только письмо и уведомление заказавшему. + Значение токена приходит в ответе один раз — сохраните его сразу. Токен бессрочный и работает, пока его не удалят. - С этим идентификатором архив забирают методом [Скачать архив экспорта](GET /chats/exports/{id}). - parameters: [] - responses: - '204': - description: 'There is no content to send for this request, but the headers may be useful. ' + Права выбирают из тех, что можно выдать боту: их перечисляет [Каталог прав бота](GET /bots/{id}/scopes). На право не из каталога метод отвечает `400`. Без `scopes` токен выпускается без прав. + + Работать с токенами бота могут только его создатель и администратор пространства, если настройки бота открывают администраторам доступ к редактированию. Владельцу чата с ботом метод отвечает `403`, даже когда остальные настройки бота ему открыты. + parameters: + - name: id + in: path + required: true + description: Идентификатор бота + schema: + type: integer + format: int32 + example: 1738816 + example: 1738816 + responses: + '201': + description: The request has succeeded and a new resource has been created as a result. + content: + application/json: + schema: + type: object + required: + - data + properties: + data: + $ref: '#/components/schemas/BotAccessToken' + description: Обертка ответа с данными + example: + data: + id: 4827 + token: bm90X2FfcmVhbF90b2tlbg + name: Сервер уведомлений + user_id: 1738816 + scopes: + - messages:create + - chats:read + created_at: '2025-01-15T10:30:00.000Z' + revoked_at: null + expires_in: null + last_used_at: null + authorized_at: null '400': description: The server could not understand the request due to invalid syntax. content: @@ -1099,6 +1368,12 @@ paths: application/json: schema: $ref: '#/components/schemas/OAuthError' + '402': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' '403': description: Access is forbidden. content: @@ -1107,68 +1382,108 @@ paths: anyOf: - $ref: '#/components/schemas/ApiError' - $ref: '#/components/schemas/OAuthError' - '422': - description: Client error + '404': + description: The server cannot find the requested resource. content: application/json: schema: $ref: '#/components/schemas/ApiError' tags: - - Chats + - Bots requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/ExportRequest' + $ref: '#/components/schemas/BotTokenCreateRequest' + example: + name: Сервер уведомлений + scopes: + - messages:create + - chats:read x-requirements: - scope: chat_exports:write - plan: corporation - /chats/exports/{id}: - get: - operationId: ExportOperations_downloadExport + scope: bots:write + /bots/{id}/tokens/{token_id}: + put: + operationId: BotOperations_updateBotToken description: |- - Скачать архив экспорта + Изменение токена бота - В ответ на запрос сервер вернёт `302 Found` с заголовком `Location`, содержащим временную ссылку на скачивание файла. Большинство HTTP-клиентов автоматически следуют редиректу и скачивают файл. + Меняет имя или права токена. Новые права действуют сразу: перевыпускать токен не нужно, его значение остаётся прежним. Права заменяются переданным списком целиком. - Ссылка действует 5 минут, поэтому скачивайте архив сразу после запроса. Сам архив хранится 7 дней, а скачать его может только тот, кто заказал выгрузку. Другому сотруднику с тем же правом метод откажет. + Работать с токенами бота могут только его создатель и администратор пространства, если настройки бота открывают администраторам доступ к редактированию. Владельцу чата с ботом метод отвечает `403`, даже когда остальные настройки бота ему открыты. parameters: - name: id in: path required: true - description: Идентификатор экспорта + description: Идентификатор бота schema: type: integer format: int32 - example: 22322 - example: 22322 + example: 1738816 + example: 1738816 + - name: token_id + in: path + required: true + description: Идентификатор токена + schema: + type: integer + format: int64 + example: 4827 + example: 4827 responses: - '302': - description: Redirection - headers: - location: - required: true - description: Временная ссылка на архив в хранилище, действует 5 минут + '200': + description: The request has succeeded. + content: + application/json: schema: - type: string - format: uri + type: object + required: + - data + properties: + data: + $ref: '#/components/schemas/BotAccessToken' + description: Обертка ответа с данными + example: + data: + id: 4827 + token: cH5kR9mN...x7Qp + name: Сервер уведомлений + user_id: 1738816 + scopes: + - messages:create + - chats:read + created_at: '2025-01-15T10:30:00.000Z' + revoked_at: null + expires_in: null + last_used_at: '2025-02-24T14:20:00.000Z' + authorized_at: null + '400': + description: The server could not understand the request due to invalid syntax. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/OAuthError' + '402': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' '403': description: Access is forbidden. content: application/json: schema: anyOf: + - $ref: '#/components/schemas/ApiError' - $ref: '#/components/schemas/OAuthError' - - anyOf: - - $ref: '#/components/schemas/ApiError' - - $ref: '#/components/schemas/OAuthError' '404': description: The server cannot find the requested resource. content: @@ -1176,31 +1491,110 @@ paths: schema: $ref: '#/components/schemas/ApiError' tags: - - Chats + - Bots + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/BotTokenUpdateRequest' + example: + name: Сервер уведомлений + scopes: + - messages:create + - chats:read x-requirements: - scope: chat_exports:read - plan: corporation - /chats/{id}: - get: - operationId: ChatOperations_getChat + scope: bots:write + delete: + operationId: BotOperations_deleteBotToken description: |- - Информация о чате + Удаление токена бота - Карточка чата вместе с составом участников и привязанными тегами. + Удаляет токен: запросы с ним сразу перестают проходить. Остальные токены бота продолжают работать. - Закрытая беседа, в которой вызывающий не состоит, отвечает `403`, а не `404`: существование чата этим методом не скрывается. Открытый канал своего пространства отдаётся и тому, кто в него не вступал. Владельцу пространства метод тоже не открывает чужие закрытые чаты — весь их перечень отдаёт [Список чатов пространства](GET /company/chats). + Работать с токенами бота могут только его создатель и администратор пространства, если настройки бота открывают администраторам доступ к редактированию. Владельцу чата с ботом метод отвечает `403`, даже когда остальные настройки бота ему открыты. + parameters: + - name: id + in: path + required: true + description: Идентификатор бота + schema: + type: integer + format: int32 + example: 1738816 + example: 1738816 + - name: token_id + in: path + required: true + description: Идентификатор токена + schema: + type: integer + format: int64 + example: 4827 + example: 4827 + responses: + '204': + description: 'There is no content to send for this request, but the headers may be useful. ' + '401': + description: Access is unauthorized. + content: + application/json: + schema: + $ref: '#/components/schemas/OAuthError' + '402': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '403': + description: Access is forbidden. + content: + application/json: + schema: + anyOf: + - $ref: '#/components/schemas/ApiError' + - $ref: '#/components/schemas/OAuthError' + '404': + description: The server cannot find the requested resource. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - Bots + x-requirements: + scope: bots:write + /bots/{id}/tokens/{token_id}/reissue: + post: + operationId: BotOperations_reissueBotToken + description: |- + Перевыпуск токена бота - В `member_ids` приходят только действующие участники: приостановленные в список не попадают, хотя членство у них сохраняется. + Заменяет значение токена новым: прежнее сразу перестаёт работать, имя и права остаются. Новое значение приходит в ответе один раз — сохраните его сразу. + + Метод нужен, когда токен утёк или его меняют по плану. Основной токен бота перевыпускает и [Ротация токена бота](POST /bots/{id}/recreate_token). + + Работать с токенами бота могут только его создатель и администратор пространства, если настройки бота открывают администраторам доступ к редактированию. Владельцу чата с ботом метод отвечает `403`, даже когда остальные настройки бота ему открыты. parameters: - name: id in: path required: true - description: Идентификатор чата + description: Идентификатор бота schema: type: integer format: int32 - example: 334 - example: 334 + example: 1738816 + example: 1738816 + - name: token_id + in: path + required: true + description: Идентификатор токена + schema: + type: integer + format: int64 + example: 4827 + example: 4827 responses: '200': description: The request has succeeded. @@ -1212,8 +1606,22 @@ paths: - data properties: data: - $ref: '#/components/schemas/Chat' + $ref: '#/components/schemas/BotAccessToken' description: Обертка ответа с данными + example: + data: + id: 4827 + token: bm90X2FfcmVhbF90b2tlbg + name: Сервер уведомлений + user_id: 1738816 + scopes: + - messages:create + - chats:read + created_at: '2025-01-15T10:30:00.000Z' + revoked_at: null + expires_in: null + last_used_at: '2025-02-24T14:20:00.000Z' + authorized_at: null '401': description: Access is unauthorized. content: @@ -1231,7 +1639,9 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/OAuthError' + anyOf: + - $ref: '#/components/schemas/ApiError' + - $ref: '#/components/schemas/OAuthError' '404': description: The server cannot find the requested resource. content: @@ -1239,32 +1649,26 @@ paths: schema: $ref: '#/components/schemas/ApiError' tags: - - Chats + - Bots x-requirements: - scope: chats:read - put: - operationId: ChatOperations_updateChat + scope: bots:write + /chats: + post: + operationId: ChatOperations_createChat description: |- - Редактирование чата + Новый чат - Меняет название беседы или канала и его доступность. Оба изменения видны участникам системным сообщением в ленте чата. + Создаёт беседу или канал. Владелец токена становится владельцем чата, и роль эта в дальнейшем не передаётся. - Личный чат переименовать нельзя, архивный — тоже: сначала верните его из архива методом [Разархивация чата](PUT /chats/{id}/unarchive). В закрытом чате метод доступен владельцу и администратору чата, в открытом — любому сотруднику пространства, даже не участнику. + Мульти-гость, как и в интерфейсе, создавать чаты не может: метод отвечает ему `403`. - Состав участников этим методом не меняется, для него есть [Добавление пользователей](POST /chats/{id}/members) и [Исключение пользователя](DELETE /chats/{id}/members/{user_id}). - parameters: - - name: id - in: path - required: true - description: Идентификатор чата - schema: - type: integer - format: int32 - example: 334 - example: 334 + Для создания личной переписки 1 на 1 с пользователем пользуйтесь методом [Новое сообщение](POST /messages). Чтобы обсудить конкретное сообщение, чат заводить не нужно — под ним заводят тред методом [Новый тред](POST /messages/{id}/thread). + + Участников можно передать сразу: `member_ids` добавляет поимённо, `group_tag_ids` приводит всех, кто состоит в теге, и дальше поддерживает состав сам. Идентификаторы, которых в пространстве нет, а также приостановленные и удалённые сотрудники молча отбрасываются — ответ приходит успешным, а сотрудника в чате не оказывается, поэтому сверяйте состав в ответе. С ботами строже: если настройка бота «Кто может добавлять бота в чаты» не разрешает вам его добавить, чат не создаётся, а метод отвечает `403` с кодом `bot_add_denied` и идентификаторами таких ботов в `value`. + parameters: [] responses: - '200': - description: The request has succeeded. + '201': + description: The request has succeeded and a new resource has been created as a result. content: application/json: schema: @@ -1298,13 +1702,9 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/OAuthError' - '404': - description: The server cannot find the requested resource. - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' + anyOf: + - $ref: '#/components/schemas/ApiError' + - $ref: '#/components/schemas/OAuthError' '422': description: Client error content: @@ -1318,80 +1718,176 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ChatUpdateRequest' + $ref: '#/components/schemas/ChatCreateRequest' x-requirements: - scope: chats:update - /chats/{id}/archive: - put: - operationId: ChatOperations_archiveChat + scope: chats:create + get: + operationId: ChatOperations_listChats description: |- - Архивация чата - - Отправляет беседу или канал в архив: чат пропадает из списков у всех участников, новые сообщения в него не принимаются, а история сохраняется. + Список чатов - Архивация не только замораживает чат. Из него исключаются все гости, а теги от него отвязываются. Приведённые тегом сотрудники при этом остаются обычными участниками, но состав чата больше не поддерживается сам. Метод [Разархивация чата](PUT /chats/{id}/unarchive) не возвращает ни гостей, ни привязку тегов. + По умолчанию — беседы, каналы и личные переписки, где состоит владелец токена. С `availability=public` метод отдаёт вместо этого все открытые чаты пространства, включая те, куда вызывающий не вступал. Мульти-гостю — только открытые чаты, где он участник. - Треды, заведённые в чате, остаются открытыми: писать в них можно и после архивации. + Треды в списке не приходят никогда, для них есть [Список тредов](GET /threads). - Личный чат и тред в архив не отправляются. Повторная архивация уже архивного чата отвечает `403`. + `archived=true` не переключает выдачу на архив, а добавляет архивные чаты к активным. parameters: - - name: id - in: path - required: true - description: Идентификатор чата - schema: - type: integer + - name: sort + in: query + required: false + description: Поле сортировки + schema: + allOf: + - $ref: '#/components/schemas/ChatSortField' + default: id + example: id + explode: false + - name: order + in: query + required: false + description: Направление сортировки + schema: + allOf: + - $ref: '#/components/schemas/SortOrder' + default: desc + example: desc + explode: false + - name: availability + in: query + required: false + description: Параметр, который отвечает за доступность и выборку чатов для пользователя + schema: + allOf: + - $ref: '#/components/schemas/ChatAvailability' + default: is_member + example: is_member + explode: false + - name: archived + in: query + required: false + description: Добавляет к выдаче архивные чаты. По умолчанию возвращаются только активные. Работает при любом значении `availability`. + schema: + type: boolean + example: true + default: false + example: true + explode: false + - name: last_message_at_after + in: query + required: false + description: 'Фильтрация по времени создания последнего сообщения: вернутся чаты, где оно позже указанного. Значение в ISO-8601, смещение вида `+03:00` учитывается, время без смещения считается UTC.' + schema: + type: string + format: date-time + example: '2025-01-01T00:00:00.000Z' + example: '2025-01-01T00:00:00.000Z' + explode: false + - name: last_message_at_before + in: query + required: false + description: 'Фильтрация по времени создания последнего сообщения: вернутся чаты, где оно раньше указанного. Значение в ISO-8601, смещение вида `+03:00` учитывается, время без смещения считается UTC.' + schema: + type: string + format: date-time + example: '2025-02-01T00:00:00.000Z' + example: '2025-02-01T00:00:00.000Z' + explode: false + - name: personal + in: query + required: false + description: Фильтрация по личным и групповым чатам. Если параметр не указан, возвращаются любые чаты. + schema: + type: boolean + example: false + example: false + explode: false + - name: limit + in: query + required: false + description: Количество возвращаемых сущностей за один запрос + schema: + type: integer format: int32 - example: 334 - example: 334 + minimum: 1 + maximum: 50 + example: 1 + default: 50 + example: 1 + explode: false + - name: cursor + in: query + required: false + description: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`) + schema: + type: string + example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 + example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 + explode: false responses: - '204': - description: 'There is no content to send for this request, but the headers may be useful. ' + '200': + description: The request has succeeded. + content: + application/json: + schema: + type: object + required: + - data + - meta + properties: + data: + type: array + items: + $ref: '#/components/schemas/Chat' + meta: + $ref: '#/components/schemas/PaginationMeta' + description: Обертка ответа с данными и пагинацией + '400': + description: The server could not understand the request due to invalid syntax. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/OAuthError' + '402': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' '403': description: Access is forbidden. content: application/json: schema: $ref: '#/components/schemas/OAuthError' - '404': - description: The server cannot find the requested resource. + '422': + description: Client error content: application/json: schema: $ref: '#/components/schemas/ApiError' tags: - Chats + x-paginated: true x-requirements: - scope: chats:archive - /chats/{id}/group_tags: + scope: chats:read + /chats/exports: post: - operationId: ChatMemberOperations_addTags + operationId: ExportOperations_requestExport description: |- - Добавление тегов - - Привязывает теги к беседе или каналу, чтобы состав чата поддерживался сам. + Экспорт сообщений - После добавления тега все его участники автоматически становятся участниками чата. Состав участников тега и чата синхронизируется автоматически: при добавлении нового участника в тег он сразу появляется в чате, при удалении из тега — удаляется из чата. + Заказ выгрузки сообщений пространства за период. Архив готовится в фоне, поэтому ответ приходит пустым и идентификатора выгрузки не содержит. - Если хотя бы один из переданных тегов не найден, метод отвечает `404` и не привязывает ни одного. Тег, который к чату уже привязан, повторно не привязывается, а его участники всё равно догружаются в чат. + Номер готовой выгрузки приходит в поле `export_id` вебхука на адрес из `webhook_url`. Заказавший дополнительно получает письмо и уведомление в Пачке со ссылкой вида `/full_exports/{id}` — число в ней и есть идентификатор. Адрес вебхука необязателен, но без него программе номер взять неоткуда: остаются только письмо и уведомление заказавшему. - Привязать тег может участник закрытой беседы и любой сотрудник пространства в открытом чате, а отцепить — только владелец или администратор чата методом [Исключение тега](DELETE /chats/{id}/group_tags/{tag_id}). - parameters: - - name: id - in: path - required: true - description: Идентификатор чата - schema: - type: integer - format: int32 - example: 334 - example: 334 + С этим идентификатором архив забирают методом [Скачать архив экспорта](GET /chats/exports/{id}). + parameters: [] responses: '204': description: 'There is no content to send for this request, but the headers may be useful. ' @@ -1412,13 +1908,9 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/OAuthError' - '404': - description: The server cannot find the requested resource. - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' + anyOf: + - $ref: '#/components/schemas/ApiError' + - $ref: '#/components/schemas/OAuthError' '422': description: Client error content: @@ -1426,48 +1918,45 @@ paths: schema: $ref: '#/components/schemas/ApiError' tags: - - Members + - Chats requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/AddTagsRequest' + $ref: '#/components/schemas/ExportRequest' x-requirements: - scope: chat_members:write - /chats/{id}/group_tags/{tag_id}: - delete: - operationId: ChatMemberOperations_removeTag + scope: chat_exports:write + plan: corporation + /chats/exports/{id}: + get: + operationId: ExportOperations_downloadExport description: |- - Исключение тега - - Отцепляет тег от беседы или канала и выводит оттуда сотрудников, которых держал только он. + Скачать архив экспорта - Выход происходит фоном, уже после ответа: метод отвечает `204` сразу, а состав чата меняется через несколько мгновений. Останутся владелец чата, те, кого приводит другой тег этого же чата, и те, кого добавляли в чат вручную. + В ответ на запрос сервер вернёт `302 Found` с заголовком `Location`, содержащим временную ссылку на скачивание файла. Большинство HTTP-клиентов автоматически следуют редиректу и скачивают файл. - Снять тег с чата может владелец или администратор чата. Привязать его обратно можно методом [Добавление тегов](POST /chats/{id}/group_tags). + Ссылка действует 5 минут, поэтому скачивайте архив сразу после запроса. Сам архив хранится 7 дней, а скачать его может только тот, кто заказал выгрузку. Другому сотруднику с тем же правом метод откажет. parameters: - name: id in: path required: true - description: Идентификатор чата - schema: - type: integer - format: int32 - example: 334 - example: 334 - - name: tag_id - in: path - required: true - description: Идентификатор тега + description: Идентификатор экспорта schema: type: integer format: int32 - example: 86 - example: 86 + example: 22322 + example: 22322 responses: - '204': - description: 'There is no content to send for this request, but the headers may be useful. ' + '302': + description: Redirection + headers: + location: + required: true + description: Временная ссылка на архив в хранилище, действует 5 минут + schema: + type: string + format: uri '401': description: Access is unauthorized. content: @@ -1479,7 +1968,11 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/OAuthError' + anyOf: + - $ref: '#/components/schemas/OAuthError' + - anyOf: + - $ref: '#/components/schemas/ApiError' + - $ref: '#/components/schemas/OAuthError' '404': description: The server cannot find the requested resource. content: @@ -1487,20 +1980,21 @@ paths: schema: $ref: '#/components/schemas/ApiError' tags: - - Members + - Chats x-requirements: - scope: chat_members:write - /chats/{id}/leave: - delete: - operationId: ChatMemberOperations_leaveChat + scope: chat_exports:read + plan: corporation + /chats/{id}: + get: + operationId: ChatOperations_getChat description: |- - Выход из чата + Информация о чате - Владелец токена выходит из беседы, канала или треда сам. Из треда выходят по его `chat_id`. В закрытой беседе остальные видят системное сообщение о выходе, в открытом чате и канале — нет. + Карточка чата вместе с составом участников и привязанными тегами. - Выйти нельзя, если сотрудника держит в чате привязанный тег: метод ответит `403`, пока тег не снимут с сотрудника или с чата. Из личной переписки выйти тоже нельзя, а вот из архивного чата можно. + Закрытая беседа, в которой вызывающий не состоит, отвечает `403`, а не `404`: существование чата этим методом не скрывается. Открытый канал своего пространства отдаётся и тому, кто в него не вступал. Владельцу пространства метод тоже не открывает чужие закрытые чаты — весь их перечень отдаёт [Список чатов пространства](GET /company/chats). - Вернуться в открытый чат можно самому, в закрытый — только если кто-то из участников добавит обратно. Другого сотрудника выводит [Исключение пользователя](DELETE /chats/{id}/members/{user_id}). + В `member_ids` приходят только действующие участники: приостановленные в список не попадают, хотя членство у них сохраняется. parameters: - name: id in: path @@ -1512,53 +2006,56 @@ paths: example: 334 example: 334 responses: - '204': - description: 'There is no content to send for this request, but the headers may be useful. ' - '400': - description: The server could not understand the request due to invalid syntax. + '200': + description: The request has succeeded. content: application/json: schema: - $ref: '#/components/schemas/ApiError' + type: object + required: + - data + properties: + data: + $ref: '#/components/schemas/Chat' + description: Обертка ответа с данными '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/OAuthError' - '403': - description: Access is forbidden. + '402': + description: Client error content: application/json: schema: - $ref: '#/components/schemas/OAuthError' - '404': - description: The server cannot find the requested resource. + $ref: '#/components/schemas/ApiError' + '403': + description: Access is forbidden. content: application/json: schema: - $ref: '#/components/schemas/ApiError' - '422': - description: Client error + $ref: '#/components/schemas/OAuthError' + '404': + description: The server cannot find the requested resource. content: application/json: schema: $ref: '#/components/schemas/ApiError' tags: - - Members + - Chats x-requirements: - scope: chats:leave - /chats/{id}/members: - get: - operationId: ChatMemberOperations_listMembers + scope: chats:read + put: + operationId: ChatOperations_updateChat description: |- - Список участников чата + Редактирование чата - Кто состоит в беседе, канале или треде. Боты приходят наравне с сотрудниками, с `bot: true`. + Меняет название беседы или канала и его доступность. Оба изменения видны участникам системным сообщением в ленте чата. - Владелец пространства может получить состав участников любого чата пространства. Администраторы и боты получают состав только тех чатов, где состоят сами, и открытых чатов пространства. + Личный чат переименовать нельзя, архивный — тоже: сначала верните его из архива методом [Разархивация чата](PUT /chats/{id}/unarchive). В закрытом чате метод доступен владельцу и администратору чата, в открытом — любому сотруднику пространства, даже не участнику. - В выдачу попадают только действующие сотрудники: приостановленные не приходят, хотя членство у них сохраняется. Роль участника в чате метод не отдаёт — параметр `role` работает только как фильтр. + Состав участников этим методом не меняется, для него есть [Добавление пользователей](POST /chats/{id}/members) и [Исключение пользователя](DELETE /chats/{id}/members/{user_id}). parameters: - name: id in: path @@ -1569,38 +2066,6 @@ paths: format: int32 example: 334 example: 334 - - name: role - in: query - required: false - description: Роль в чате - schema: - allOf: - - $ref: '#/components/schemas/ChatMemberRoleFilter' - default: all - example: all - explode: false - - name: limit - in: query - required: false - description: Количество возвращаемых сущностей за один запрос - schema: - type: integer - format: int32 - minimum: 1 - maximum: 50 - example: 1 - default: 50 - example: 1 - explode: false - - name: cursor - in: query - required: false - description: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`) - schema: - type: string - example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 - example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 - explode: false responses: '200': description: The request has succeeded. @@ -1610,15 +2075,10 @@ paths: type: object required: - data - - meta properties: data: - type: array - items: - $ref: '#/components/schemas/User' - meta: - $ref: '#/components/schemas/PaginationMeta' - description: Обертка ответа с данными и пагинацией + $ref: '#/components/schemas/Chat' + description: Обертка ответа с данными '400': description: The server could not understand the request due to invalid syntax. content: @@ -1631,6 +2091,12 @@ paths: application/json: schema: $ref: '#/components/schemas/OAuthError' + '402': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' '403': description: Access is forbidden. content: @@ -1650,27 +2116,81 @@ paths: schema: $ref: '#/components/schemas/ApiError' tags: - - Members - x-paginated: true + - Chats + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ChatUpdateRequest' x-requirements: - scope: chat_members:read + scope: chats:update + /chats/{id}/archive: + put: + operationId: ChatOperations_archiveChat + description: |- + Архивация чата + + Отправляет беседу или канал в архив: чат пропадает из списков у всех участников, новые сообщения в него не принимаются, а история сохраняется. + + Архивация не только замораживает чат. Из него исключаются все гости, а теги от него отвязываются. Приведённые тегом сотрудники при этом остаются обычными участниками, но состав чата больше не поддерживается сам. Метод [Разархивация чата](PUT /chats/{id}/unarchive) не возвращает ни гостей, ни привязку тегов. + + Треды, заведённые в чате, остаются открытыми: писать в них можно и после архивации. + + Личный чат и тред в архив не отправляются. Повторная архивация уже архивного чата отвечает `403`. + parameters: + - name: id + in: path + required: true + description: Идентификатор чата + schema: + type: integer + format: int32 + example: 334 + example: 334 + responses: + '204': + description: 'There is no content to send for this request, but the headers may be useful. ' + '401': + description: Access is unauthorized. + content: + application/json: + schema: + $ref: '#/components/schemas/OAuthError' + '403': + description: Access is forbidden. + content: + application/json: + schema: + $ref: '#/components/schemas/OAuthError' + '404': + description: The server cannot find the requested resource. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - Chats + x-requirements: + scope: chats:archive + /chats/{id}/group_tags: post: - operationId: ChatMemberOperations_addMembers + operationId: ChatMemberOperations_addTags description: |- - Добавление пользователей + Добавление тегов - Добавляет сотрудников и ботов в беседу, канал или тред. Бота добавляют так же, как сотрудника: его `id` в `member_ids`. В канале он получает роль редактора, а в беседе становится обычным участником — и только после этого может туда писать. + Привязывает теги к беседе или каналу, чтобы состав чата поддерживался сам. - Роль в чате назначается в момент добавления: владелец пространства и администратор становятся администраторами чата, остальные — обычными участниками. Дальше она сама не пересчитывается, и повышение сотрудника в пространстве ничего не меняет там, где он уже состоит. Менять роль нужно методом [Редактирование роли](PUT /chats/{id}/members/{user_id}). + После добавления тега все его участники автоматически становятся участниками чата. Состав участников тега и чата синхронизируется автоматически: при добавлении нового участника в тег он сразу появляется в чате, при удалении из тега — удаляется из чата. - Тех, кто уже состоит в чате, метод пропускает молча и ошибкой это не считает. А вот неизвестный или неактивный идентификатор останавливает весь запрос: метод отвечает `404` и перечисляет такие значения, никто при этом не добавляется. + Если хотя бы один из переданных тегов не найден, метод отвечает `404` и не привязывает ни одного. Тег, который к чату уже привязан, повторно не привязывается, а его участники всё равно догружаются в чат. - Добавить сразу целый отдел удобнее тегом — [Добавление тегов](POST /chats/{id}/group_tags): тогда состав чата поддерживается сам. + Привязать тег может участник закрытой беседы и любой сотрудник пространства в открытом чате, а отцепить — только владелец или администратор чата методом [Исключение тега](DELETE /chats/{id}/group_tags/{tag_id}). parameters: - name: id in: path required: true - description: Идентификатор чата (беседа, канал или чат треда) + description: Идентификатор чата schema: type: integer format: int32 @@ -1716,20 +2236,20 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/AddMembersRequest' + $ref: '#/components/schemas/AddTagsRequest' x-requirements: scope: chat_members:write - /chats/{id}/members/{user_id}: + /chats/{id}/group_tags/{tag_id}: delete: - operationId: ChatMemberOperations_removeMember + operationId: ChatMemberOperations_removeTag description: |- - Исключение пользователя + Исключение тега - Убирает сотрудника или бота из беседы, канала или треда. Из треда исключают по его `chat_id`. В закрытой беседе исключённый теряет доступ к чату, но остаётся в тредах, где состоял. + Отцепляет тег от беседы или канала и выводит оттуда сотрудников, которых держал только он. - Сотрудника, которого держит в чате привязанный тег, этим методом убрать нельзя: ответ придёт успешный, а сотрудник останется в чате. Снимите с него тег методом [Редактирование сотрудника](PUT /users/{id}) или отцепите тег от чата методом [Исключение тега](DELETE /chats/{id}/group_tags/{tag_id}). + Выход происходит фоном, уже после ответа: метод отвечает `204` сразу, а состав чата меняется через несколько мгновений. Останутся владелец чата, те, кого приводит другой тег этого же чата, и те, кого добавляли в чат вручную. - Если пользователь является владельцем чата, то исключить его нельзя. Он может только самостоятельно выйти из чата, воспользовавшись методом [Выход из чата](DELETE /chats/{id}/leave). + Снять тег с чата может владелец или администратор чата. Привязать его обратно можно методом [Добавление тегов](POST /chats/{id}/group_tags). parameters: - name: id in: path @@ -1740,15 +2260,15 @@ paths: format: int32 example: 334 example: 334 - - name: user_id + - name: tag_id in: path required: true - description: Идентификатор пользователя + description: Идентификатор тега schema: type: integer format: int32 - example: 186 - example: 186 + example: 86 + example: 86 responses: '204': description: 'There is no content to send for this request, but the headers may be useful. ' @@ -1774,16 +2294,17 @@ paths: - Members x-requirements: scope: chat_members:write - put: - operationId: ChatMemberOperations_updateMemberRole + /chats/{id}/leave: + delete: + operationId: ChatMemberOperations_leaveChat description: |- - Редактирование роли + Выход из чата - Меняет роль участника беседы или канала. Роль в чате с ролью в пространстве не связана: рядовой сотрудник может быть администратором чата, а повышение в пространстве роли в чатах не меняет. + Владелец токена выходит из беседы, канала или треда сам. Из треда выходят по его `chat_id`. В закрытой беседе остальные видят системное сообщение о выходе, в открытом чате и канале — нет. - Роль `editor` существует только в каналах. Себе роль сменить нельзя, как и тому, кто в чате не состоит: метод ответит ошибкой. Повторная установка той же роли считается ошибкой, а не повтором. + Выйти нельзя, если сотрудника держит в чате привязанный тег: метод ответит `403`, пока тег не снимут с сотрудника или с чата. Из личной переписки выйти тоже нельзя, а вот из архивного чата можно. - Владельцу чата роль изменить нельзя. Он всегда имеет права администратора чата. + Вернуться в открытый чат можно самому, в закрытый — только если кто-то из участников добавит обратно. Другого сотрудника выводит [Исключение пользователя](DELETE /chats/{id}/members/{user_id}). parameters: - name: id in: path @@ -1794,15 +2315,6 @@ paths: format: int32 example: 334 example: 334 - - name: user_id - in: path - required: true - description: Идентификатор пользователя - schema: - type: integer - format: int32 - example: 186 - example: 186 responses: '204': description: 'There is no content to send for this request, but the headers may be useful. ' @@ -1838,23 +2350,19 @@ paths: $ref: '#/components/schemas/ApiError' tags: - Members - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateMemberRoleRequest' x-requirements: - scope: chat_members:write - /chats/{id}/unarchive: - put: - operationId: ChatOperations_unarchiveChat + scope: chats:leave + /chats/{id}/members: + get: + operationId: ChatMemberOperations_listMembers description: |- - Разархивация чата + Список участников чата - Возвращает беседу или канал из архива: чат снова появляется в списках, и в него снова можно писать. + Кто состоит в беседе, канале или треде. Боты приходят наравне с сотрудниками, с `bot: true`. - Если чат и так не в архиве, метод всё равно отвечает успехом. + Владелец пространства может получить состав участников любого чата пространства. Администраторы и боты получают состав только тех чатов, где состоят сами, и открытых чатов пространства. + + В выдачу попадают только действующие сотрудники: приостановленные не приходят, хотя членство у них сохраняется. Роль участника в чате метод не отдаёт — параметр `role` работает только как фильтр. parameters: - name: id in: path @@ -1865,75 +2373,41 @@ paths: format: int32 example: 334 example: 334 + - name: role + in: query + required: false + description: Роль в чате + schema: + allOf: + - $ref: '#/components/schemas/ChatMemberRoleFilter' + default: all + example: all + explode: false + - name: limit + in: query + required: false + description: Количество возвращаемых сущностей за один запрос + schema: + type: integer + format: int32 + minimum: 1 + maximum: 50 + example: 1 + default: 50 + example: 1 + explode: false + - name: cursor + in: query + required: false + description: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`) + schema: + type: string + example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 + example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 + explode: false responses: - '204': - description: 'There is no content to send for this request, but the headers may be useful. ' - '401': - description: Access is unauthorized. - content: - application/json: - schema: - $ref: '#/components/schemas/OAuthError' - '403': - description: Access is forbidden. - content: - application/json: - schema: - $ref: '#/components/schemas/OAuthError' - '404': - description: The server cannot find the requested resource. - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' - tags: - - Chats - x-requirements: - scope: chats:archive - /company/bots: - get: - operationId: CompanyBotOperations_listCompanyBots - description: |- - Список ботов пространства - - Все боты пространства, включая тех, кто недоступен вам для редактирования. У таких ботов приходят только имя и ник, остальные настройки — `null`. - - Метод доступен владельцу пространства. Каждый запрос записывается в [журнал аудита событий](/guides/audit-events) с типом `company_bots_accessed`. - parameters: - - name: query - in: query - required: false - description: Поисковая фраза для фильтрации ботов по имени - schema: - type: string - example: задач - example: задач - explode: false - - name: limit - in: query - required: false - description: Количество возвращаемых сущностей за один запрос - schema: - type: integer - format: int32 - minimum: 1 - maximum: 50 - example: 1 - default: 50 - example: 1 - explode: false - - name: cursor - in: query - required: false - description: Курсор для пагинации (из `meta.paginate.next_page`) - schema: - type: string - example: eyJpZCI6MTczODgxNn0 - example: eyJpZCI6MTczODgxNn0 - explode: false - responses: - '200': - description: The request has succeeded. + '200': + description: The request has succeeded. content: application/json: schema: @@ -1945,55 +2419,10 @@ paths: data: type: array items: - $ref: '#/components/schemas/CompanyBotResponse' + $ref: '#/components/schemas/User' meta: $ref: '#/components/schemas/PaginationMeta' description: Обертка ответа с данными и пагинацией - example: - data: - - id: 1738816 - webhook: - name: Бот задач - nickname: tasks_bot - outgoing_url: https://www.website.com/tasks/new - events: - - message_new - trigger_on: commands - commands: - - /task - scopes: - - messages:create - template: Заказ от {{ client }} на сумму {{ amount }} ₽ - template_engine: liquid - challenge_key: challenge - link_preview_enabled: true - ignore_self_messages: false - events_history_enabled: false - single_chat: false - can_edit: - - admin - who_can_add: creator - - id: 1738817 - webhook: - name: Бот релизов - nickname: release_bot - outgoing_url: null - events: null - trigger_on: null - commands: null - scopes: null - template: null - template_engine: null - challenge_key: null - link_preview_enabled: null - ignore_self_messages: null - events_history_enabled: null - single_chat: null - can_edit: null - who_can_add: null - meta: - paginate: - next_page: eyJpZCI6MTczODgxN30 '400': description: The server could not understand the request due to invalid syntax. content: @@ -2006,87 +2435,56 @@ paths: application/json: schema: $ref: '#/components/schemas/OAuthError' - '402': - description: Client error + '403': + description: Access is forbidden. + content: + application/json: + schema: + $ref: '#/components/schemas/OAuthError' + '404': + description: The server cannot find the requested resource. content: application/json: schema: $ref: '#/components/schemas/ApiError' - '403': - description: Access is forbidden. + '422': + description: Client error content: application/json: schema: - anyOf: - - $ref: '#/components/schemas/ApiError' - - $ref: '#/components/schemas/OAuthError' + $ref: '#/components/schemas/ApiError' tags: - - Bots + - Members x-paginated: true x-requirements: - scope: company_bots:read - plan: corporation - /company/chats: - get: - operationId: CompanyChatOperations_listCompanyChats + scope: chat_members:read + post: + operationId: ChatMemberOperations_addMembers description: |- - Список чатов пространства + Добавление пользователей - Беседы и каналы всего пространства, включая закрытые, где вы не состоите участником. Личные переписки и треды не возвращаются. + Добавляет сотрудников и ботов в беседу, канал или тред. Бота добавляют так же, как сотрудника: его `id` в `member_ids`. В канале он получает роль редактора, а в беседе становится обычным участником — и только после этого может туда писать. - По умолчанию отдаются и активные, и архивные чаты. Параметр `activity` оставляет в выдаче только одно из состояний. + Роль в чате назначается в момент добавления: владелец пространства и администратор становятся администраторами чата, остальные — обычными участниками. Дальше она сама не пересчитывается, и повышение сотрудника в пространстве ничего не меняет там, где он уже состоит. Менять роль нужно методом [Редактирование роли](PUT /chats/{id}/members/{user_id}). - Метод доступен владельцу пространства. Каждый запрос записывается в [журнал аудита событий](/guides/audit-events) с типом `company_chats_accessed`. + Тех, кто уже состоит в чате, метод пропускает молча и ошибкой это не считает. А вот неизвестный или неактивный идентификатор останавливает весь запрос: метод отвечает `404` и перечисляет такие значения, никто при этом не добавляется. + + Бота добавляет только тот, кому это разрешает настройка бота «Кто может добавлять бота в чаты» — подробнее в разделе [Настройки бота](/guides/bots/settings#kto-mozhet-dobavlyat-bota-v-chaty). Если в `member_ids` есть бот, которого вам добавлять нельзя, метод не добавляет никого и отвечает `403` с кодом `bot_add_denied` и идентификаторами таких ботов в `value`. Если в том же запросе есть и неизвестный идентификатор, ответ — `404` с обеими ошибками. + + Добавить сразу целый отдел удобнее тегом — [Добавление тегов](POST /chats/{id}/group_tags): тогда состав чата поддерживается сам. parameters: - - name: activity - in: query - required: false - description: Состояние чатов. Если параметр не указан, возвращаются и активные, и архивные чаты. - schema: - $ref: '#/components/schemas/ChatActivity' - example: active - example: active - explode: false - - name: limit - in: query - required: false - description: Количество возвращаемых сущностей за один запрос + - name: id + in: path + required: true + description: Идентификатор чата (беседа, канал или чат треда) schema: type: integer format: int32 - minimum: 1 - maximum: 50 - example: 1 - default: 50 - example: 1 - explode: false - - name: cursor - in: query - required: false - description: Курсор для пагинации (из `meta.paginate.next_page`) - schema: - type: string - example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 - example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 - explode: false + example: 334 + example: 334 responses: - '200': - description: The request has succeeded. - content: - application/json: - schema: - type: object - required: - - data - - meta - properties: - data: - type: array - items: - $ref: '#/components/schemas/Chat' - meta: - $ref: '#/components/schemas/PaginationMeta' - description: Обертка ответа с данными и пагинацией + '204': + description: 'There is no content to send for this request, but the headers may be useful. ' '400': description: The server could not understand the request due to invalid syntax. content: @@ -2099,12 +2497,6 @@ paths: application/json: schema: $ref: '#/components/schemas/OAuthError' - '402': - description: Client error - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' '403': description: Access is forbidden. content: @@ -2113,48 +2505,115 @@ paths: anyOf: - $ref: '#/components/schemas/ApiError' - $ref: '#/components/schemas/OAuthError' + '404': + description: The server cannot find the requested resource. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' tags: - - Chats - x-paginated: true + - Members + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AddMembersRequest' x-requirements: - scope: company_chats:read - plan: corporation - /custom_properties: - get: - operationId: CommonOperations_listProperties + scope: chat_members:write + /chats/{id}/members/{user_id}: + delete: + operationId: ChatMemberOperations_removeMember description: |- - Список дополнительных полей + Исключение пользователя - Схема дополнительных полей пространства: идентификатор, название и тип каждого. Такие поля доступны только для сотрудников и напоминаний, наборы у них независимые, а нужный выбирает параметр `entity_type`. Значения приходят в самой сущности — в карточке сотрудника или в напоминании. Идентификаторы отсюда нужны, чтобы эти значения задавать. + Убирает сотрудника или бота из беседы, канала или треда. Из треда исключают по его `chat_id`. В закрытой беседе исключённый теряет доступ к чату, но остаётся в тредах, где состоял. - Поля типов «Файл» и «Множественный выбор» через API недоступны и в выдачу не попадают. Базовые поля карточки — имя, телефон, почта, отдел, теги — тоже: это не дополнительные поля. + Сотрудника, которого держит в чате привязанный тег, этим методом убрать нельзя: ответ придёт успешный, а сотрудник останется в чате. Снимите с него тег методом [Редактирование сотрудника](PUT /users/{id}) или отцепите тег от чата методом [Исключение тега](DELETE /chats/{id}/group_tags/{tag_id}). - Набор полей задаёт администратор пространства, он же их переименовывает и удаляет. Поэтому список стоит перечитывать перед работой: обращение к полю, которого уже нет, возвращает ошибку. + Если пользователь является владельцем чата, то исключить его нельзя. Он может только самостоятельно выйти из чата, воспользовавшись методом [Выход из чата](DELETE /chats/{id}/leave). parameters: - - name: entity_type - in: query + - name: id + in: path required: true - description: Тип сущности + description: Идентификатор чата schema: - $ref: '#/components/schemas/SearchEntityType' - example: User - example: User - explode: false - responses: - '200': - description: The request has succeeded. + type: integer + format: int32 + example: 334 + example: 334 + - name: user_id + in: path + required: true + description: Идентификатор пользователя + schema: + type: integer + format: int32 + example: 186 + example: 186 + responses: + '204': + description: 'There is no content to send for this request, but the headers may be useful. ' + '401': + description: Access is unauthorized. content: application/json: schema: - type: object - required: - - data - properties: - data: - type: array - items: - $ref: '#/components/schemas/CustomPropertyDefinition' - description: Обертка ответа с данными + $ref: '#/components/schemas/OAuthError' + '403': + description: Access is forbidden. + content: + application/json: + schema: + $ref: '#/components/schemas/OAuthError' + '404': + description: The server cannot find the requested resource. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - Members + x-requirements: + scope: chat_members:write + put: + operationId: ChatMemberOperations_updateMemberRole + description: |- + Редактирование роли + + Меняет роль участника беседы или канала. Роль в чате с ролью в пространстве не связана: рядовой сотрудник может быть администратором чата, а повышение в пространстве роли в чатах не меняет. + + Роль `editor` существует только в каналах. Себе роль сменить нельзя, как и тому, кто в чате не состоит: метод ответит ошибкой. Повторная установка той же роли считается ошибкой, а не повтором. + + Владельцу чата роль изменить нельзя. Он всегда имеет права администратора чата. + parameters: + - name: id + in: path + required: true + description: Идентификатор чата + schema: + type: integer + format: int32 + example: 334 + example: 334 + - name: user_id + in: path + required: true + description: Идентификатор пользователя + schema: + type: integer + format: int32 + example: 186 + example: 186 + responses: + '204': + description: 'There is no content to send for this request, but the headers may be useful. ' '400': description: The server could not understand the request due to invalid syntax. content: @@ -2167,18 +2626,18 @@ paths: application/json: schema: $ref: '#/components/schemas/OAuthError' - '402': - description: Client error - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' '403': description: Access is forbidden. content: application/json: schema: $ref: '#/components/schemas/OAuthError' + '404': + description: The server cannot find the requested resource. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' '422': description: Client error content: @@ -2186,62 +2645,83 @@ paths: schema: $ref: '#/components/schemas/ApiError' tags: - - Custom Properties + - Members + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateMemberRoleRequest' x-requirements: - scope: custom_properties:read - /direct_url: - post: - operationId: DirectUploadOperations_uploadFile + scope: chat_members:write + /chats/{id}/unarchive: + put: + operationId: ChatOperations_unarchiveChat description: |- - Загрузка файла + Разархивация чата - Второй шаг загрузки: сам файл уходит в хранилище формой `multipart/form-data`. Поля формы и адрес берутся из ответа метода [Получение подписи, ключа и других параметров](POST /uploads) и передаются как есть, в том же порядке, а файл идёт последним полем. + Возвращает беседу или канал из архива: чат снова появляется в списках, и в него снова можно писать. - Запрос уходит не в API Пачки, а прямо в хранилище, и в ответ приходит `204` без тела. Дальше файл прикладывают, передав его `key` в поле `files` — в [Новое сообщение](POST /messages) или [Новый черновик](POST /drafts), а также при их правке. Имя файла в `name` должно иметь то же расширение, что и `key`, иначе сообщение будет отклонено. - parameters: [] + Если чат и так не в архиве, метод всё равно отвечает успехом. + parameters: + - name: id + in: path + required: true + description: Идентификатор чата + schema: + type: integer + format: int32 + example: 334 + example: 334 responses: '204': description: 'There is no content to send for this request, but the headers may be useful. ' + '401': + description: Access is unauthorized. + content: + application/json: + schema: + $ref: '#/components/schemas/OAuthError' + '403': + description: Access is forbidden. + content: + application/json: + schema: + $ref: '#/components/schemas/OAuthError' + '404': + description: The server cannot find the requested resource. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' tags: - - Files - requestBody: - required: true - content: - multipart/form-data: - schema: - $ref: '#/components/schemas/FileUploadRequest' - x-external-url: directUrl + - Chats x-requirements: - auth: false - /drafts: - post: - operationId: DraftOperations_createDraft + scope: chats:archive + /chats/{id}/unread: + put: + operationId: ChatOperations_markChatUnread description: |- - Новый черновик - - Кладёт черновик в беседу, тред или личную переписку. В интерфейсе Пачки он появляется в поле ввода этого чата, где сотрудник его допишет и отправит. Этим же методом создаётся отложенное сообщение: с полем `schedule` черновик уходит сам в назначенное время, без него просто лежит. Сам метод ничего не отправляет, для отправки есть [Новое сообщение](POST /messages). - - Черновик виден только своему автору — его не видит ни собеседник, ни администратор пространства. Обычный черновик в чате может быть только один. Повторный вызов отвечает `409` с кодом `already_exists` и номером существующего в `payload.draft_id`. Дописывают его методом [Редактирование черновика](PUT /drafts/{id}). Отложенных сообщений на один чат — не больше 50. + Отметка чата непрочитанным - Для треда в `entity_id` передают идентификатор самого треда, а не сообщения, под которым он висит. Личной переписки с сотрудником может ещё не быть — тогда она заводится сама, как при обычной отправке сообщения. + Помечает чат непрочитанным для владельца токена, как «Отметить непрочитанным» в интерфейсе. Меняется только его собственный счётчик, остальные участники ничего не замечают. - Пустой черновик создать нельзя: нужен либо текст, либо вложения. + Без `message_id` непрочитанным становится последнее сообщение чата, с `message_id` — это сообщение и все после него. Повторный запрос с тем же сообщением ничего не меняет, а в чате без сообщений метод отвечает успехом и ничего не делает. - Токенам ботов метод недоступен. - parameters: [] + Работает в беседах, каналах, личных чатах и тредах, где владелец токена состоит. Скрытый личный чат снова появляется в списке. На чат, где владельца токена нет, и на сообщение из другого чата метод отвечает `404`. + parameters: + - name: id + in: path + required: true + description: Идентификатор чата или треда + schema: + type: integer + format: int32 + example: 334 + example: 334 responses: - '201': - description: The request has succeeded and a new resource has been created as a result. - content: - application/json: - schema: - type: object - required: - - data - properties: - data: - $ref: '#/components/schemas/Draft' - description: Обертка ответа с данными + '204': + description: 'There is no content to send for this request, but the headers may be useful. ' '400': description: The server could not understand the request due to invalid syntax. content: @@ -2274,67 +2754,36 @@ paths: application/json: schema: $ref: '#/components/schemas/ApiError' - '409': - description: The request conflicts with the current state of the server. - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' - '422': - description: Client error - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' tags: - - Drafts + - Chats requestBody: - required: true + required: false content: application/json: schema: - $ref: '#/components/schemas/DraftCreateRequest' + $ref: '#/components/schemas/MarkChatUnreadRequest' + example: + message_id: 1194275 x-requirements: - scope: drafts:write + scope: chats:mark_unread + /company/bots: get: - operationId: DraftOperations_listDrafts + operationId: CompanyBotOperations_listCompanyBots description: |- - Список черновиков - - Свои черновики, от новых к старым. + Список ботов пространства - По умолчанию возвращаются только обычные черновики: отложенные нужно запросить параметром `type`. Отличить их в ответе можно по полю `schedule`. + Все боты пространства, включая тех, кто недоступен вам для редактирования. У таких ботов приходят только имя и ник, остальные настройки — `null`. - Пара `entity_type` и `entity_id` сужает выдачу до одного чата, треда или личной переписки. Если такого чата нет или он недоступен, метод отвечает пустым списком, а не ошибкой. + Метод доступен владельцу пространства. Каждый запрос записывается в [журнал аудита событий](/guides/audit-events) с типом `company_bots_accessed`. parameters: - - name: type - in: query - required: false - description: 'Что возвращать: `regular` — обычные черновики, `scheduled` — отложенные сообщения, `all` — и те и другие' - schema: - allOf: - - $ref: '#/components/schemas/DraftType' - default: regular - example: all - explode: false - - name: entity_type - in: query - required: false - description: 'Тип чата для фильтра по одному чату. Указывается вместе с `entity_id`: если прислать только один из двух, ответ будет `422`.' - schema: - $ref: '#/components/schemas/MessageEntityType' - example: discussion - example: discussion - explode: false - - name: entity_id + - name: query in: query required: false - description: Идентификатор того, что названо в `entity_type`. Указывается вместе с ним. + description: Поисковая фраза для фильтрации ботов по имени schema: - type: integer - format: int32 - example: 334 - example: 334 + type: string + example: задач + example: задач explode: false - name: limit in: query @@ -2345,18 +2794,18 @@ paths: format: int32 minimum: 1 maximum: 50 - example: 25 + example: 1 default: 50 - example: 25 + example: 1 explode: false - name: cursor in: query required: false - description: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`) + description: Курсор для пагинации (из `meta.paginate.next_page`) schema: type: string - example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 - example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 + example: eyJpZCI6MTczODgxNn0 + example: eyJpZCI6MTczODgxNn0 explode: false responses: '200': @@ -2372,10 +2821,65 @@ paths: data: type: array items: - $ref: '#/components/schemas/Draft' + $ref: '#/components/schemas/CompanyBotResponse' meta: $ref: '#/components/schemas/PaginationMeta' description: Обертка ответа с данными и пагинацией + example: + data: + - id: 1738816 + oauth_client: + client_id: aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY + client_secret_preview: dGhpc19p...ZWNy + confidential: true + redirect_uris: + - https://example.com/oauth/callback + scopes: + - messages:read + - messages:create + webhook: + name: Бот задач + nickname: tasks_bot + outgoing_url: https://www.website.com/tasks/new + events: + - message_new + trigger_on: commands + commands: + - /task + scopes: + - messages:create + template: Заказ от {{ client }} на сумму {{ amount }} ₽ + template_engine: liquid + challenge_key: challenge + link_preview_enabled: true + ignore_self_messages: false + events_history_enabled: false + single_chat: false + can_edit: + - admin + who_can_add: creator + - id: 1738817 + oauth_client: null + webhook: + name: Бот релизов + nickname: release_bot + outgoing_url: null + events: null + trigger_on: null + commands: null + scopes: null + template: null + template_engine: null + challenge_key: null + link_preview_enabled: null + ignore_self_messages: null + events_history_enabled: null + single_chat: null + can_edit: null + who_can_add: null + meta: + paginate: + next_page: eyJpZCI6MTczODgxN30 '400': description: The server could not understand the request due to invalid syntax. content: @@ -2402,34 +2906,55 @@ paths: anyOf: - $ref: '#/components/schemas/ApiError' - $ref: '#/components/schemas/OAuthError' - '422': - description: Client error - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' tags: - - Drafts + - Bots x-paginated: true x-requirements: - scope: drafts:read - /drafts/{id}: + scope: company_bots:read + plan: corporation + /company/chats: get: - operationId: DraftOperations_getDraft + operationId: CompanyChatOperations_listCompanyChats description: |- - Информация о черновике + Список чатов пространства - Черновик. У отложенного сообщения сюда же приходит его расписание. + Беседы и каналы всего пространства, включая закрытые, где вы не состоите участником. Личные переписки и треды не возвращаются. + + По умолчанию отдаются и активные, и архивные чаты. Параметр `activity` оставляет в выдаче только одно из состояний. + + Метод доступен владельцу пространства. Каждый запрос записывается в [журнал аудита событий](/guides/audit-events) с типом `company_chats_accessed`. parameters: - - name: id - in: path - required: true - description: Идентификатор черновика + - name: activity + in: query + required: false + description: Состояние чатов. Если параметр не указан, возвращаются и активные, и архивные чаты. + schema: + $ref: '#/components/schemas/ChatActivity' + example: active + example: active + explode: false + - name: limit + in: query + required: false + description: Количество возвращаемых сущностей за один запрос schema: type: integer format: int32 - example: 4821 - example: 4821 + minimum: 1 + maximum: 50 + example: 1 + default: 50 + example: 1 + explode: false + - name: cursor + in: query + required: false + description: Курсор для пагинации (из `meta.paginate.next_page`) + schema: + type: string + example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 + example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 + explode: false responses: '200': description: The request has succeeded. @@ -2439,10 +2964,21 @@ paths: type: object required: - data + - meta properties: data: - $ref: '#/components/schemas/Draft' - description: Обертка ответа с данными + type: array + items: + $ref: '#/components/schemas/Chat' + meta: + $ref: '#/components/schemas/PaginationMeta' + description: Обертка ответа с данными и пагинацией + '400': + description: The server could not understand the request due to invalid syntax. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' '401': description: Access is unauthorized. content: @@ -2463,38 +2999,33 @@ paths: anyOf: - $ref: '#/components/schemas/ApiError' - $ref: '#/components/schemas/OAuthError' - '404': - description: The server cannot find the requested resource. - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' tags: - - Drafts + - Chats + x-paginated: true x-requirements: - scope: drafts:read - put: - operationId: DraftOperations_updateDraft + scope: company_chats:read + plan: corporation + /custom_properties: + get: + operationId: CommonOperations_listProperties description: |- - Редактирование черновика - - Меняет свой черновик: текст, вложения, расписание и сообщение, ответом на которое он уйдёт (`parent_message_id`). Перезаписываются только переданные поля, поэтому дописать текст, не трогая вложения, можно одним `content`. + Список дополнительных полей - Обычный черновик превращается в отложенное сообщение, если передать `schedule`. Обратный переход запрещён: `schedule: null` у отложенного отвечает `422` с кодом `draft_type_change_forbidden`. Чтобы отменить отправку, черновик убирают методом [Удаление черновика](DELETE /drafts/{id}). + Схема дополнительных полей пространства: идентификатор, название и тип каждого. Такие поля доступны только для сотрудников и напоминаний, наборы у них независимые, а нужный выбирает параметр `entity_type`. Значения приходят в самой сущности — в карточке сотрудника или в напоминании. Идентификаторы отсюда нужны, чтобы эти значения задавать. - Править можно, только пока в чат разрешено писать. Если доступ к чату потерян, редактирование ответит `403`, а удаление всё равно сработает. + Поля типов «Файл» и «Множественный выбор» через API недоступны и в выдачу не попадают. Базовые поля карточки — имя, телефон, почта, отдел, теги — тоже: это не дополнительные поля. - Чат черновика этим методом не меняется, `entity_type` и `entity_id` он не принимает. Чтобы перенести черновик в другой чат, создайте новый и удалите прежний. + Набор полей задаёт администратор пространства, он же их переименовывает и удаляет. Поэтому список стоит перечитывать перед работой: обращение к полю, которого уже нет, возвращает ошибку. parameters: - - name: id - in: path + - name: entity_type + in: query required: true - description: Идентификатор черновика + description: Тип сущности schema: - type: integer - format: int32 - example: 4821 - example: 4821 + $ref: '#/components/schemas/SearchEntityType' + example: User + example: User + explode: false responses: '200': description: The request has succeeded. @@ -2506,7 +3037,9 @@ paths: - data properties: data: - $ref: '#/components/schemas/Draft' + type: array + items: + $ref: '#/components/schemas/CustomPropertyDefinition' description: Обертка ответа с данными '400': description: The server could not understand the request due to invalid syntax. @@ -2531,15 +3064,7 @@ paths: content: application/json: schema: - anyOf: - - $ref: '#/components/schemas/ApiError' - - $ref: '#/components/schemas/OAuthError' - '404': - description: The server cannot find the requested resource. - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' + $ref: '#/components/schemas/OAuthError' '422': description: Client error content: @@ -2547,36 +3072,68 @@ paths: schema: $ref: '#/components/schemas/ApiError' tags: - - Drafts + - Custom Properties + x-requirements: + scope: custom_properties:read + /direct_url: + post: + operationId: DirectUploadOperations_uploadFile + description: |- + Загрузка файла + + Второй шаг загрузки: сам файл уходит в хранилище формой `multipart/form-data`. Поля формы и адрес берутся из ответа метода [Получение подписи, ключа и других параметров](POST /uploads) и передаются как есть, в том же порядке, а файл идёт последним полем. + + Запрос уходит не в API Пачки, а прямо в хранилище, и в ответ приходит `204` без тела. Дальше файл прикладывают, передав его `key` в поле `files` — в [Новое сообщение](POST /messages) или [Новый черновик](POST /drafts), а также при их правке. Имя файла в `name` должно иметь то же расширение, что и `key`, иначе сообщение будет отклонено. + parameters: [] + responses: + '204': + description: 'There is no content to send for this request, but the headers may be useful. ' + tags: + - Files requestBody: required: true content: - application/json: + multipart/form-data: schema: - $ref: '#/components/schemas/DraftUpdateRequest' + $ref: '#/components/schemas/FileUploadRequest' + x-external-url: directUrl x-requirements: - scope: drafts:write - delete: - operationId: DraftOperations_deleteDraft + auth: false + /drafts: + post: + operationId: DraftOperations_createDraft description: |- - Удаление черновика + Новый черновик - Убирает свой черновик насовсем: восстановить его нельзя, вложения удаляются вместе с ним. У отложенного сообщения удаление и есть отмена отправки. + Кладёт черновик в беседу, тред или личную переписку. В интерфейсе Пачки он появляется в поле ввода этого чата, где сотрудник его допишет и отправит. Этим же методом создаётся отложенное сообщение: с полем `schedule` черновик уходит сам в назначенное время, без него просто лежит. Сам метод ничего не отправляет, для отправки есть [Новое сообщение](POST /messages). - Работает, даже если в чат уже нельзя писать. Повторный вызов отвечает `404`. - parameters: - - name: id - in: path - required: true - description: Идентификатор черновика - schema: - type: integer - format: int32 - example: 4821 - example: 4821 + Черновик виден только своему автору — его не видит ни собеседник, ни администратор пространства. Обычный черновик в чате может быть только один. Повторный вызов отвечает `409` с кодом `already_exists` и номером существующего в `payload.draft_id`. Дописывают его методом [Редактирование черновика](PUT /drafts/{id}). Отложенных сообщений на один чат — не больше 50. + + Для треда в `entity_id` передают идентификатор самого треда, а не сообщения, под которым он висит. Личной переписки с сотрудником может ещё не быть — тогда она заводится сама, как при обычной отправке сообщения. + + Пустой черновик создать нельзя: нужен либо текст, либо вложения. + + Токенам ботов метод недоступен. + parameters: [] responses: - '204': - description: 'There is no content to send for this request, but the headers may be useful. ' + '201': + description: The request has succeeded and a new resource has been created as a result. + content: + application/json: + schema: + type: object + required: + - data + properties: + data: + $ref: '#/components/schemas/Draft' + description: Обертка ответа с данными + '400': + description: The server could not understand the request due to invalid syntax. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' '401': description: Access is unauthorized. content: @@ -2603,135 +3160,6 @@ paths: application/json: schema: $ref: '#/components/schemas/ApiError' - tags: - - Drafts - x-requirements: - scope: drafts:write - /files/{id}: - get: - operationId: FileOperations_downloadFile - description: |- - Скачивание файла - - Отдаёт сам файл, а не ссылку на него. Нужен для вложений, у которых прямой ссылки на хранилище нет: в поле `url` у них стоит адрес этого метода, и открыть его можно только с токеном. Так отдаются зашифрованные файлы и отправленные из безопасного контура пространства — обе настройки описаны в разделе [Шифрование и безопасный контур](/guides/data-protection). - - Отказ приходит `403` с кодом `confidential_download_denied`. Сверяется при этом адрес, с которого пришёл запрос, то есть адрес вашего сервера, а не сотрудника, чьим токеном вы пользуетесь: для серверной интеграции это самая частая причина отказа. - - Ответ — тело файла и заголовок `Content-Disposition` с его именем, а не `JSON`. Зашифрованный файл расшифровывается на лету и приходит вложением целиком: `target` для него не действует. Если расшифровать не удалось, ответ — `400` с кодом `decryption_failed`. - - Вложение сообщения доступно тому, кто видит само сообщение, а вложение черновика — только его автору. - parameters: - - name: id - in: path - required: true - description: Идентификатор файла из поля `id` вложения - schema: - type: integer - format: int32 - example: 3560 - example: 3560 - - name: target - in: query - required: false - description: 'Что отдать вместо исходного файла: `pdf_preview` — документ, переведённый в PDF, `pdf_first_page` — первая страница картинкой, `thumb` — уменьшенная копия изображения, `image` — изображение как есть. Без параметра приходит исходный файл. Вариант, которого у этого файла нет, приводит к `400`.' - schema: - $ref: '#/components/schemas/FileTarget' - example: thumb - example: thumb - explode: false - responses: - '200': - description: The request has succeeded. - content: - application/octet-stream: - schema: - type: string - format: binary - '400': - description: The server could not understand the request due to invalid syntax. - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' - '401': - description: Access is unauthorized. - content: - application/json: - schema: - $ref: '#/components/schemas/OAuthError' - '402': - description: Client error - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' - '403': - description: Access is forbidden. - content: - application/json: - schema: - anyOf: - - $ref: '#/components/schemas/ApiError' - - $ref: '#/components/schemas/OAuthError' - '404': - description: The server cannot find the requested resource. - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' - tags: - - Files - x-requirements: - scope: files:read - /group_tags: - post: - operationId: GroupTagOperations_createTag - description: |- - Новый тег - - Создаёт тег. Тег — это способ держать состав чатов сам собой: его привязывают к беседе или каналу, и все, у кого этот тег есть, оказываются там автоматически. - - Сотрудников в тег добавляют не здесь, а в карточке каждого — [Редактирование сотрудника](PUT /users/{id}) с полем `list_tags`. Свежий тег создаётся пустым, с `users_count: 0`. К чату его привязывает метод [Добавление тегов](POST /chats/{id}/group_tags). - - Название уникально в пространстве без учёта регистра и не может содержать `@`. Создавать теги могут владелец пространства и администратор, боту метод недоступен. - parameters: [] - responses: - '201': - description: The request has succeeded and a new resource has been created as a result. - content: - application/json: - schema: - type: object - required: - - data - properties: - data: - $ref: '#/components/schemas/GroupTag' - description: Обертка ответа с данными - '400': - description: The server could not understand the request due to invalid syntax. - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' - '401': - description: Access is unauthorized. - content: - application/json: - schema: - $ref: '#/components/schemas/OAuthError' - '402': - description: Client error - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' - '403': - description: Access is forbidden. - content: - application/json: - schema: - $ref: '#/components/schemas/OAuthError' '409': description: The request conflicts with the current state of the server. content: @@ -2745,38 +3173,55 @@ paths: schema: $ref: '#/components/schemas/ApiError' tags: - - Group tags + - Drafts requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/GroupTagRequest' + $ref: '#/components/schemas/DraftCreateRequest' x-requirements: - scope: group_tags:write + scope: drafts:write get: - operationId: GroupTagOperations_listTags + operationId: DraftOperations_listDrafts description: |- - Список тегов + Список черновиков - Все теги пространства с числом сотрудников в каждом. Видны они одинаково всем ролям, независимо от того, к каким чатам привязаны. + Свои черновики, от новых к старым. - Параметр `names` ищет теги по названиям — это способ получить `id` по имени, известному из интерфейса. За один запрос он принимает не больше 100 имён. + По умолчанию возвращаются только обычные черновики: отложенные нужно запросить параметром `type`. Отличить их в ответе можно по полю `schedule`. - Кто состоит в конкретном теге, отдаёт [Список сотрудников тега](GET /group_tags/{id}/users). + Пара `entity_type` и `entity_id` сужает выдачу до одного чата, треда или личной переписки. Если такого чата нет или он недоступен, метод отвечает пустым списком, а не ошибкой. parameters: - - name: names + - name: type in: query required: false - description: Массив названий тегов, по которым вы хотите отфильтровать список + description: 'Что возвращать: `regular` — обычные черновики, `scheduled` — отложенные сообщения, `all` — и те и другие' schema: - $ref: '#/components/schemas/TagNamesFilter' - example: - - Design - - Product - example: - - Design - - Product + allOf: + - $ref: '#/components/schemas/DraftType' + default: regular + example: all + explode: false + - name: entity_type + in: query + required: false + description: 'Тип чата для фильтра по одному чату. Указывается вместе с `entity_id`: если прислать только один из двух, ответ будет `422`.' + schema: + $ref: '#/components/schemas/MessageEntityType' + example: discussion + example: discussion + explode: false + - name: entity_id + in: query + required: false + description: Идентификатор того, что названо в `entity_type`. Указывается вместе с ним. + schema: + type: integer + format: int32 + example: 334 + example: 334 + explode: false - name: limit in: query required: false @@ -2786,9 +3231,9 @@ paths: format: int32 minimum: 1 maximum: 50 - example: 1 + example: 25 default: 50 - example: 1 + example: 25 explode: false - name: cursor in: query @@ -2813,7 +3258,7 @@ paths: data: type: array items: - $ref: '#/components/schemas/GroupTag' + $ref: '#/components/schemas/Draft' meta: $ref: '#/components/schemas/PaginationMeta' description: Обертка ответа с данными и пагинацией @@ -2840,7 +3285,9 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/OAuthError' + anyOf: + - $ref: '#/components/schemas/ApiError' + - $ref: '#/components/schemas/OAuthError' '422': description: Client error content: @@ -2848,29 +3295,27 @@ paths: schema: $ref: '#/components/schemas/ApiError' tags: - - Group tags + - Drafts x-paginated: true x-requirements: - scope: group_tags:read - /group_tags/{id}: + scope: drafts:read + /drafts/{id}: get: - operationId: GroupTagOperations_getTag + operationId: DraftOperations_getDraft description: |- - Информация о теге - - Название тега и число сотрудников в нём. + Информация о черновике - В `users_count` считаются только действующие сотрудники: приостановленные в счётчик не попадают, хотя в методе [Список сотрудников тега](GET /group_tags/{id}/users) остаются. + Черновик. У отложенного сообщения сюда же приходит его расписание. parameters: - name: id in: path required: true - description: Идентификатор тега + description: Идентификатор черновика schema: type: integer format: int32 - example: 9111 - example: 9111 + example: 4821 + example: 4821 responses: '200': description: The request has succeeded. @@ -2882,7 +3327,7 @@ paths: - data properties: data: - $ref: '#/components/schemas/GroupTag' + $ref: '#/components/schemas/Draft' description: Обертка ответа с данными '401': description: Access is unauthorized. @@ -2901,7 +3346,9 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/OAuthError' + anyOf: + - $ref: '#/components/schemas/ApiError' + - $ref: '#/components/schemas/OAuthError' '404': description: The server cannot find the requested resource. content: @@ -2909,27 +3356,31 @@ paths: schema: $ref: '#/components/schemas/ApiError' tags: - - Group tags + - Drafts x-requirements: - scope: group_tags:read + scope: drafts:read put: - operationId: GroupTagOperations_updateTag + operationId: DraftOperations_updateDraft description: |- - Редактирование тега + Редактирование черновика - Переименовывает тег. Состав сотрудников и привязки к чатам при этом не меняются: у всех, кто был в теге, он остаётся, только под новым названием. + Меняет свой черновик: текст, вложения, расписание и сообщение, ответом на которое он уйдёт (`parent_message_id`). Перезаписываются только переданные поля, поэтому дописать текст, не трогая вложения, можно одним `content`. - Название уникально в пространстве без учёта регистра и не может содержать `@`. Переименовывать теги могут владелец пространства и администратор, боту метод недоступен. + Обычный черновик превращается в отложенное сообщение, если передать `schedule`. Обратный переход запрещён: `schedule: null` у отложенного отвечает `422` с кодом `draft_type_change_forbidden`. Чтобы отменить отправку, черновик убирают методом [Удаление черновика](DELETE /drafts/{id}). + + Править можно, только пока в чат разрешено писать. Если доступ к чату потерян, редактирование ответит `403`, а удаление всё равно сработает. + + Чат черновика этим методом не меняется, `entity_type` и `entity_id` он не принимает. Чтобы перенести черновик в другой чат, создайте новый и удалите прежний. parameters: - name: id in: path required: true - description: Идентификатор тега + description: Идентификатор черновика schema: type: integer format: int32 - example: 9111 - example: 9111 + example: 4821 + example: 4821 responses: '200': description: The request has succeeded. @@ -2941,7 +3392,7 @@ paths: - data properties: data: - $ref: '#/components/schemas/GroupTag' + $ref: '#/components/schemas/Draft' description: Обертка ответа с данными '400': description: The server could not understand the request due to invalid syntax. @@ -2966,19 +3417,15 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/OAuthError' + anyOf: + - $ref: '#/components/schemas/ApiError' + - $ref: '#/components/schemas/OAuthError' '404': description: The server cannot find the requested resource. content: application/json: schema: $ref: '#/components/schemas/ApiError' - '409': - description: The request conflicts with the current state of the server. - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' '422': description: Client error content: @@ -2986,35 +3433,33 @@ paths: schema: $ref: '#/components/schemas/ApiError' tags: - - Group tags + - Drafts requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/GroupTagRequest' + $ref: '#/components/schemas/DraftUpdateRequest' x-requirements: - scope: group_tags:write + scope: drafts:write delete: - operationId: GroupTagOperations_deleteTag + operationId: DraftOperations_deleteDraft description: |- - Удаление тега - - Убирает тег из пространства: он снимается со всех сотрудников и отвязывается от всех чатов. + Удаление черновика - Из чатов при этом никто не выходит. Сотрудники, которых тег привёл в беседу или канал, остаются там обычными участниками, и дальше их состав тегом уже не поддерживается. Чтобы вывести их из конкретного чата, пользуйтесь методом [Исключение тега](DELETE /chats/{id}/group_tags/{tag_id}) до удаления самого тега. + Убирает свой черновик насовсем: восстановить его нельзя, вложения удаляются вместе с ним. У отложенного сообщения удаление и есть отмена отправки. - Удалять теги могут владелец пространства и администратор, боту метод недоступен. + Работает, даже если в чат уже нельзя писать. Повторный вызов отвечает `404`. parameters: - name: id in: path required: true - description: Идентификатор тега + description: Идентификатор черновика schema: type: integer format: int32 - example: 9111 - example: 9111 + example: 4821 + example: 4821 responses: '204': description: 'There is no content to send for this request, but the headers may be useful. ' @@ -3035,7 +3480,9 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/OAuthError' + anyOf: + - $ref: '#/components/schemas/ApiError' + - $ref: '#/components/schemas/OAuthError' '404': description: The server cannot find the requested resource. content: @@ -3043,68 +3490,49 @@ paths: schema: $ref: '#/components/schemas/ApiError' tags: - - Group tags + - Drafts x-requirements: - scope: group_tags:write - /group_tags/{id}/users: + scope: drafts:write + /files/{id}: get: - operationId: GroupTagOperations_getTagUsers + operationId: FileOperations_downloadFile description: |- - Список сотрудников тега + Скачивание файла - Кто состоит в теге. Приостановленные сотрудники в списке приходят, хотя в `users_count` самого тега они не учтены. Удалённые не приходят, а боты, помеченные тегом, в выдачу попадают. + Отдаёт сам файл, а не ссылку на него. Нужен для вложений, у которых прямой ссылки на хранилище нет: в поле `url` у них стоит адрес этого метода, и открыть его можно только с токеном. Так отдаются зашифрованные файлы и отправленные из безопасного контура пространства — обе настройки описаны в разделе [Шифрование и безопасный контур](/guides/data-protection). - Состав тега меняют в карточке сотрудника — [Редактирование сотрудника](PUT /users/{id}) с полем `list_tags`, по одному сотруднику за раз. + Отказ приходит `403` с кодом `confidential_download_denied`. Сверяется при этом адрес, с которого пришёл запрос, то есть адрес вашего сервера, а не сотрудника, чьим токеном вы пользуетесь: для серверной интеграции это самая частая причина отказа. + + Ответ — тело файла и заголовок `Content-Disposition` с его именем, а не `JSON`. Зашифрованный файл расшифровывается на лету и приходит вложением целиком: `target` для него не действует. Если расшифровать не удалось, ответ — `400` с кодом `decryption_failed`. + + Вложение сообщения доступно тому, кто видит само сообщение, а вложение черновика — только его автору. parameters: - name: id in: path required: true - description: Идентификатор тега - schema: - type: integer - format: int32 - example: 9111 - example: 9111 - - name: limit - in: query - required: false - description: Количество возвращаемых сущностей за один запрос + description: Идентификатор файла из поля `id` вложения schema: type: integer format: int32 - minimum: 1 - maximum: 50 - example: 1 - default: 50 - example: 1 - explode: false - - name: cursor + example: 3560 + example: 3560 + - name: target in: query required: false - description: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`) + description: 'Что отдать вместо исходного файла: `pdf_preview` — документ, переведённый в PDF, `pdf_first_page` — первая страница картинкой, `thumb` — уменьшенная копия изображения, `image` — изображение как есть. Без параметра приходит исходный файл. Вариант, которого у этого файла нет, приводит к `400`.' schema: - type: string - example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 - example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 + $ref: '#/components/schemas/FileTarget' + example: thumb + example: thumb explode: false responses: '200': description: The request has succeeded. content: - application/json: + application/octet-stream: schema: - type: object - required: - - data - - meta - properties: - data: - type: array - items: - $ref: '#/components/schemas/User' - meta: - $ref: '#/components/schemas/PaginationMeta' - description: Обертка ответа с данными и пагинацией + type: string + format: binary '400': description: The server could not understand the request due to invalid syntax. content: @@ -3128,47 +3556,30 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/OAuthError' + anyOf: + - $ref: '#/components/schemas/ApiError' + - $ref: '#/components/schemas/OAuthError' '404': description: The server cannot find the requested resource. content: application/json: schema: $ref: '#/components/schemas/ApiError' - '422': - description: Client error - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' tags: - - Group tags - x-paginated: true + - Files x-requirements: - scope: group_tags:read - /messages: + scope: files:read + /group_tags: post: - operationId: MessageOperations_createMessage + operationId: GroupTagOperations_createTag description: |- - Новое сообщение - - Отправляет сообщение в беседу или канал, личное сообщение сотруднику или комментарий в тред. - - При использовании `entity_type: "discussion"` (или просто без указания `entity_type`) допускается отправка любого `chat_id` в поле `entity_id`. То есть сообщение можно отправить, зная только идентификатор чата. Сообщение в тред можно отправить и по идентификатору самого треда, а личное — по идентификатору сотрудника, но тогда нужно указать соответствующий `entity_type`: `thread` или `user`. - - Личный чат для этого создавать не требуется: он появится сам, если между вами ещё не было переписки. Между двумя сотрудниками может быть только один личный чат. Со своим собственным идентификатором сообщение уйдёт в чат с самим собой — туда же, куда сотрудник пишет заметки себе. - - Текст в поле `content` разбирается как markdown: жирный, курсив, зачёркнутый, строчный код, блок кода и ссылки. Списки и таблицы не разбираются — `-`, `1.` и `|` остаются как есть, у цитаты пропадает `>`, а строка с решёткой и пробелом становится жирной. Подробности — в разделе [Форматирование текста](/guides/markdown). - - `@all` упоминает всех участников чата, `@here` — тех, кто сейчас в сети, а `@` с названием тега без пробелов — сотрудников этого тега. В треде упоминание работает ещё и как приглашение: упомянутого сотрудника, которого в треде нет, Пачка туда добавляет, и он получает доступ к треду и родительскому сообщению. Чтобы этого не происходило, передайте `skip_invite_mentions: true`. В беседе и канале упоминание никого не добавляет, и этот параметр там ничего не меняет. - - Под текстом сообщения можно показать кнопки — массив `buttons`, где каждый вложенный массив это ряд. Работают они только у сообщений, отправленных токеном бота: нажатие на кнопку с `data` приходит событием `button_click` тому самому боту, а вместе с ним `trigger_id` — на открытие формы по нему есть 3 секунды, метод [Открытие представления](POST /views/open). Кнопка с `url` просто ведёт по ссылке и события не создаёт. Подробности в разделе [Кнопки](/guides/buttons). + Новый тег - Бот может подписать сообщение чужим именем и аватаром: `display_name` и `display_avatar_url` меняют отправителя только у этого сообщения. Бейдж «Бот» остаётся, а в профиле отправителя видно настоящего бота. Так показывают автора из другой системы, когда переносят в Пачку чужую переписку. С личным токеном поля недоступны, ответ `403`. Подробности — в разделе [Боты](/guides/bots/overview). + Создаёт тег. Тег — это способ держать состав чатов сам собой: его привязывают к беседе или каналу, и все, у кого этот тег есть, оказываются там автоматически. - К сообщению можно приложить не больше 10 файлов. Превью ссылки строится, только если передать `link_preview` в корне тела запроса. + Сотрудников в тег добавляют не здесь, а в карточке каждого — [Редактирование сотрудника](PUT /users/{id}) с полем `list_tags`. Свежий тег создаётся пустым, с `users_count: 0`. К чату его привязывает метод [Добавление тегов](POST /chats/{id}/group_tags). - Действует суточный предел на число сообщений в один чат от одного отправителя. При превышении метод отвечает `429`, а в заголовке `Retry-After` приходит пауза до следующей попытки. Значения пределов — в разделе [Лимиты](/api/limits). + Название уникально в пространстве без учёта регистра и не может содержать `@`. Создавать теги могут владелец пространства и администратор, боту метод недоступен. parameters: [] responses: '201': @@ -3181,7 +3592,7 @@ paths: - data properties: data: - $ref: '#/components/schemas/Message' + $ref: '#/components/schemas/GroupTag' description: Обертка ответа с данными '400': description: The server could not understand the request due to invalid syntax. @@ -3207,77 +3618,51 @@ paths: application/json: schema: $ref: '#/components/schemas/OAuthError' - '422': - description: Client error + '409': + description: The request conflicts with the current state of the server. content: application/json: schema: $ref: '#/components/schemas/ApiError' - '429': + '422': description: Client error - headers: - Retry-After: - required: true - schema: - type: integer - format: int32 content: application/json: schema: $ref: '#/components/schemas/ApiError' tags: - - Messages + - Group tags requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/MessageCreateRequest' + $ref: '#/components/schemas/GroupTagRequest' x-requirements: - scope: messages:create + scope: group_tags:write get: - operationId: ChatMessageOperations_listChatMessages + operationId: GroupTagOperations_listTags description: |- - Список сообщений чата - - Лента сообщений беседы, канала, треда или личной переписки — по `chat_id` нужного чата. + Список тегов - Сообщения приходят от новых к старым, то есть первыми идут последние сообщения чата. За более ранними обращайтесь с параметрами `limit` и `cursor`. + Все теги пространства с числом сотрудников в каждом, независимо от того, к каким чатам они привязаны. Мульти-гостю приходят только теги активных бесед и каналов, где он участник. - Удалённые сообщения в список не попадают. + Параметр `names` ищет теги по названиям — это способ получить `id` по имени, известному из интерфейса. За один запрос он принимает не больше 100 имён, на большее число метод отвечает `400` с кодом `too_long`. - Сообщения треда отдаются по `chat_id` самого треда, а не по чату, где висит родительское сообщение. Идентификатор треда приходит в поле `thread` родительского сообщения. + Кто состоит в конкретном теге, отдаёт [Список сотрудников тега](GET /group_tags/{id}/users). parameters: - - name: chat_id - in: query - required: true - description: Идентификатор чата (беседа, канал, диалог или чат треда) - schema: - type: integer - format: int32 - example: 198 - example: 198 - explode: false - - name: sort - in: query - required: false - description: Поле сортировки - schema: - allOf: - - $ref: '#/components/schemas/MessageSortField' - default: id - example: id - explode: false - - name: order + - name: names in: query required: false - description: Направление сортировки + description: Массив названий тегов, по которым вы хотите отфильтровать список schema: - allOf: - - $ref: '#/components/schemas/SortOrder' - default: desc - example: desc - explode: false + $ref: '#/components/schemas/TagNamesFilter' + example: + - Design + - Product + example: + - Design + - Product - name: limit in: query required: false @@ -3314,7 +3699,7 @@ paths: data: type: array items: - $ref: '#/components/schemas/Message' + $ref: '#/components/schemas/GroupTag' meta: $ref: '#/components/schemas/PaginationMeta' description: Обертка ответа с данными и пагинацией @@ -3342,12 +3727,6 @@ paths: application/json: schema: $ref: '#/components/schemas/OAuthError' - '404': - description: The server cannot find the requested resource. - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' '422': description: Client error content: @@ -3355,31 +3734,31 @@ paths: schema: $ref: '#/components/schemas/ApiError' tags: - - Messages + - Group tags x-paginated: true x-requirements: - scope: messages:read - /messages/{id}: + scope: group_tags:read + /group_tags/{id}: get: - operationId: MessageOperations_getMessage + operationId: GroupTagOperations_getTag description: |- - Информация о сообщении + Информация о теге - Сообщение вместе с автором, вложениями и кнопками. + Название тега и число сотрудников в нём. - Удалённое сообщение метод всё равно отдаёт — с пустым `content` и заполненным `deleted_at`, без файлов и реакций. + В `users_count` считаются только действующие сотрудники: приостановленные в счётчик не попадают, хотя в методе [Список сотрудников тега](GET /group_tags/{id}/users) остаются. - Ссылки на файлы в ответе временные. Обычный файл отдаётся прямой ссылкой на хранилище, а защищённый и зашифрованный — адресом API, по которому нужен токен со скоупом `files:read`. + Мульти-гостю доступны только теги, которые приходят ему в [Список тегов](GET /group_tags), а на остальные метод отвечает `404`. parameters: - name: id in: path required: true - description: Идентификатор сообщения + description: Идентификатор тега schema: type: integer format: int32 - example: 194275 - example: 194275 + example: 9111 + example: 9111 responses: '200': description: The request has succeeded. @@ -3391,7 +3770,7 @@ paths: - data properties: data: - $ref: '#/components/schemas/Message' + $ref: '#/components/schemas/GroupTag' description: Обертка ответа с данными '401': description: Access is unauthorized. @@ -3418,29 +3797,27 @@ paths: schema: $ref: '#/components/schemas/ApiError' tags: - - Messages + - Group tags x-requirements: - scope: messages:read + scope: group_tags:read put: - operationId: MessageOperations_updateMessage + operationId: GroupTagOperations_updateTag description: |- - Редактирование сообщения - - Меняет текст, файлы и кнопки уже отправленного сообщения. В интерфейсе у него появляется пометка о правке. + Редактирование тега - Править можно только свои сообщения, и только обычные: системное, пересланное и голосовое метод не меняет. Ограничений по давности отправки нет. + Переименовывает тег. Состав сотрудников и привязки к чатам при этом не меняются: у всех, кто был в теге, он остаётся, только под новым названием. - Файлы и кнопки заменяются целиком: пустой массив снимает их все, а отсутствие поля в теле оставляет как было. Любая правка убирает превью ссылок, и заново оно не строится. + Название уникально в пространстве без учёта регистра и не может содержать `@`. Переименовывать теги могут владелец пространства и администратор, боту метод недоступен. parameters: - name: id in: path required: true - description: Идентификатор сообщения + description: Идентификатор тега schema: type: integer format: int32 - example: 194275 - example: 194275 + example: 9111 + example: 9111 responses: '200': description: The request has succeeded. @@ -3452,7 +3829,7 @@ paths: - data properties: data: - $ref: '#/components/schemas/Message' + $ref: '#/components/schemas/GroupTag' description: Обертка ответа с данными '400': description: The server could not understand the request due to invalid syntax. @@ -3484,6 +3861,12 @@ paths: application/json: schema: $ref: '#/components/schemas/ApiError' + '409': + description: The request conflicts with the current state of the server. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' '422': description: Client error content: @@ -3491,35 +3874,35 @@ paths: schema: $ref: '#/components/schemas/ApiError' tags: - - Messages + - Group tags requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/MessageUpdateRequest' + $ref: '#/components/schemas/GroupTagRequest' x-requirements: - scope: messages:update + scope: group_tags:write delete: - operationId: MessageOperations_deleteMessage + operationId: GroupTagOperations_deleteTag description: |- - Удаление сообщения + Удаление тега - Удаление сообщения доступно отправителю, админам и редакторам в чате. В личных сообщениях оба пользователя являются редакторами. Ограничений по давности отправки сообщения нет. + Убирает тег из пространства: он снимается со всех сотрудников и отвязывается от всех чатов. - Текст, файлы и реакции пропадают у всех и не восстанавливаются, закрепление снимается, а в переписке на месте сообщения остаётся пометка «Сообщение удалено». + Из чатов при этом никто не выходит. Сотрудники, которых тег привёл в беседу или канал, остаются там обычными участниками, и дальше их состав тегом уже не поддерживается. Чтобы вывести их из конкретного чата, пользуйтесь методом [Исключение тега](DELETE /chats/{id}/group_tags/{tag_id}) до удаления самого тега. - Тред, заведённый под этим сообщением, остаётся вместе со всей перепиской в нём. Повторное удаление отвечает `204` и уже ничего не меняет. + Удалять теги могут владелец пространства и администратор, боту метод недоступен. parameters: - name: id in: path required: true - description: Идентификатор сообщения + description: Идентификатор тега schema: type: integer format: int32 - example: 194275 - example: 194275 + example: 9111 + example: 9111 responses: '204': description: 'There is no content to send for this request, but the headers may be useful. ' @@ -3548,33 +3931,70 @@ paths: schema: $ref: '#/components/schemas/ApiError' tags: - - Messages + - Group tags x-requirements: - scope: messages:delete - /messages/{id}/link_previews: - post: - operationId: LinkPreviewOperations_unfurl + scope: group_tags:write + /group_tags/{id}/users: + get: + operationId: GroupTagOperations_getTagUsers description: |- - Unfurl (разворачивание ссылок) + Список сотрудников тега - Подставляет в сообщение предпросмотр ссылки, собранный самим ботом: заголовок, описание и картинку. Так внутренние адреса компании, которые Пачка сама открыть не может, показываются в переписке карточкой. + Кто состоит в теге. Приостановленные сотрудники в списке приходят, хотя в `users_count` самого тега они не учтены. Удалённые не приходят, а боты, помеченные тегом, в выдачу попадают. - Метод доступен только боту, у которого исходящий вебхук настроен на разворачивание ссылок. Такой бот получает событие `message_link_shared` и отвечает на него этим методом, причём состоять в чате с сообщением ему не нужно — достаточно, чтобы чат был в его пространстве. + Состав тега меняют в карточке сотрудника — [Редактирование сотрудника](PUT /users/{id}) с полем `list_tags`, по одному сотруднику за раз. - Домен ссылки должен быть в списке разрешённых у бота, а сама ссылка — присутствовать в тексте сообщения, иначе метод ответит ошибкой. Ответ приходит пустым даже тогда, когда ни одно превью не применилось: результат проверяют повторным чтением сообщения. + Мульти-гостю метод отвечает `403`: список сотрудников пространства ему закрыт, как и в интерфейсе. parameters: - name: id in: path required: true - description: Идентификатор сообщения + description: Идентификатор тега schema: type: integer format: int32 - example: 194275 - example: 194275 + example: 9111 + example: 9111 + - name: limit + in: query + required: false + description: Количество возвращаемых сущностей за один запрос + schema: + type: integer + format: int32 + minimum: 1 + maximum: 50 + example: 1 + default: 50 + example: 1 + explode: false + - name: cursor + in: query + required: false + description: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`) + schema: + type: string + example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 + example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 + explode: false responses: - '204': - description: 'There is no content to send for this request, but the headers may be useful. ' + '200': + description: The request has succeeded. + content: + application/json: + schema: + type: object + required: + - data + - meta + properties: + data: + type: array + items: + $ref: '#/components/schemas/User' + meta: + $ref: '#/components/schemas/PaginationMeta' + description: Обертка ответа с данными и пагинацией '400': description: The server could not understand the request due to invalid syntax. content: @@ -3587,62 +4007,12 @@ paths: application/json: schema: $ref: '#/components/schemas/OAuthError' - '403': - description: Access is forbidden. - content: - application/json: - schema: - $ref: '#/components/schemas/OAuthError' - '404': - description: The server cannot find the requested resource. - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' - '422': + '402': description: Client error content: application/json: schema: $ref: '#/components/schemas/ApiError' - tags: - - Messages - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/LinkPreviewsRequest' - x-requirements: - scope: link_previews:write - /messages/{id}/pin: - post: - operationId: MessageOperations_pinMessage - description: |- - Закрепление сообщения - - Закрепляет сообщение в шапке беседы или канала, где его видят все участники. Ограничения на число закреплённых сообщений нет. - - В тредах метод не работает. Уже закреплённое сообщение отвечает `409`, а удалённое — `422`. - parameters: - - name: id - in: path - required: true - description: Идентификатор сообщения - schema: - type: integer - format: int32 - example: 194275 - example: 194275 - responses: - '204': - description: 'There is no content to send for this request, but the headers may be useful. ' - '401': - description: Access is unauthorized. - content: - application/json: - schema: - $ref: '#/components/schemas/OAuthError' '403': description: Access is forbidden. content: @@ -3655,93 +4025,56 @@ paths: application/json: schema: $ref: '#/components/schemas/ApiError' - '409': - description: The request conflicts with the current state of the server. - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' '422': description: Client error - tags: - - Messages - x-requirements: - scope: pins:write - delete: - operationId: MessageOperations_unpinMessage - description: |- - Открепление сообщения - - Снимает закрепление с сообщения. Если сообщение не было закреплено, ответ всё равно `204`, поэтому повторный вызов безопасен. - parameters: - - name: id - in: path - required: true - description: Идентификатор сообщения - schema: - type: integer - format: int32 - example: 194275 - example: 194275 - responses: - '204': - description: 'There is no content to send for this request, but the headers may be useful. ' - '401': - description: Access is unauthorized. - content: - application/json: - schema: - $ref: '#/components/schemas/OAuthError' - '403': - description: Access is forbidden. - content: - application/json: - schema: - $ref: '#/components/schemas/OAuthError' - '404': - description: The server cannot find the requested resource. content: application/json: schema: $ref: '#/components/schemas/ApiError' tags: - - Messages + - Group tags + x-paginated: true x-requirements: - scope: pins:write - /messages/{id}/reactions: + scope: group_tags:read + /messages: post: - operationId: ReactionOperations_addReaction + operationId: MessageOperations_createMessage description: |- - Добавление реакции + Новое сообщение - Ставит эмодзи-реакцию на сообщение от имени владельца токена. + Отправляет сообщение в беседу или канал, личное сообщение сотруднику или комментарий в тред. - В поле `code` передаётся сам символ эмодзи: текстовые записи вроде `+1` или `:+1:` метод не принимает. Если пользователь уже ставил реакцию, повторно она установлена не будет. Для удаления реакции надо воспользоваться методом [Удаление реакции](DELETE /messages/{id}/reactions). + При использовании `entity_type: "discussion"` (или просто без указания `entity_type`) допускается отправка любого `chat_id` в поле `entity_id`. То есть сообщение можно отправить, зная только идентификатор чата. Сообщение в тред можно отправить и по идентификатору самого треда, а личное — по идентификатору сотрудника, но тогда нужно указать соответствующий `entity_type`: `thread` или `user`. - Если под сообщением есть тред, реагирующий заодно подписывается на него и начинает получать новые сообщения треда. + Личный чат для этого создавать не требуется: он появится сам, если между вами ещё не было переписки. Между двумя сотрудниками может быть только один личный чат. Со своим собственным идентификатором сообщение уйдёт в чат с самим собой — туда же, куда сотрудник пишет заметки себе. - **Лимиты реакций:** + Чтобы ответить на конкретное сообщение с цитатой, передайте его идентификатор в `parent_message_id`. Так отвечают в любом чате, в том числе в треде: ответ отправляют в тот же чат или тред, где лежит исходное сообщение. - - Каждый пользователь может установить на сообщение не более **20 уникальных** реакций - - Сообщение может иметь не более **30 уникальных** реакций - - Общее количество реакций на сообщение не может превышать **1000** - parameters: - - name: id - in: path - required: true - description: Идентификатор сообщения - schema: - type: integer - format: int32 - example: 7231942 - example: 7231942 + Текст в поле `content` разбирается как markdown: жирный, курсив, зачёркнутый, строчный код, блок кода и ссылки. Списки и таблицы не разбираются — `-`, `1.` и `|` остаются как есть, у цитаты пропадает `>`, а строка с решёткой и пробелом становится жирной. Подробности — в разделе [Форматирование текста](/guides/markdown). + + `@all` упоминает всех участников чата, `@here` — тех, кто сейчас в сети, а `@` с названием тега без пробелов — сотрудников этого тега. В треде упоминание работает ещё и как приглашение: упомянутого сотрудника, которого в треде нет, Пачка туда добавляет, и он получает доступ к треду и родительскому сообщению. Чтобы этого не происходило, передайте `skip_invite_mentions: true`. В беседе и канале упоминание никого не добавляет, и этот параметр там ничего не меняет. + + Под текстом сообщения можно показать кнопки — массив `buttons`, где каждый вложенный массив это ряд. Работают они только у сообщений, отправленных токеном бота: нажатие на кнопку с `data` приходит событием `button_click` тому самому боту, а вместе с ним `trigger_id` — на открытие формы по нему есть 3 секунды, метод [Открытие представления](POST /views/open). Кнопка с `url` просто ведёт по ссылке и события не создаёт. Подробности в разделе [Кнопки](/guides/buttons). + + Бот может подписать сообщение чужим именем и аватаром: `display_name` и `display_avatar_url` меняют отправителя только у этого сообщения. Бейдж «Бот» остаётся, а в профиле отправителя видно настоящего бота. Так показывают автора из другой системы, когда переносят в Пачку чужую переписку. С личным токеном поля недоступны, ответ `403`. Подробности — в разделе [Боты](/guides/bots/overview). + + К сообщению можно приложить не больше 10 файлов. Превью ссылки строится, только если передать `link_preview` в корне тела запроса. + + Действует суточный предел на число сообщений в один чат от одного отправителя. При превышении метод отвечает `429`, а в заголовке `Retry-After` приходит пауза до следующей попытки. Значения пределов — в разделе [Лимиты](/api/limits). + parameters: [] responses: '201': description: The request has succeeded and a new resource has been created as a result. content: application/json: schema: - $ref: '#/components/schemas/Reaction' + type: object + required: + - data + properties: + data: + $ref: '#/components/schemas/Message' + description: Обертка ответа с данными '400': description: The server could not understand the request due to invalid syntax. content: @@ -3754,73 +4087,129 @@ paths: application/json: schema: $ref: '#/components/schemas/OAuthError' + '402': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' '403': description: Access is forbidden. content: application/json: schema: $ref: '#/components/schemas/OAuthError' - '404': - description: The server cannot find the requested resource. + '422': + description: Client error content: application/json: schema: $ref: '#/components/schemas/ApiError' - '422': + '429': description: Client error + headers: + Retry-After: + required: true + schema: + type: integer + format: int32 content: application/json: schema: $ref: '#/components/schemas/ApiError' tags: - - Reactions + - Messages requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/ReactionRequest' + $ref: '#/components/schemas/MessageCreateRequest' x-requirements: - scope: reactions:write - delete: - operationId: ReactionOperations_removeReaction + scope: messages:create + get: + operationId: ChatMessageOperations_listChatMessages description: |- - Удаление реакции + Список сообщений чата - Снимает с сообщения свою реакцию. + Лента сообщений беседы, канала, треда или личной переписки — по `chat_id` нужного чата. - Чужая реакция и реакция, которой нет, отвечают `404`. Подписку на тред, если она появилась вместе с реакцией, снятие реакции не отменяет. + Сообщения приходят от новых к старым, то есть первыми идут последние сообщения чата. За более ранними обращайтесь с параметрами `limit` и `cursor`. + + Удалённые сообщения в список не попадают. + + Сообщения треда отдаются по `chat_id` самого треда, а не по чату, где висит родительское сообщение. Этот `chat_id` приходит в поле `thread.chat_id` родительского сообщения. parameters: - - name: id - in: path + - name: chat_id + in: query required: true - description: Идентификатор сообщения + description: Идентификатор чата (беседа, канал, диалог или чат треда) schema: type: integer format: int32 - example: 7231942 - example: 7231942 - - name: code + example: 198 + example: 198 + explode: false + - name: sort in: query - required: true - description: 'Emoji символ реакции. Именно символ: текстовые записи вроде `+1` или `:+1:` отклоняются как неизвестный эмодзи.' + required: false + description: Поле сортировки schema: - type: string - example: 👍 - example: 👍 + allOf: + - $ref: '#/components/schemas/MessageSortField' + default: id + example: id explode: false - - name: name + - name: order in: query required: false - description: Текстовое имя эмодзи (используется для кастомных эмодзи) + description: Направление сортировки + schema: + allOf: + - $ref: '#/components/schemas/SortOrder' + default: desc + example: desc + explode: false + - name: limit + in: query + required: false + description: Количество возвращаемых сущностей за один запрос + schema: + type: integer + format: int32 + minimum: 1 + maximum: 50 + example: 1 + default: 50 + example: 1 + explode: false + - name: cursor + in: query + required: false + description: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`) schema: type: string - example: ':+1:' - example: ':+1:' + example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 + example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 explode: false responses: - '204': - description: 'There is no content to send for this request, but the headers may be useful. ' + '200': + description: The request has succeeded. + content: + application/json: + schema: + type: object + required: + - data + - meta + properties: + data: + type: array + items: + $ref: '#/components/schemas/Message' + meta: + $ref: '#/components/schemas/PaginationMeta' + description: Обертка ответа с данными и пагинацией '400': description: The server could not understand the request due to invalid syntax. content: @@ -3833,6 +4222,12 @@ paths: application/json: schema: $ref: '#/components/schemas/OAuthError' + '402': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' '403': description: Access is forbidden. content: @@ -3852,17 +4247,21 @@ paths: schema: $ref: '#/components/schemas/ApiError' tags: - - Reactions + - Messages + x-paginated: true x-requirements: - scope: reactions:write + scope: messages:read + /messages/{id}: get: - operationId: ReactionOperations_listReactions + operationId: MessageOperations_getMessage description: |- - Список реакций + Информация о сообщении - Все реакции на сообщении и кто их поставил: в каждой записи приходит `user_id` и сам символ. + Сообщение вместе с автором, вложениями и кнопками. - У удалённого сообщения список пуст — реакции пропадают вместе с текстом и файлами. + Удалённое сообщение метод всё равно отдаёт — с пустым `content` и заполненным `deleted_at`, без файлов и реакций. + + Ссылки на файлы в ответе временные. Обычный файл отдаётся прямой ссылкой на хранилище, а защищённый и зашифрованный — адресом API, по которому нужен токен со скоупом `files:read`. parameters: - name: id in: path @@ -3873,28 +4272,6 @@ paths: format: int32 example: 194275 example: 194275 - - name: limit - in: query - required: false - description: Количество возвращаемых сущностей за один запрос - schema: - type: integer - format: int32 - minimum: 1 - maximum: 50 - example: 1 - default: 50 - example: 1 - explode: false - - name: cursor - in: query - required: false - description: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`) - schema: - type: string - example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 - example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 - explode: false responses: '200': description: The request has succeeded. @@ -3904,27 +4281,22 @@ paths: type: object required: - data - - meta properties: data: - type: array - items: - $ref: '#/components/schemas/Reaction' - meta: - $ref: '#/components/schemas/PaginationMeta' - description: Обертка ответа с данными и пагинацией - '400': - description: The server could not understand the request due to invalid syntax. - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' + $ref: '#/components/schemas/Message' + description: Обертка ответа с данными '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/OAuthError' + '402': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' '403': description: Access is forbidden. content: @@ -3937,28 +4309,20 @@ paths: application/json: schema: $ref: '#/components/schemas/ApiError' - '422': - description: Client error - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' tags: - - Reactions - x-paginated: true + - Messages x-requirements: - scope: reactions:read - /messages/{id}/read_member_ids: - get: - operationId: ReadMemberOperations_listReadMembers + scope: messages:read + put: + operationId: MessageOperations_updateMessage description: |- - Список прочитавших сообщение + Редактирование сообщения - Кто из участников чата дочитал ленту до этого сообщения. Отдаётся плоский массив идентификаторов. + Меняет текст, файлы и кнопки уже отправленного сообщения. В интерфейсе у него появляется пометка о правке. - Самого вызывающего и автора сообщения в списке не будет никогда — считаются только остальные участники. Для сообщения в треде это участники треда, а не родительского чата. + Править можно только свои сообщения, и только обычные: системное, пересланное и голосовое метод не меняет. Ограничений по давности отправки нет. - Имён метод не отдаёт. За ними ходят методом [Информация о сотруднике](GET /users/{id}) по каждому идентификатору. + Файлы и кнопки заменяются целиком: пустой массив снимает их все, а отсутствие поля в теле оставляет как было. Любая правка убирает превью ссылок, и заново оно не строится. parameters: - name: id in: path @@ -3969,28 +4333,6 @@ paths: format: int32 example: 194275 example: 194275 - - name: limit - in: query - required: false - description: Количество возвращаемых сущностей за один запрос - schema: - type: integer - format: int32 - minimum: 1 - maximum: 300 - example: 300 - default: 300 - example: 300 - explode: false - - name: cursor - in: query - required: false - description: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`) - schema: - type: string - example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 - example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 - explode: false responses: '200': description: The request has succeeded. @@ -4000,16 +4342,10 @@ paths: type: object required: - data - - meta properties: data: - type: array - items: - type: integer - format: int32 - meta: - $ref: '#/components/schemas/PaginationMeta' - description: Обертка ответа с данными и пагинацией + $ref: '#/components/schemas/Message' + description: Обертка ответа с данными '400': description: The server could not understand the request due to invalid syntax. content: @@ -4047,23 +4383,25 @@ paths: schema: $ref: '#/components/schemas/ApiError' tags: - - Read members - x-paginated: true + - Messages + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MessageUpdateRequest' x-requirements: - scope: messages:read - /messages/{id}/thread: - post: - operationId: ThreadOperations_createThread + scope: messages:update + delete: + operationId: MessageOperations_deleteMessage description: |- - Новый тред - - Заводит тред под сообщением — место, где обсуждают сказанное, не засоряя ленту чата. Тред — это отдельный доступ: в него можно позвать сотрудника, не открывая ему сам чат, и он увидит только тред и родительское сообщение. + Удаление сообщения - В новый тред сразу попадают тот, кто его создал, автор сообщения, все, кто ставил на сообщение реакции, и участники чата, включившие уведомления о тредах. Упомянутых в родительском сообщении — и поимённо, и тегом — добавляет фоновая задача сразу после создания, поэтому в первом ответе их может ещё не быть. Общие упоминания вроде `@all` в тред никого не приводят, а упомянутого, которого нет в самом чате, тред не подхватит. + Удаление сообщения доступно отправителю, админам и редакторам в чате. В личных сообщениях оба пользователя являются редакторами. Ограничений по давности отправки сообщения нет. - Пустой тред разговором ещё не является: сразу отправьте в него первое сообщение методом [Новое сообщение](POST /messages) с `entity_type: "thread"`. Названия у треда нет, и удалить его нельзя ни через API, ни в приложении. + Текст, файлы и реакции пропадают у всех и не восстанавливаются, закрепление снимается, а в переписке на месте сообщения остаётся пометка «Сообщение удалено». - Если у сообщения уже был создан тред, то в ответе на запрос вернётся информация об уже созданном ранее треде. Тред под сообщением, которое само лежит в треде, завести нельзя: вложенных тредов в Пачке нет. + Тред, заведённый под этим сообщением, остаётся вместе со всей перепиской в нём. Повторное удаление отвечает `204` и уже ничего не меняет. parameters: - name: id in: path @@ -4072,27 +4410,23 @@ paths: schema: type: integer format: int32 - example: 154332686 - example: 154332686 + example: 194275 + example: 194275 responses: - '201': - description: The request has succeeded and a new resource has been created as a result. - content: - application/json: - schema: - type: object - required: - - data - properties: - data: - $ref: '#/components/schemas/Thread' - description: Обертка ответа с данными + '204': + description: 'There is no content to send for this request, but the headers may be useful. ' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/OAuthError' + '402': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' '403': description: Access is forbidden. content: @@ -4106,158 +4440,141 @@ paths: schema: $ref: '#/components/schemas/ApiError' tags: - - Threads + - Messages x-requirements: - scope: threads:create - /oauth/token/info: - get: - operationId: OAuthOperations_getTokenInfo + scope: messages:delete + /messages/{id}/link_previews: + post: + operationId: LinkPreviewOperations_unfurl description: |- - Информация о токене + Unfurl (разворачивание ссылок) - Сведения о токене, которым сделан сам запрос: его скоупы, владелец, даты создания и последнего использования. Сам токен приходит замаскированным — видны только первые 8 и последние 4 символа. + Подставляет в сообщение предпросмотр ссылки, собранный самим ботом: заголовок, описание и картинку. Так внутренние адреса компании, которые Пачка сама открыть не может, показываются в переписке карточкой. - Метод не требует скоупа и отвечает на любой действующий токен, личный или бота. Поэтому им удобно проверять токен перед работой: живой отвечает `200`, отозванный или просроченный — `401`, а список скоупов сразу показывает, какие методы этому токену доступны. + Метод доступен только боту, у которого исходящий вебхук настроен на разворачивание ссылок. Такой бот получает событие `message_link_shared` и отвечает на него этим методом, причём состоять в чате с сообщением ему не нужно — достаточно, чтобы чат был в его пространстве. - Чей это токен, видно по `user_id`. Полную карточку владельца отдаёт [Свой профиль](GET /profile). - parameters: [] + Домен ссылки должен быть в списке разрешённых у бота, а сама ссылка — присутствовать в тексте сообщения, иначе метод ответит ошибкой. Ответ приходит пустым даже тогда, когда ни одно превью не применилось: результат проверяют повторным чтением сообщения. + parameters: + - name: id + in: path + required: true + description: Идентификатор сообщения + schema: + type: integer + format: int32 + example: 194275 + example: 194275 responses: - '200': - description: The request has succeeded. + '204': + description: 'There is no content to send for this request, but the headers may be useful. ' + '400': + description: The server could not understand the request due to invalid syntax. content: application/json: schema: - type: object - required: - - data - properties: - data: - $ref: '#/components/schemas/AccessTokenInfo' - description: Обертка ответа с данными + $ref: '#/components/schemas/ApiError' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/OAuthError' - tags: - - OAuth - /profile: - get: - operationId: ProfileOperations_getProfile - description: |- - Свой профиль - - Карточка владельца токена. У бот-токена это карточка самого бота. - - Часовой пояс нужен, чтобы правильно понимать сроки, названные словами: «до 15:00» и «к пятнице» считаются в поясе сотрудника, а не в UTC. Пустое значение означает часовой пояс пространства. - - Чужую карточку отдаёт [Информация о сотруднике](GET /users/{id}). - parameters: [] - responses: - '200': - description: The request has succeeded. + '403': + description: Access is forbidden. content: application/json: schema: - type: object - required: - - data - properties: - data: - $ref: '#/components/schemas/User' - description: Обертка ответа с данными - '401': - description: Access is unauthorized. + $ref: '#/components/schemas/OAuthError' + '404': + description: The server cannot find the requested resource. content: application/json: schema: - $ref: '#/components/schemas/OAuthError' - '403': - description: Access is forbidden. + $ref: '#/components/schemas/ApiError' + '422': + description: Client error content: application/json: schema: - $ref: '#/components/schemas/OAuthError' + $ref: '#/components/schemas/ApiError' tags: - - Profile + - Messages + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/LinkPreviewsRequest' x-requirements: - scope: profile:read - /profile/avatar: - put: - operationId: ProfileAvatarOperations_updateProfileAvatar + scope: link_previews:write + /messages/{id}/pin: + post: + operationId: MessageOperations_pinMessage description: |- - Загрузка своего аватара - - Ставит или заменяет аватар владельца токена. Файл передаётся в формате `multipart/form-data`, в ответе приходит только ссылка на новое изображение. + Закрепление сообщения - Принимаются `jpg`, `jpeg`, `png` и `gif`, причём анимированный `gif` — не больше 2 МБ. Картинка уменьшается до 1024 на 1024 пикселя, а непрозрачный `png` сохраняется как `jpg`. + Закрепляет сообщение в шапке беседы или канала, где его видят все участники. Ограничения на число закреплённых сообщений нет. - Аватар другого сотрудника ставит [Загрузка аватара сотрудника](PUT /users/{user_id}/avatar), и это доступно только владельцу пространства и администратору. - parameters: [] + В тредах метод не работает. Уже закреплённое сообщение отвечает `409`, а удалённое — `422`. + parameters: + - name: id + in: path + required: true + description: Идентификатор сообщения + schema: + type: integer + format: int32 + example: 194275 + example: 194275 responses: - '200': - description: The request has succeeded. - content: - application/json: - schema: - type: object - required: - - data - properties: - data: - $ref: '#/components/schemas/AvatarData' - description: Обертка ответа с данными + '204': + description: 'There is no content to send for this request, but the headers may be useful. ' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/OAuthError' - '402': - description: Client error + '403': + description: Access is forbidden. content: application/json: schema: - $ref: '#/components/schemas/ApiError' - '403': - description: Access is forbidden. + $ref: '#/components/schemas/OAuthError' + '404': + description: The server cannot find the requested resource. content: application/json: schema: - anyOf: - - $ref: '#/components/schemas/ApiError' - - $ref: '#/components/schemas/OAuthError' - '422': - description: Client error + $ref: '#/components/schemas/ApiError' + '409': + description: The request conflicts with the current state of the server. content: application/json: schema: $ref: '#/components/schemas/ApiError' + '422': + description: Client error tags: - - Profile - requestBody: - required: true - content: - multipart/form-data: - schema: - type: object - properties: - image: - type: string - format: binary - description: Файл изображения для аватара - required: - - image + - Messages x-requirements: - scope: profile_avatar:write + scope: pins:write delete: - operationId: ProfileAvatarOperations_deleteProfileAvatar + operationId: MessageOperations_unpinMessage description: |- - Удаление своего аватара + Открепление сообщения - Убирает аватар владельца токена, дальше в интерфейсе показываются инициалы. Если аватара не было, ответ всё равно `204`. - parameters: [] + Снимает закрепление с сообщения. Если сообщение не было закреплено, ответ всё равно `204`, поэтому повторный вызов безопасен. + parameters: + - name: id + in: path + required: true + description: Идентификатор сообщения + schema: + type: integer + format: int32 + example: 194275 + example: 194275 responses: '204': description: 'There is no content to send for this request, but the headers may be useful. ' @@ -4267,48 +4584,62 @@ paths: application/json: schema: $ref: '#/components/schemas/OAuthError' - '402': - description: Client error + '403': + description: Access is forbidden. content: application/json: schema: - $ref: '#/components/schemas/ApiError' - '403': - description: Access is forbidden. + $ref: '#/components/schemas/OAuthError' + '404': + description: The server cannot find the requested resource. content: application/json: schema: - anyOf: - - $ref: '#/components/schemas/ApiError' - - $ref: '#/components/schemas/OAuthError' + $ref: '#/components/schemas/ApiError' tags: - - Profile + - Messages x-requirements: - scope: profile_avatar:write - /profile/status: - get: - operationId: ProfileOperations_getStatus + scope: pins:write + /messages/{id}/reactions: + post: + operationId: ReactionOperations_addReaction description: |- - Свой статус + Добавление реакции - Статус владельца токена: эмодзи, подпись, срок и режим «Нет на месте». + Ставит эмодзи-реакцию на сообщение от имени владельца токена. - Если статус не установлен, метод возвращает `200` и `null` в теле ответа — без объекта-обёртки. Статус с истёкшим `expires_at` какое-то время ещё возвращается, пока не будет очищен, поэтому проверяйте `expires_at` на стороне клиента. - parameters: [] + В поле `code` передаётся сам символ эмодзи: текстовые записи вроде `+1` или `:+1:` метод не принимает. Если пользователь уже ставил реакцию, повторно она установлена не будет. Для удаления реакции надо воспользоваться методом [Удаление реакции](DELETE /messages/{id}/reactions). + + Если под сообщением есть тред, реагирующий заодно подписывается на него и начинает получать новые сообщения треда. + + **Лимиты реакций:** + + - Каждый пользователь может установить на сообщение не более **20 уникальных** реакций + - Сообщение может иметь не более **30 уникальных** реакций + - Общее количество реакций на сообщение не может превышать **1000** + parameters: + - name: id + in: path + required: true + description: Идентификатор сообщения + schema: + type: integer + format: int32 + example: 7231942 + example: 7231942 responses: - '200': - description: The request has succeeded. + '201': + description: The request has succeeded and a new resource has been created as a result. content: application/json: schema: - type: object - required: - - data - properties: - data: - $ref: '#/components/schemas/UserStatus' - description: Обертка ответа с данными - nullable: true + $ref: '#/components/schemas/Reaction' + '400': + description: The server could not understand the request due to invalid syntax. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' '401': description: Access is unauthorized. content: @@ -4321,38 +4652,67 @@ paths: application/json: schema: $ref: '#/components/schemas/OAuthError' + '404': + description: The server cannot find the requested resource. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' tags: - - Profile - x-requirements: - scope: profile_status:read - put: - operationId: ProfileOperations_updateStatus - description: |- - Новый свой статус - - Ставит статус владельцу токена: эмодзи, подпись и, если нужно, срок. Метод доступен и боту — статус появится в карточке самого бота. - - Режим «Нет на месте» включается этим же методом, флагом `is_away`. В `away_message` кладут текст, который увидят в профиле и при попытке написать или упомянуть. Когда срок из `expires_at` истекает, статус снимается целиком, вместе с режимом и этим текстом. - - Перезаписываются только переданные поля. Чтобы продлить текущий статус, достаточно прислать один `expires_at`. + - Reactions + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ReactionRequest' + x-requirements: + scope: reactions:write + delete: + operationId: ReactionOperations_removeReaction + description: |- + Удаление реакции - Срок, названный словами («до трёх», «до конца дня»), — это `expires_at`, а не часть подписи. Считается он в часовом поясе сотрудника, а пояс приходит в методе [Свой профиль](GET /profile). + Снимает с сообщения свою реакцию. - Эмодзи обязателен, и он должен быть ровно один, без текста вокруг. Подпись обязательна и не длиннее 50 символов. - parameters: [] + Чужая реакция и реакция, которой нет, отвечают `404`. Подписку на тред, если она появилась вместе с реакцией, снятие реакции не отменяет. + parameters: + - name: id + in: path + required: true + description: Идентификатор сообщения + schema: + type: integer + format: int32 + example: 7231942 + example: 7231942 + - name: code + in: query + required: true + description: 'Emoji символ реакции. Именно символ: текстовые записи вроде `+1` или `:+1:` отклоняются как неизвестный эмодзи.' + schema: + type: string + example: 👍 + example: 👍 + explode: false + - name: name + in: query + required: false + description: Текстовое имя эмодзи (используется для кастомных эмодзи) + schema: + type: string + example: ':+1:' + example: ':+1:' + explode: false responses: - '200': - description: The request has succeeded. - content: - application/json: - schema: - type: object - required: - - data - properties: - data: - $ref: '#/components/schemas/UserStatus' - description: Обертка ответа с данными + '204': + description: 'There is no content to send for this request, but the headers may be useful. ' '400': description: The server could not understand the request due to invalid syntax. content: @@ -4371,146 +4731,62 @@ paths: application/json: schema: $ref: '#/components/schemas/OAuthError' - '422': - description: Client error + '404': + description: The server cannot find the requested resource. content: application/json: schema: $ref: '#/components/schemas/ApiError' - tags: - - Profile - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/StatusUpdateRequest' - x-requirements: - scope: profile_status:write - delete: - operationId: ProfileOperations_deleteStatus - description: |- - Удаление своего статуса - - Снимает статус с владельца токена вместе с режимом «Нет на месте» и его текстом. Если статуса не было, ответ всё равно `204`, поэтому повторный вызов безопасен. - parameters: [] - responses: - '204': - description: 'There is no content to send for this request, but the headers may be useful. ' - '401': - description: Access is unauthorized. - content: - application/json: - schema: - $ref: '#/components/schemas/OAuthError' - '403': - description: Access is forbidden. + '422': + description: Client error content: application/json: schema: - $ref: '#/components/schemas/OAuthError' + $ref: '#/components/schemas/ApiError' tags: - - Profile + - Reactions x-requirements: - scope: profile_status:write - /search/chats: + scope: reactions:write get: - operationId: SearchOperations_searchChats + operationId: ReactionOperations_listReactions description: |- - Поиск чатов - - Ищет беседы и каналы по названию, прощая опечатки. Находит и открытые чаты пространства, куда вызывающий не вступал, а закрытые — только те, где он состоит. + Список реакций - Личные переписки по умолчанию не ищутся. Передайте `personal=true`, и поиск пойдёт по имени собеседника, а не по названию чата. + Все реакции на сообщении и кто их поставил: в каждой записи приходит `user_id` и сам символ. - Метод ищет по названиям, а не по содержанию. Если нужно найти, где что-то обсуждали или о чём договорились, это [Поиск сообщений](GET /search/messages). + У удалённого сообщения список пуст — реакции пропадают вместе с текстом и файлами. parameters: - - name: query - in: query - required: false - description: Текст поискового запроса + - name: id + in: path + required: true + description: Идентификатор сообщения schema: - type: string - example: Разработка - example: Разработка - explode: false + type: integer + format: int32 + example: 194275 + example: 194275 - name: limit in: query required: false - description: Количество возвращаемых результатов за один запрос + description: Количество возвращаемых сущностей за один запрос schema: type: integer format: int32 - maximum: 100 - example: 10 - default: 100 - example: 10 + minimum: 1 + maximum: 50 + example: 1 + default: 50 + example: 1 explode: false - name: cursor in: query required: false - description: Курсор для пагинации (из `meta.paginate.next_page`) + description: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`) schema: type: string example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 explode: false - - name: order - in: query - required: false - description: Направление сортировки - schema: - $ref: '#/components/schemas/SortOrder' - example: desc - example: desc - explode: false - - name: created_from - in: query - required: false - description: Фильтр по дате создания (от) - schema: - type: string - format: date-time - example: '2025-01-01T00:00:00.000Z' - example: '2025-01-01T00:00:00.000Z' - explode: false - - name: created_to - in: query - required: false - description: Фильтр по дате создания (до) - schema: - type: string - format: date-time - example: '2025-02-01T00:00:00.000Z' - example: '2025-02-01T00:00:00.000Z' - explode: false - - name: active - in: query - required: false - description: Фильтр по активности чата - schema: - type: boolean - example: true - example: true - explode: false - - name: chat_subtype - in: query - required: false - description: Фильтр по типу чата - schema: - $ref: '#/components/schemas/ChatSubtype' - example: discussion - example: discussion - explode: false - - name: personal - in: query - required: false - description: Фильтр по личным чатам - schema: - type: boolean - example: false - example: false - explode: false responses: '200': description: The request has succeeded. @@ -4525,10 +4801,10 @@ paths: data: type: array items: - $ref: '#/components/schemas/Chat' + $ref: '#/components/schemas/Reaction' meta: - $ref: '#/components/schemas/SearchPaginationMeta' - description: Обертка ответа поисковых результатов с данными и пагинацией + $ref: '#/components/schemas/PaginationMeta' + description: Обертка ответа с данными и пагинацией '400': description: The server could not understand the request due to invalid syntax. content: @@ -4541,145 +4817,72 @@ paths: application/json: schema: $ref: '#/components/schemas/OAuthError' - '402': - description: Client error + '403': + description: Access is forbidden. + content: + application/json: + schema: + $ref: '#/components/schemas/OAuthError' + '404': + description: The server cannot find the requested resource. content: application/json: schema: $ref: '#/components/schemas/ApiError' - '403': - description: Access is forbidden. + '422': + description: Client error content: application/json: schema: - $ref: '#/components/schemas/OAuthError' + $ref: '#/components/schemas/ApiError' tags: - - Search + - Reactions x-paginated: true x-requirements: - scope: search:chats - /search/messages: + scope: reactions:read + /messages/{id}/read_member_ids: get: - operationId: SearchOperations_searchMessages + operationId: ReadMemberOperations_listReadMembers description: |- - Поиск сообщений + Список прочитавших сообщение - Ищет по тексту сообщений и по именам вложенных файлов, но только в чатах, где владелец токена состоит. Открытый канал, в который он не вступал, в поиск не попадает, хотя ленту его читать можно. Сообщения тредов в выдачу входят. + Кто из участников чата дочитал ленту до этого сообщения. Отдаётся плоский массив идентификаторов. - Слова запроса ищутся по словоформам и по части слова, опечатки при этом не исправляются. Запрос в кавычках ищется строгой фразой, поиск по части слова в нём не работает. + Самого вызывающего и автора сообщения в списке не будет никогда — считаются только остальные участники. Для сообщения в треде это участники треда, а не родительского чата. - По умолчанию сообщения приходят от новых к старым. `sort=relevance` переключает выдачу на соответствие запросу, где свежие сообщения всё равно ценятся выше. + Имён метод не отдаёт. За ними ходят методом [Информация о сотруднике](GET /users/{id}) по каждому идентификатору. parameters: - - name: query - in: query - required: false - description: Текст поискового запроса + - name: id + in: path + required: true + description: Идентификатор сообщения schema: - type: string - example: футболки - example: футболки - explode: false + type: integer + format: int32 + example: 194275 + example: 194275 - name: limit in: query required: false - description: Количество возвращаемых результатов за один запрос + description: Количество возвращаемых сущностей за один запрос schema: type: integer format: int32 - maximum: 200 - example: 10 - default: 200 - example: 10 + minimum: 1 + maximum: 300 + example: 300 + default: 300 + example: 300 explode: false - name: cursor in: query required: false - description: Курсор для пагинации (из `meta.paginate.next_page`) + description: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`) schema: type: string example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 explode: false - - name: order - in: query - required: false - description: Направление сортировки - schema: - $ref: '#/components/schemas/SortOrder' - example: desc - example: desc - explode: false - - name: sort - in: query - required: false - description: Сортировка результатов - schema: - allOf: - - $ref: '#/components/schemas/MessageSearchSort' - default: created_at - example: created_at - explode: false - - name: created_from - in: query - required: false - description: Фильтр по дате создания (от) - schema: - type: string - format: date-time - example: '2025-01-01T00:00:00.000Z' - example: '2025-01-01T00:00:00.000Z' - explode: false - - name: created_to - in: query - required: false - description: Фильтр по дате создания (до) - schema: - type: string - format: date-time - example: '2025-02-01T00:00:00.000Z' - example: '2025-02-01T00:00:00.000Z' - explode: false - - name: chat_ids - in: query - required: false - description: Фильтр по ID чатов - schema: - type: array - items: - type: integer - format: int32 - example: - - 198 - - 334 - example: - - 198 - - 334 - explode: false - - name: user_ids - in: query - required: false - description: Фильтр по ID авторов сообщений - schema: - type: array - items: - type: integer - format: int32 - example: - - 12 - - 185 - example: - - 12 - - 185 - explode: false - - name: active - in: query - required: false - description: Фильтр по активности чата - schema: - type: boolean - example: true - example: true - explode: false responses: '200': description: The request has succeeded. @@ -4694,10 +4897,11 @@ paths: data: type: array items: - $ref: '#/components/schemas/Message' + type: integer + format: int32 meta: - $ref: '#/components/schemas/SearchPaginationMeta' - description: Обертка ответа поисковых результатов с данными и пагинацией + $ref: '#/components/schemas/PaginationMeta' + description: Обертка ответа с данными и пагинацией '400': description: The server could not understand the request due to invalid syntax. content: @@ -4722,176 +4926,96 @@ paths: application/json: schema: $ref: '#/components/schemas/OAuthError' + '404': + description: The server cannot find the requested resource. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' tags: - - Search + - Read members x-paginated: true x-requirements: - scope: search:messages - /search/users: - get: - operationId: SearchOperations_searchUsers + scope: messages:read + /messages/{id}/thread: + post: + operationId: ThreadOperations_createThread description: |- - Поиск сотрудников + Новый тред - Ищет сотрудников по имени и фамилии, нику, должности и отделу. Опечатки прощаются только в имени и фамилии, остальным полям нужно точное слово. + Заводит тред под сообщением — место, где обсуждают сказанное, не засоряя ленту чата. Тред — это отдельный доступ: в него можно позвать сотрудника, не открывая ему сам чат, и он увидит только тред и родительское сообщение. - По почте метод ищет лишь тем, кому в пространстве видны персональные данные. По телефону он не ищет вовсе — для этого есть [Список сотрудников](GET /users) с параметром `query`. + В новый тред сразу попадают тот, кто его создал, автор сообщения, все, кто ставил на сообщение реакции, и участники чата, включившие уведомления о тредах. Упомянутых в родительском сообщении — и поимённо, и тегом — добавляет фоновая задача сразу после создания, поэтому в первом ответе их может ещё не быть. Общие упоминания вроде `@all` в тред никого не приводят, а упомянутого, которого нет в самом чате, тред не подхватит. - Удалённые сотрудники не находятся никогда, приостановленные — только когда задан текстовый запрос, и стоят в выдаче ниже остальных. Из ботов находятся лишь публичные. + Пустой тред разговором ещё не является: сразу отправьте в него первое сообщение методом [Новое сообщение](POST /messages) с `entity_type: "thread"`. Названия у треда нет, и удалить его нельзя ни через API, ни в приложении. + + Если у сообщения уже был создан тред, то в ответе на запрос вернётся информация об уже созданном ранее треде. Тред под сообщением, которое само лежит в треде, завести нельзя: вложенных тредов в Пачке нет. parameters: - - name: query - in: query - required: false - description: Текст поискового запроса - schema: - type: string - example: Олег - example: Олег - explode: false - - name: limit - in: query - required: false - description: Количество возвращаемых результатов за один запрос + - name: id + in: path + required: true + description: Идентификатор сообщения schema: type: integer format: int32 - maximum: 200 - example: 10 - default: 200 - example: 10 - explode: false - - name: cursor - in: query - required: false - description: Курсор для пагинации (из `meta.paginate.next_page`) - schema: - type: string - example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 - example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 - explode: false - - name: sort - in: query - required: false - description: Сортировка результатов - schema: - $ref: '#/components/schemas/SearchSortOrder' - example: by_score - example: by_score - explode: false - - name: order - in: query - required: false - description: Направление сортировки - schema: - $ref: '#/components/schemas/SortOrder' - example: desc - example: desc - explode: false - - name: created_from - in: query - required: false - description: Фильтр по дате создания (от) - schema: - type: string - format: date-time - example: '2025-01-01T00:00:00.000Z' - example: '2025-01-01T00:00:00.000Z' - explode: false - - name: created_to - in: query - required: false - description: Фильтр по дате создания (до) - schema: - type: string - format: date-time - example: '2025-02-01T00:00:00.000Z' - example: '2025-02-01T00:00:00.000Z' - explode: false - - name: company_roles - in: query - required: false - description: Фильтр по ролям сотрудников - schema: - type: array - items: - $ref: '#/components/schemas/UserRole' - example: - - admin - - user - example: - - admin - - user - explode: false + example: 154332686 + example: 154332686 responses: - '200': - description: The request has succeeded. + '201': + description: The request has succeeded and a new resource has been created as a result. content: application/json: schema: type: object required: - data - - meta properties: data: - type: array - items: - $ref: '#/components/schemas/User' - meta: - $ref: '#/components/schemas/SearchPaginationMeta' - description: Обертка ответа поисковых результатов с данными и пагинацией - '400': - description: The server could not understand the request due to invalid syntax. - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' + $ref: '#/components/schemas/Thread' + description: Обертка ответа с данными '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/OAuthError' - '402': - description: Client error - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' '403': description: Access is forbidden. content: application/json: schema: $ref: '#/components/schemas/OAuthError' + '404': + description: The server cannot find the requested resource. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' tags: - - Search - x-paginated: true + - Threads x-requirements: - scope: search:users - /tasks: - post: - operationId: TaskOperations_createTask + scope: threads:create + /oauth/token/info: + get: + operationId: OAuthOperations_getTokenInfo description: |- - Новое напоминание - - Создаёт напоминание и назначает на него ответственных. - - При создании напоминания обязательно указать его тип: звонок, встреча, простое напоминание, событие или письмо. Описание при этом не требуется — напоминание создастся с текстом по типу. Если описание передано, именно оно и станет текстом напоминания. - - У напоминания должны быть ответственные. Если их не указать, ответственным становится владелец токена. - - Ответственным для напоминания без привязки к каким-либо сущностям может стать любой сотрудник компании. Актуальный состав сотрудников компании вы можете получить в методе [Список сотрудников](GET /users). Ответственные, которых вызывающий не видит, молча отбрасываются: ответ приходит успешным, а в `performer_ids` их нет, поэтому сверяйте состав в ответе. + Информация о токене - Напоминание можно привязать к беседе полем `chat_id` — тогда кроме автора и ответственных его видят участники этой беседы. Привязывающий должен сам в ней состоять. В канале, в треде и в архивном чате напоминания не создаются. + Сведения о токене, которым сделан сам запрос: его скоупы, владелец, даты создания и последнего использования. Сам токен приходит замаскированным — видны только первые 8 и последние 4 символа. - Передать напоминание другому сотруднику — значит сменить ответственного методом [Редактирование напоминания](PUT /tasks/{id}). + Метод не требует скоупа и отвечает на любой действующий токен, личный или бота. Поэтому им удобно проверять токен перед работой: живой отвечает `200`, отозванный или просроченный — `401`, а список скоупов сразу показывает, какие методы этому токену доступны. - Если к пространству или к профилю подключён календарь, напоминание заодно появляется в нём событием. + Чей это токен, видно по `user_id`. Полную карточку владельца отдаёт [Свой профиль](GET /profile). parameters: [] responses: - '201': - description: The request has succeeded and a new resource has been created as a result. + '200': + description: The request has succeeded. content: application/json: schema: @@ -4900,138 +5024,28 @@ paths: - data properties: data: - $ref: '#/components/schemas/Task' + $ref: '#/components/schemas/AccessTokenInfo' description: Обертка ответа с данными - '400': - description: The server could not understand the request due to invalid syntax. - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/OAuthError' - '402': - description: Client error - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' - '403': - description: Access is forbidden. - content: - application/json: - schema: - $ref: '#/components/schemas/OAuthError' - '404': - description: The server cannot find the requested resource. - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' - '422': - description: Client error - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' tags: - - Tasks - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/TaskCreateRequest' - x-requirements: - scope: tasks:create + - OAuth + /profile: get: - operationId: TaskOperations_listTasks + operationId: ProfileOperations_getProfile description: |- - Список напоминаний + Свой профиль - Напоминания, доступные владельцу токена. + Карточка владельца токена. У бот-токена это карточка самого бота. - Без параметра `chat_ids` возвращаются только ваши напоминания: из бесед и каналов, где вы состоите участником, а также созданные вами или назначенные вам напоминания без привязки к чату. Параметр `chat_ids` меняет выборку — возвращаются все напоминания указанных чатов, включая чужие. - parameters: - - name: status - in: query - required: false - description: Фильтр по состоянию. Если параметр не указан, возвращаются напоминания в любом состоянии. - schema: - $ref: '#/components/schemas/TaskStatus' - example: undone - example: undone - explode: false - - name: chat_ids - in: query - required: false - description: Фильтр по чатам, к которым привязаны напоминания. Доступными считаются чаты, где вы состоите участником, открытые беседы и каналы пространства, а также треды, доступные вам по родительскому чату. Остальные переданные идентификаторы игнорируются без ошибки. Не более 100 идентификаторов. - schema: - type: array - items: - type: integer - format: int32 - maxItems: 100 - example: - - 198 - - 334 - example: - - 198 - - 334 - explode: false - - name: performer_ids - in: query - required: false - description: Фильтр по ответственным за напоминание. Не более 100 идентификаторов. - schema: - type: array - items: - type: integer - format: int32 - maxItems: 100 - example: - - 12 - - 185 - example: - - 12 - - 185 - explode: false - - name: author_id - in: query - required: false - description: Фильтр по автору напоминания - schema: - type: integer - format: int32 - example: 12 - example: 12 - explode: false - - name: limit - in: query - required: false - description: Количество возвращаемых сущностей за один запрос - schema: - type: integer - format: int32 - minimum: 1 - maximum: 50 - example: 1 - default: 50 - example: 1 - explode: false - - name: cursor - in: query - required: false - description: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`) - schema: - type: string - example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 - example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 - explode: false + Часовой пояс нужен, чтобы правильно понимать сроки, названные словами: «до 15:00» и «к пятнице» считаются в поясе сотрудника, а не в UTC. Пустое значение означает часовой пояс пространства. + + Чужую карточку отдаёт [Информация о сотруднике](GET /users/{id}). + parameters: [] responses: '200': description: The request has succeeded. @@ -5041,33 +5055,16 @@ paths: type: object required: - data - - meta properties: data: - type: array - items: - $ref: '#/components/schemas/Task' - meta: - $ref: '#/components/schemas/PaginationMeta' - description: Обертка ответа с данными и пагинацией - '400': - description: The server could not understand the request due to invalid syntax. - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' + $ref: '#/components/schemas/User' + description: Обертка ответа с данными '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/OAuthError' - '402': - description: Client error - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' '403': description: Access is forbidden. content: @@ -5075,29 +5072,21 @@ paths: schema: $ref: '#/components/schemas/OAuthError' tags: - - Tasks - x-paginated: true + - Profile x-requirements: - scope: tasks:read - /tasks/{id}: - get: - operationId: TaskOperations_getTask + scope: profile:read + /profile/avatar: + put: + operationId: ProfileAvatarOperations_updateProfileAvatar description: |- - Информация о напоминании + Загрузка своего аватара - Напоминание вместе с его автором, ответственными и чатом, к которому оно привязано. + Ставит или заменяет аватар владельца токена. Файл передаётся в формате `multipart/form-data`, в ответе приходит только ссылка на новое изображение. - Напоминание видят его автор, ответственные и участники чата, к которому оно привязано. Участия в чате хватает, чтобы прочитать, но не чтобы изменить: править и удалять напоминание могут только автор и ответственные. - parameters: - - name: id - in: path - required: true - description: Идентификатор напоминания - schema: - type: integer - format: int32 - example: 22283 - example: 22283 + Принимаются `jpg`, `jpeg`, `png` и `gif`, причём анимированный `gif` — не больше 2 МБ. Картинка уменьшается до 1024 на 1024 пикселя, а непрозрачный `png` сохраняется как `jpg`. + + Аватар другого сотрудника ставит [Загрузка аватара сотрудника](PUT /users/{user_id}/avatar), и это доступно только владельцу пространства и администратору. + parameters: [] responses: '200': description: The request has succeeded. @@ -5109,7 +5098,7 @@ paths: - data properties: data: - $ref: '#/components/schemas/Task' + $ref: '#/components/schemas/AvatarData' description: Обертка ответа с данными '401': description: Access is unauthorized. @@ -5128,58 +5117,42 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/OAuthError' - '404': - description: The server cannot find the requested resource. + anyOf: + - $ref: '#/components/schemas/ApiError' + - $ref: '#/components/schemas/OAuthError' + '422': + description: Client error content: application/json: schema: $ref: '#/components/schemas/ApiError' tags: - - Tasks + - Profile + requestBody: + required: true + content: + multipart/form-data: + schema: + type: object + properties: + image: + type: string + format: binary + description: Файл изображения для аватара + required: + - image x-requirements: - scope: tasks:read - put: - operationId: TaskOperations_updateTask + scope: profile_avatar:write + delete: + operationId: ProfileAvatarOperations_deleteProfileAvatar description: |- - Редактирование напоминания - - Меняет напоминание: перезаписываются только переданные поля. - - Передать напоминание другому сотруднику — это тоже правка: добавьте его в `performer_ids` вместо прежнего. - - Выполненное напоминание закрывают этим же методом: `status: "done"` ставит галочку и оставляет напоминание в списке, `status: "undone"` возвращает его в работу. + Удаление своего аватара - Доступно автору и ответственным. Участник чата, где висит напоминание, его видит, но менять не может. Привязку к чату изменить нельзя: чтобы перевесить напоминание в другой чат, удалите его и создайте заново с нужным `chat_id`. - parameters: - - name: id - in: path - required: true - description: Идентификатор напоминания - schema: - type: integer - format: int32 - example: 22283 - example: 22283 + Убирает аватар владельца токена, дальше в интерфейсе показываются инициалы. Если аватара не было, ответ всё равно `204`. + parameters: [] responses: - '200': - description: The request has succeeded. - content: - application/json: - schema: - type: object - required: - - data - properties: - data: - $ref: '#/components/schemas/Task' - description: Обертка ответа с данными - '400': - description: The server could not understand the request due to invalid syntax. - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' + '204': + description: 'There is no content to send for this request, but the headers may be useful. ' '401': description: Access is unauthorized. content: @@ -5197,95 +5170,71 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/OAuthError' - '404': - description: The server cannot find the requested resource. - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' - '422': - description: Client error - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' + anyOf: + - $ref: '#/components/schemas/ApiError' + - $ref: '#/components/schemas/OAuthError' tags: - - Tasks - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/TaskUpdateRequest' + - Profile x-requirements: - scope: tasks:update - delete: - operationId: TaskOperations_deleteTask + scope: profile_avatar:write + /profile/status: + get: + operationId: ProfileOperations_getStatus description: |- - Удаление напоминания - - Убирает напоминание насовсем: восстановить его нельзя, и у ответственных оно тоже пропадает. Если напоминание уехало в подключённый календарь, событие удаляется и там. + Свой статус - Доступно автору и ответственным. Повторный вызов отвечает `404`. + Статус владельца токена: эмодзи, подпись, срок и режим «Нет на месте». - Закрыть выполненное напоминание, сохранив его в списке, можно методом [Редактирование напоминания](PUT /tasks/{id}) со `status: "done"`. - parameters: - - name: id - in: path - required: true - description: Идентификатор напоминания - schema: - type: integer - format: int32 - example: 22283 - example: 22283 + Если статус не установлен, метод возвращает `200` и `null` в теле ответа — без объекта-обёртки. Статус с истёкшим `expires_at` какое-то время ещё возвращается, пока не будет очищен, поэтому проверяйте `expires_at` на стороне клиента. + parameters: [] responses: - '204': - description: 'There is no content to send for this request, but the headers may be useful. ' - '401': - description: Access is unauthorized. + '200': + description: The request has succeeded. content: application/json: schema: - $ref: '#/components/schemas/OAuthError' - '402': - description: Client error + type: object + required: + - data + properties: + data: + $ref: '#/components/schemas/UserStatus' + description: Обертка ответа с данными + nullable: true + '401': + description: Access is unauthorized. content: application/json: schema: - $ref: '#/components/schemas/ApiError' + $ref: '#/components/schemas/OAuthError' '403': description: Access is forbidden. content: application/json: schema: $ref: '#/components/schemas/OAuthError' - '404': - description: The server cannot find the requested resource. - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' tags: - - Tasks + - Profile x-requirements: - scope: tasks:delete - /threads: - post: - operationId: ThreadOperations_createStandaloneThread + scope: profile_status:read + put: + operationId: ProfileOperations_updateStatus description: |- - Новый самостоятельный тред + Новый свой статус - Заводит тред, который ни к чему не привязан: место для разговора, диалога с агентом или звонка, которому не нужен отдельный чат. Собрать в нём можно любых сотрудников. + Ставит статус владельцу токена: эмодзи, подпись и, если нужно, срок. Метод доступен и боту — статус появится в карточке самого бота. - Тело запроса не требуется. Создатель треда становится его единственным участником, а поля `message_id` и `message_chat_id` в ответе возвращаются как `null`. Добавить в тред участников проще всего упоминанием: `@ник` или `@тег` в начале или в конце текста сообщения. Можно и методом [Добавление пользователей](POST /chats/{id}/members) по `chat_id` треда. + Режим «Нет на месте» включается этим же методом, флагом `is_away`. В `away_message` кладут текст, который увидят в профиле и при попытке написать или упомянуть. Когда срок из `expires_at` истекает, статус снимается целиком, вместе с режимом и этим текстом. - Названия у треда нет, поэтому сразу отправьте в него первое сообщение — по нему сотрудники и поймут, о чём речь. Удалить тред нельзя. Если обсуждать нужно конкретное сообщение в чате, заводите тред под ним методом [Новый тред](POST /messages/{id}/thread), а если нужно постоянное место с названием — создайте его методом [Новый чат](POST /chats). + Перезаписываются только переданные поля. Чтобы продлить текущий статус, достаточно прислать один `expires_at`. + + Срок, названный словами («до трёх», «до конца дня»), — это `expires_at`, а не часть подписи. Считается он в часовом поясе сотрудника, а пояс приходит в методе [Свой профиль](GET /profile). + + Эмодзи обязателен, и он должен быть ровно один, без текста вокруг. Подпись обязательна и не длиннее 50 символов. parameters: [] responses: - '201': - description: The request has succeeded and a new resource has been created as a result. + '200': + description: The request has succeeded. content: application/json: schema: @@ -5294,27 +5243,58 @@ paths: - data properties: data: - $ref: '#/components/schemas/Thread' + $ref: '#/components/schemas/UserStatus' description: Обертка ответа с данными - example: - data: - id: 265142 - chat_id: 2637266155 - message_id: null - message_chat_id: null - updated_at: '2023-02-01T19:20:47.204Z' + '400': + description: The server could not understand the request due to invalid syntax. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/OAuthError' - '402': + '403': + description: Access is forbidden. + content: + application/json: + schema: + $ref: '#/components/schemas/OAuthError' + '422': description: Client error content: application/json: schema: $ref: '#/components/schemas/ApiError' + tags: + - Profile + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/StatusUpdateRequest' + x-requirements: + scope: profile_status:write + delete: + operationId: ProfileOperations_deleteStatus + description: |- + Удаление своего статуса + + Снимает статус с владельца токена вместе с режимом «Нет на месте» и его текстом. Если статуса не было, ответ всё равно `204`, поэтому повторный вызов безопасен. + parameters: [] + responses: + '204': + description: 'There is no content to send for this request, but the headers may be useful. ' + '401': + description: Access is unauthorized. + content: + application/json: + schema: + $ref: '#/components/schemas/OAuthError' '403': description: Access is forbidden. content: @@ -5322,64 +5302,109 @@ paths: schema: $ref: '#/components/schemas/OAuthError' tags: - - Threads + - Profile x-requirements: - scope: threads:create + scope: profile_status:write + /search/chats: get: - operationId: ThreadOperations_listThreads + operationId: SearchOperations_searchChats description: |- - Список тредов + Поиск чатов - Треды, доступные владельцу токена. + Ищет беседы и каналы по названию, прощая опечатки. Находит и открытые чаты пространства, куда вызывающий не вступал, а закрытые — только те, где он состоит. - Возвращаются треды, где вы состоите в самом треде или в чате, в котором он заведён. Участия в треде достаточно: входить в чат с родительским сообщением не нужно, самостоятельные треды тоже приходят. А вот треды из открытых чатов пространства, где вы не состоите, в список не попадают, хотя сами чаты вам доступны. + Личные переписки по умолчанию не ищутся. Передайте `personal=true`, и поиск пойдёт по имени собеседника, а не по названию чата. - Сортировка — по убыванию времени последнего сообщения в треде. + Метод ищет по названиям, а не по содержанию. Если нужно найти, где что-то обсуждали или о чём договорились, это [Поиск сообщений](GET /search/messages). - В элементе списка нет ни названия, ни текста: только идентификаторы треда, его чата и родительского сообщения. Чтобы понять, о чём тред, прочитайте его сообщения методом [Список сообщений чата](GET /messages) по `chat_id`, а нужный тред по содержанию ищут методом [Поиск сообщений](GET /search/messages). + Слишком тяжёлый запрос может не уложиться по времени: тогда метод отвечает `504` с кодом `timeout`, и запрос стоит сузить. parameters: - - name: last_message_at_after + - name: query in: query required: false - description: 'Фильтрация по времени последнего сообщения в треде: вернутся треды, где оно позже указанного. Значение в ISO-8601, смещение вида `+03:00` учитывается, время без смещения считается UTC.' + description: Текст поискового запроса + schema: + type: string + example: Разработка + example: Разработка + explode: false + - name: limit + in: query + required: false + description: Количество возвращаемых результатов за один запрос + schema: + type: integer + format: int32 + maximum: 100 + example: 10 + default: 100 + example: 10 + explode: false + - name: cursor + in: query + required: false + description: Курсор для пагинации (из `meta.paginate.next_page`) + schema: + type: string + example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 + example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 + explode: false + - name: order + in: query + required: false + description: Направление сортировки + schema: + $ref: '#/components/schemas/SortOrder' + example: desc + example: desc + explode: false + - name: created_from + in: query + required: false + description: Фильтр по дате создания (от) schema: type: string format: date-time example: '2025-01-01T00:00:00.000Z' example: '2025-01-01T00:00:00.000Z' explode: false - - name: last_message_at_before + - name: created_to in: query required: false - description: 'Фильтрация по времени последнего сообщения в треде: вернутся треды, где оно раньше указанного. Значение в ISO-8601, смещение вида `+03:00` учитывается, время без смещения считается UTC.' + description: Фильтр по дате создания (до) schema: type: string format: date-time example: '2025-02-01T00:00:00.000Z' example: '2025-02-01T00:00:00.000Z' explode: false - - name: limit + - name: active in: query required: false - description: Количество возвращаемых сущностей за один запрос + description: Фильтр по активности чата schema: - type: integer - format: int32 - minimum: 1 - maximum: 50 - example: 1 - default: 50 - example: 1 + type: boolean + example: true + example: true explode: false - - name: cursor + - name: chat_subtype in: query required: false - description: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`) + description: Фильтр по типу чата schema: - type: string - example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 - example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 - explode: false + $ref: '#/components/schemas/ChatSubtype' + example: discussion + example: discussion + explode: false + - name: personal + in: query + required: false + description: Фильтр по личным чатам + schema: + type: boolean + example: false + example: false + explode: false responses: '200': description: The request has succeeded. @@ -5394,10 +5419,10 @@ paths: data: type: array items: - $ref: '#/components/schemas/Thread' + $ref: '#/components/schemas/Chat' meta: - $ref: '#/components/schemas/PaginationMeta' - description: Обертка ответа с данными и пагинацией + $ref: '#/components/schemas/SearchPaginationMeta' + description: Обертка ответа поисковых результатов с данными и пагинацией '400': description: The server could not understand the request due to invalid syntax. content: @@ -5422,38 +5447,141 @@ paths: application/json: schema: $ref: '#/components/schemas/OAuthError' - '422': - description: Client error + '504': + description: Server error content: application/json: schema: $ref: '#/components/schemas/ApiError' tags: - - Threads + - Search x-paginated: true x-requirements: - scope: threads:read - /threads/{id}: + scope: search:chats + /search/messages: get: - operationId: ThreadOperations_getThread + operationId: SearchOperations_searchMessages description: |- - Информация о треде + Поиск сообщений + + Ищет по тексту сообщений и по именам вложенных файлов, но только в чатах, где владелец токена состоит. Открытый канал, в который он не вступал, в поиск не попадает, хотя ленту его читать можно. Сообщения тредов в выдачу входят. - Идентификаторы треда: его собственный `id`, `chat_id` для чтения и отправки сообщений и идентификаторы сообщения, под которым он висит. У самостоятельного треда `message_id` и `message_chat_id` приходят как `null`. + Слова запроса ищутся по словоформам и по части слова, опечатки при этом не исправляются. Запрос в кавычках ищется строгой фразой, поиск по части слова в нём не работает. - В ответе только идентификаторы: названия и счётчика сообщений у треда нет, о чём он — видно по переписке внутри. Сообщения треда читаются методом [Список сообщений чата](GET /messages), а состав участников — методом [Список участников чата](GET /chats/{id}/members), оба по `chat_id` треда. + По умолчанию сообщения приходят от новых к старым. `sort=relevance` переключает выдачу на соответствие запросу, где свежие сообщения всё равно ценятся выше. - Доступ к треду шире, чем выдача метода [Список тредов](GET /threads): тред, который открывается по `id`, в списке может и не появиться. + Слишком тяжёлый запрос может не уложиться по времени: тогда метод отвечает `504` с кодом `timeout`, и запрос стоит сузить. parameters: - - name: id - in: path - required: true - description: Идентификатор треда + - name: query + in: query + required: false + description: Текст поискового запроса + schema: + type: string + example: футболки + example: футболки + explode: false + - name: limit + in: query + required: false + description: Количество возвращаемых результатов за один запрос schema: type: integer format: int32 - example: 265142 - example: 265142 + maximum: 200 + example: 10 + default: 200 + example: 10 + explode: false + - name: cursor + in: query + required: false + description: Курсор для пагинации (из `meta.paginate.next_page`) + schema: + type: string + example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 + example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 + explode: false + - name: order + in: query + required: false + description: Направление сортировки + schema: + $ref: '#/components/schemas/SortOrder' + example: desc + example: desc + explode: false + - name: sort + in: query + required: false + description: Сортировка результатов + schema: + allOf: + - $ref: '#/components/schemas/MessageSearchSort' + default: created_at + example: created_at + explode: false + - name: created_from + in: query + required: false + description: Фильтр по дате создания (от) + schema: + type: string + format: date-time + example: '2025-01-01T00:00:00.000Z' + example: '2025-01-01T00:00:00.000Z' + explode: false + - name: created_to + in: query + required: false + description: Фильтр по дате создания (до) + schema: + type: string + format: date-time + example: '2025-02-01T00:00:00.000Z' + example: '2025-02-01T00:00:00.000Z' + explode: false + - name: chat_ids + in: query + required: false + description: Фильтр по ID чатов + schema: + type: array + items: + type: integer + format: int32 + example: + - 198 + - 334 + example: + - 198 + - 334 + explode: false + - name: user_ids + in: query + required: false + description: Фильтр по ID авторов сообщений + schema: + type: array + items: + type: integer + format: int32 + example: + - 12 + - 185 + example: + - 12 + - 185 + explode: false + - name: active + in: query + required: false + description: Фильтр по активности чата + schema: + type: boolean + example: true + example: true + explode: false responses: '200': description: The request has succeeded. @@ -5463,57 +5591,21 @@ paths: type: object required: - data + - meta properties: data: - $ref: '#/components/schemas/Thread' - description: Обертка ответа с данными - '401': - description: Access is unauthorized. - content: - application/json: - schema: - $ref: '#/components/schemas/OAuthError' - '402': - description: Client error - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' - '403': - description: Access is forbidden. - content: - application/json: - schema: - $ref: '#/components/schemas/OAuthError' - '404': - description: The server cannot find the requested resource. + type: array + items: + $ref: '#/components/schemas/Message' + meta: + $ref: '#/components/schemas/SearchPaginationMeta' + description: Обертка ответа поисковых результатов с данными и пагинацией + '400': + description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/ApiError' - tags: - - Threads - x-requirements: - scope: threads:read - /uploads: - post: - operationId: UploadOperations_getUploadParams - description: |- - Получение подписи, ключа и других параметров - - Первый шаг загрузки файла: метод выдаёт адрес хранилища и подписанные поля формы, с которыми файл заливают следующим запросом. - - Ничего в Пачке при этом ещё не создаётся: загруженный файл никому не виден и ни к чему не привязан. Вложением он становится, когда его `key` передан в поле `files` — в [Новое сообщение](POST /messages) или [Новый черновик](POST /drafts), а также при их правке. - - Параметры выдаются на один файл: для каждого следующего запрашивайте их заново. Подпись действует 14 дней, а `key` привязан к владельцу токена, поэтому чужой ключ приложить к своему сообщению не получится. - parameters: [] - responses: - '201': - description: The request has succeeded and a new resource has been created as a result. - content: - application/json: - schema: - $ref: '#/components/schemas/UploadParams' '401': description: Access is unauthorized. content: @@ -5532,102 +5624,35 @@ paths: application/json: schema: $ref: '#/components/schemas/OAuthError' + '504': + description: Server error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' tags: - - Files + - Search + x-paginated: true x-requirements: - scope: uploads:write - /users: - post: - operationId: UserOperations_createUser + scope: search:messages + /search/users: + get: + operationId: SearchOperations_searchUsers description: |- - Новый сотрудник - - Заводит сотрудника в пространстве и отправляет ему приглашение на почту. Доступно владельцу пространства и администратору, боту метод недоступен. + Поиск сотрудников - Если сотрудник с этим адресом уже есть в пространстве, метод отвечает `409`. Занятый ник ошибкой не считается: к нему молча дописываются случайные символы, и в ответе приходит уже изменённый. + Ищет сотрудников по имени и фамилии, нику, должности и отделу. Опечатки прощаются только в имени и фамилии, остальным полям нужно точное слово. - Вы можете заполнять дополнительные поля сотрудника, которые созданы в вашей компании. Получить актуальный список идентификаторов дополнительных полей сотрудника вы можете в методе [Список дополнительных полей](GET /custom_properties). + По почте метод ищет лишь тем, кому в пространстве видны персональные данные. По телефону он не ищет вовсе — для этого есть [Список сотрудников](GET /users) с параметром `query`. - Поле `list_tags` сразу заводит сотрудника в теги, а вместе с тегами — и в чаты, к которым эти теги привязаны. У гостя теги не назначаются вовсе: ответ приходит успешный, а `list_tags` в нём пустой. + Удалённые сотрудники не находятся никогда, приостановленные — только когда задан текстовый запрос, и стоят в выдаче ниже остальных. Из ботов находятся лишь публичные. - Через параметр `chat_ids` сотрудника можно сразу добавить в указанные чаты. Чтобы создать гостя, передайте `role: "guest"` — для этой роли `chat_ids` обязателен и должен содержать ровно один активный чат, в который у токена есть право добавлять участников. При нарушении правил гостевого доступа возвращается `400` с ошибкой по полю `chat_ids`. - parameters: [] - responses: - '201': - description: The request has succeeded and a new resource has been created as a result. - content: - application/json: - schema: - type: object - required: - - data - properties: - data: - $ref: '#/components/schemas/User' - description: Обертка ответа с данными - '400': - description: The server could not understand the request due to invalid syntax. - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' - '401': - description: Access is unauthorized. - content: - application/json: - schema: - $ref: '#/components/schemas/OAuthError' - '402': - description: Client error - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' - '403': - description: Access is forbidden. - content: - application/json: - schema: - $ref: '#/components/schemas/OAuthError' - '409': - description: The request conflicts with the current state of the server. - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' - '422': - description: Client error - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' - tags: - - Users - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/UserCreateRequest' - x-requirements: - scope: users:create - get: - operationId: UserOperations_listUsers - description: |- - Список сотрудников - - Все сотрудники пространства, кроме удалённых. Приостановленные приходят вместе с остальными и отличаются полем `suspended`. - - Боты в пространстве — тоже сотрудники и приходят в общем списке с `bot: true`. Но из выдачи по `query` они исключены: чтобы найти бота по имени, перебирайте страницы без поискового запроса или пользуйтесь методом [Список ботов](GET /bots). - - Почта и телефон приходят `null`, если в пространстве выключен показ персональных данных, а вызывающий не администратор. - - Карточку одного сотрудника отдаёт [Информация о сотруднике](GET /users/{id}), свою — [Свой профиль](GET /profile). + Слишком тяжёлый запрос может не уложиться по времени: тогда метод отвечает `504` с кодом `timeout`, и запрос стоит сузить. parameters: - name: query in: query required: false - description: 'Поисковая фраза для фильтрации результатов. Поиск работает по полям: `first_name` (имя), `last_name` (фамилия), `email` (электронная почта), `phone_number` (телефон) и `nickname` (никнейм).' + description: Текст поискового запроса schema: type: string example: Олег @@ -5636,25 +5661,77 @@ paths: - name: limit in: query required: false - description: Количество возвращаемых сущностей за один запрос + description: Количество возвращаемых результатов за один запрос schema: type: integer format: int32 - minimum: 1 - maximum: 50 - example: 1 - default: 50 - example: 1 + maximum: 200 + example: 10 + default: 200 + example: 10 explode: false - name: cursor in: query required: false - description: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`) + description: Курсор для пагинации (из `meta.paginate.next_page`) schema: type: string example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 explode: false + - name: sort + in: query + required: false + description: Сортировка результатов + schema: + $ref: '#/components/schemas/SearchSortOrder' + example: by_score + example: by_score + explode: false + - name: order + in: query + required: false + description: Направление сортировки + schema: + $ref: '#/components/schemas/SortOrder' + example: desc + example: desc + explode: false + - name: created_from + in: query + required: false + description: Фильтр по дате создания (от) + schema: + type: string + format: date-time + example: '2025-01-01T00:00:00.000Z' + example: '2025-01-01T00:00:00.000Z' + explode: false + - name: created_to + in: query + required: false + description: Фильтр по дате создания (до) + schema: + type: string + format: date-time + example: '2025-02-01T00:00:00.000Z' + example: '2025-02-01T00:00:00.000Z' + explode: false + - name: company_roles + in: query + required: false + description: Фильтр по ролям сотрудников + schema: + type: array + items: + $ref: '#/components/schemas/UserRole' + example: + - admin + - user + example: + - admin + - user + explode: false responses: '200': description: The request has succeeded. @@ -5671,8 +5748,8 @@ paths: items: $ref: '#/components/schemas/User' meta: - $ref: '#/components/schemas/PaginationMeta' - description: Обертка ответа с данными и пагинацией + $ref: '#/components/schemas/SearchPaginationMeta' + description: Обертка ответа поисковых результатов с данными и пагинацией '400': description: The server could not understand the request due to invalid syntax. content: @@ -5697,106 +5774,40 @@ paths: application/json: schema: $ref: '#/components/schemas/OAuthError' - '422': - description: Client error + '504': + description: Server error content: application/json: schema: $ref: '#/components/schemas/ApiError' tags: - - Users + - Search x-paginated: true x-requirements: - scope: users:read - /users/{id}: - get: - operationId: UserOperations_getUser + scope: search:users + /tasks: + post: + operationId: TaskOperations_createTask description: |- - Информация о сотруднике - - Карточка сотрудника. + Новое напоминание - Приостановленный сотрудник отдаётся с `suspended: true`, удалённый — `404`, как несуществующий. Бот тоже приходит сюда как сотрудник, с `bot: true`. + Создаёт напоминание и назначает на него ответственных. - Почта и телефон приходят `null`, если в пространстве выключен показ персональных данных, а вызывающий не администратор. Свою карточку сотрудник видит целиком — она же отдаётся методом [Свой профиль](GET /profile) и без скоупа `users:read`. - parameters: - - name: id - in: path - required: true - description: Идентификатор пользователя - schema: - type: integer - format: int32 - example: 12 - example: 12 - responses: - '200': - description: The request has succeeded. - content: - application/json: - schema: - type: object - required: - - data - properties: - data: - $ref: '#/components/schemas/User' - description: Обертка ответа с данными - '401': - description: Access is unauthorized. - content: - application/json: - schema: - $ref: '#/components/schemas/OAuthError' - '402': - description: Client error - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' - '403': - description: Access is forbidden. - content: - application/json: - schema: - $ref: '#/components/schemas/OAuthError' - '404': - description: The server cannot find the requested resource. - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' - tags: - - Users - x-requirements: - scope: users:read - put: - operationId: UserOperations_updateUser - description: |- - Редактирование сотрудника + При создании напоминания обязательно указать его тип: звонок, встреча, простое напоминание, событие или письмо. Описание при этом не требуется — напоминание создастся с текстом по типу. Если описание передано, именно оно и станет текстом напоминания. - Меняет карточку сотрудника: перезаписываются только переданные поля. Идентификаторы дополнительных полей отдаёт [Список дополнительных полей](GET /custom_properties). + У напоминания должны быть ответственные. Если их не указать, ответственным становится владелец токена. - Поле `list_tags` заменяет набор тегов целиком, поэтому присылайте вместе с новым тегом и те, что сохраняются. Снятый тег выводит сотрудника из чатов, куда его привёл этот тег, а имя, которого в пространстве ещё нет, создаёт новый тег вместе с назначением. + Ответственным для напоминания без привязки к каким-либо сущностям может стать любой сотрудник компании. Актуальный состав сотрудников компании вы можете получить в методе [Список сотрудников](GET /users). Ответственные, которых вызывающий не видит, молча отбрасываются: ответ приходит успешным, а в `performer_ids` их нет, поэтому сверяйте состав в ответе. - `suspended: true` приостанавливает сотрудника: он теряет доступ, но остаётся в чатах, тегах и задачах, а `suspended: false` возвращает его обратно. Насовсем убирает сотрудника [Удаление сотрудника](DELETE /users/{id}). + Напоминание можно привязать к беседе полем `chat_id` — тогда кроме автора и ответственных его видят участники этой беседы. Привязывающий должен сам в ней состоять. В канале, в треде и в архивном чате напоминания не создаются. - Владельца пространства редактирует только он сам, а его роль меняется лишь на администратора. Перевести обычного сотрудника в гостя нельзя — в обоих случаях ответ `403`. + Передать напоминание другому сотруднику — значит сменить ответственного методом [Редактирование напоминания](PUT /tasks/{id}). - Незнакомое значение роли метод молча пропускает: ответ приходит успешный, а роль остаётся прежней. - parameters: - - name: id - in: path - required: true - description: Идентификатор пользователя - schema: - type: integer - format: int32 - example: 12 - example: 12 + Если к пространству или к профилю подключён календарь, напоминание заодно появляется в нём событием. + parameters: [] responses: - '200': - description: The request has succeeded. + '201': + description: The request has succeeded and a new resource has been created as a result. content: application/json: schema: @@ -5805,7 +5816,7 @@ paths: - data properties: data: - $ref: '#/components/schemas/User' + $ref: '#/components/schemas/Task' description: Обертка ответа с данными '400': description: The server could not understand the request due to invalid syntax. @@ -5837,12 +5848,6 @@ paths: application/json: schema: $ref: '#/components/schemas/ApiError' - '409': - description: The request conflicts with the current state of the server. - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' '422': description: Client error content: @@ -5850,40 +5855,178 @@ paths: schema: $ref: '#/components/schemas/ApiError' tags: - - Users + - Tasks requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/UserUpdateRequest' + $ref: '#/components/schemas/TaskCreateRequest' x-requirements: - scope: users:update - delete: - operationId: UserOperations_deleteUser + scope: tasks:create + get: + operationId: TaskOperations_listTasks description: |- - Удаление сотрудника - - Убирает сотрудника из пространства. Отменить это нельзя: вернуть его можно только новым приглашением, и это будет уже другой сотрудник. - - Что происходит: он выходит из всех бесед и каналов, кроме личных переписок, с него снимаются все теги, задачи, где он был единственным исполнителем, удаляются, а из остальных он убирается. Написанные им сообщения и файлы остаются на месте. + Список напоминаний - Владельца пространства удалить нельзя — метод ответит `403`. Повторный вызов отвечает `404`: удалённого сотрудника метод уже не находит. + Напоминания, доступные владельцу токена. - Если сотрудник уходит в отпуск или увольнение ещё не финальное, пользуйтесь методом [Редактирование сотрудника](PUT /users/{id}) с `suspended: true`. Приостановка обратима и сохраняет чаты, теги и задачи. + Без параметра `chat_ids` возвращаются только ваши напоминания: из бесед и каналов, где вы состоите участником, а также созданные вами или назначенные вам напоминания без привязки к чату. Параметр `chat_ids` меняет выборку — возвращаются все напоминания указанных чатов, включая чужие. parameters: - - name: id - in: path - required: true - description: Идентификатор пользователя + - name: status + in: query + required: false + description: Фильтр по состоянию. Если параметр не указан, возвращаются напоминания в любом состоянии. schema: - type: integer - format: int32 - example: 12 - example: 12 + $ref: '#/components/schemas/TaskStatus' + example: undone + example: undone + explode: false + - name: chat_ids + in: query + required: false + description: Фильтр по чатам, к которым привязаны напоминания. Доступными считаются чаты, где вы состоите участником, открытые беседы и каналы пространства, а также треды, доступные вам по родительскому чату. Мульти-гостю открытые беседы и каналы доступны, только если он в них участник. Остальные переданные идентификаторы игнорируются без ошибки. Не более 100 идентификаторов. + schema: + type: array + items: + type: integer + format: int32 + maxItems: 100 + example: + - 198 + - 334 + example: + - 198 + - 334 + explode: false + - name: performer_ids + in: query + required: false + description: Фильтр по ответственным за напоминание. Не более 100 идентификаторов. + schema: + type: array + items: + type: integer + format: int32 + maxItems: 100 + example: + - 12 + - 185 + example: + - 12 + - 185 + explode: false + - name: author_id + in: query + required: false + description: Фильтр по автору напоминания + schema: + type: integer + format: int32 + example: 12 + example: 12 + explode: false + - name: limit + in: query + required: false + description: Количество возвращаемых сущностей за один запрос + schema: + type: integer + format: int32 + minimum: 1 + maximum: 50 + example: 1 + default: 50 + example: 1 + explode: false + - name: cursor + in: query + required: false + description: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`) + schema: + type: string + example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 + example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 + explode: false responses: - '204': - description: 'There is no content to send for this request, but the headers may be useful. ' + '200': + description: The request has succeeded. + content: + application/json: + schema: + type: object + required: + - data + - meta + properties: + data: + type: array + items: + $ref: '#/components/schemas/Task' + meta: + $ref: '#/components/schemas/PaginationMeta' + description: Обертка ответа с данными и пагинацией + '400': + description: The server could not understand the request due to invalid syntax. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: Access is unauthorized. + content: + application/json: + schema: + $ref: '#/components/schemas/OAuthError' + '402': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '403': + description: Access is forbidden. + content: + application/json: + schema: + $ref: '#/components/schemas/OAuthError' + tags: + - Tasks + x-paginated: true + x-requirements: + scope: tasks:read + /tasks/{id}: + get: + operationId: TaskOperations_getTask + description: |- + Информация о напоминании + + Напоминание вместе с его автором, ответственными и чатом, к которому оно привязано. + + Напоминание видят его автор, ответственные и участники чата, к которому оно привязано. Участия в чате хватает, чтобы прочитать, но не чтобы изменить: править и удалять напоминание могут только автор и ответственные. + parameters: + - name: id + in: path + required: true + description: Идентификатор напоминания + schema: + type: integer + format: int32 + example: 22283 + example: 22283 + responses: + '200': + description: The request has succeeded. + content: + application/json: + schema: + type: object + required: + - data + properties: + data: + $ref: '#/components/schemas/Task' + description: Обертка ответа с данными '401': description: Access is unauthorized. content: @@ -5909,30 +6052,31 @@ paths: schema: $ref: '#/components/schemas/ApiError' tags: - - Users + - Tasks x-requirements: - scope: users:delete - /users/{user_id}/avatar: + scope: tasks:read put: - operationId: UserAvatarOperations_updateUserAvatar + operationId: TaskOperations_updateTask description: |- - Загрузка аватара сотрудника + Редактирование напоминания - Ставит или заменяет аватар другому сотруднику. Доступно владельцу пространства и администратору, боту метод недоступен. Аватар владельца пространства меняет только он сам. + Меняет напоминание: перезаписываются только переданные поля. - Файл передаётся в формате `multipart/form-data`, в ответе приходит только ссылка на новое изображение. Принимаются `jpg`, `jpeg`, `png` и `gif`, анимированный `gif` — не больше 2 МБ, картинка уменьшается до 1024 на 1024 пикселя. + Передать напоминание другому сотруднику — это тоже правка: добавьте его в `performer_ids` вместо прежнего. - Свой аватар ставят методом [Загрузка своего аватара](PUT /profile/avatar) — он доступен всем ролям и ботам. + Выполненное напоминание закрывают этим же методом: `status: "done"` ставит галочку и оставляет напоминание в списке, `status: "undone"` возвращает его в работу. + + Доступно автору и ответственным. Участник чата, где висит напоминание, его видит, но менять не может. Привязку к чату изменить нельзя: чтобы перевесить напоминание в другой чат, удалите его и создайте заново с нужным `chat_id`. parameters: - - name: user_id + - name: id in: path required: true - description: Идентификатор пользователя + description: Идентификатор напоминания schema: type: integer format: int32 - example: 12 - example: 12 + example: 22283 + example: 22283 responses: '200': description: The request has succeeded. @@ -5944,8 +6088,14 @@ paths: - data properties: data: - $ref: '#/components/schemas/AvatarData' + $ref: '#/components/schemas/Task' description: Обертка ответа с данными + '400': + description: The server could not understand the request due to invalid syntax. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' '401': description: Access is unauthorized. content: @@ -5963,9 +6113,7 @@ paths: content: application/json: schema: - anyOf: - - $ref: '#/components/schemas/ApiError' - - $ref: '#/components/schemas/OAuthError' + $ref: '#/components/schemas/OAuthError' '404': description: The server cannot find the requested resource. content: @@ -5979,40 +6127,35 @@ paths: schema: $ref: '#/components/schemas/ApiError' tags: - - Users + - Tasks requestBody: required: true content: - multipart/form-data: + application/json: schema: - type: object - properties: - image: - type: string - format: binary - description: Файл изображения для аватара - required: - - image + $ref: '#/components/schemas/TaskUpdateRequest' x-requirements: - scope: user_avatar:write + scope: tasks:update delete: - operationId: UserAvatarOperations_deleteUserAvatar + operationId: TaskOperations_deleteTask description: |- - Удаление аватара сотрудника + Удаление напоминания - Убирает аватар другому сотруднику, дальше в интерфейсе показываются инициалы. Доступно владельцу пространства и администратору, боту метод недоступен, а аватар владельца пространства убирает только он сам. + Убирает напоминание насовсем: восстановить его нельзя, и у ответственных оно тоже пропадает. Если напоминание уехало в подключённый календарь, событие удаляется и там. - Если аватара не было, ответ всё равно `204`. + Доступно автору и ответственным. Повторный вызов отвечает `404`. + + Закрыть выполненное напоминание, сохранив его в списке, можно методом [Редактирование напоминания](PUT /tasks/{id}) со `status: "done"`. parameters: - - name: user_id + - name: id in: path required: true - description: Идентификатор пользователя + description: Идентификатор напоминания schema: type: integer format: int32 - example: 12 - example: 12 + example: 22283 + example: 22283 responses: '204': description: 'There is no content to send for this request, but the headers may be useful. ' @@ -6033,9 +6176,7 @@ paths: content: application/json: schema: - anyOf: - - $ref: '#/components/schemas/ApiError' - - $ref: '#/components/schemas/OAuthError' + $ref: '#/components/schemas/OAuthError' '404': description: The server cannot find the requested resource. content: @@ -6043,31 +6184,24 @@ paths: schema: $ref: '#/components/schemas/ApiError' tags: - - Users + - Tasks x-requirements: - scope: user_avatar:write - /users/{user_id}/status: - get: - operationId: UserStatusOperations_getUserStatus + scope: tasks:delete + /threads: + post: + operationId: ThreadOperations_createStandaloneThread description: |- - Статус сотрудника + Новый самостоятельный тред - Статус другого сотрудника: эмодзи, подпись, срок и режим «Нет на месте». + Заводит тред, который ни к чему не привязан: место для разговора, диалога с агентом или звонка, которому не нужен отдельный чат. Собрать в нём можно любых сотрудников. - Если статус не установлен, метод возвращает `200` и `null` в теле ответа — без объекта-обёртки. Статус с истёкшим `expires_at` какое-то время ещё возвращается, пока не будет очищен, поэтому проверяйте `expires_at` на стороне клиента. - parameters: - - name: user_id - in: path - required: true - description: Идентификатор пользователя - schema: - type: integer - format: int32 - example: 12 - example: 12 + Тело запроса не требуется. Создатель треда становится его единственным участником, а поля `message_id` и `message_chat_id` в ответе возвращаются как `null`. Добавить в тред участников проще всего упоминанием: `@ник` или `@тег` в начале или в конце текста сообщения. Можно и методом [Добавление пользователей](POST /chats/{id}/members) по `chat_id` треда. + + Названия у треда нет, поэтому сразу отправьте в него первое сообщение — по нему сотрудники и поймут, о чём речь. Удалить тред нельзя. Если обсуждать нужно конкретное сообщение в чате, заводите тред под ним методом [Новый тред](POST /messages/{id}/thread), а если нужно постоянное место с названием — создайте его методом [Новый чат](POST /chats). + parameters: [] responses: - '200': - description: The request has succeeded. + '201': + description: The request has succeeded and a new resource has been created as a result. content: application/json: schema: @@ -6076,55 +6210,92 @@ paths: - data properties: data: - $ref: '#/components/schemas/UserStatus' + $ref: '#/components/schemas/Thread' description: Обертка ответа с данными - nullable: true + example: + data: + id: 265142 + chat_id: 2637266155 + message_id: null + message_chat_id: null + updated_at: '2023-02-01T19:20:47.204Z' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/OAuthError' - '403': - description: Access is forbidden. + '402': + description: Client error content: application/json: schema: - $ref: '#/components/schemas/OAuthError' - '404': - description: The server cannot find the requested resource. + $ref: '#/components/schemas/ApiError' + '403': + description: Access is forbidden. content: application/json: schema: - $ref: '#/components/schemas/ApiError' + $ref: '#/components/schemas/OAuthError' tags: - - Users + - Threads x-requirements: - scope: user_status:read - put: - operationId: UserStatusOperations_updateUserStatus + scope: threads:create + get: + operationId: ThreadOperations_listThreads description: |- - Новый статус сотрудника - - Ставит статус другому сотруднику — например, «в отпуске» на время отсутствия. Доступно владельцу пространства и администратору, боту метод недоступен даже с выданным скоупом. + Список тредов - Этим же методом сотруднику включают режим «Нет на месте» флагом `is_away` и задают текст `away_message`, который увидят при попытке к нему обратиться. + Треды, доступные владельцу токена. - Статус видят все, кто видит сотрудника в пространстве. Перезаписываются только переданные поля, поэтому продлить чужой статус можно одним `expires_at`. + Возвращаются треды, где вы состоите в самом треде или в чате, в котором он заведён. Участия в треде достаточно: входить в чат с родительским сообщением не нужно, самостоятельные треды тоже приходят. А вот треды из открытых чатов пространства, где вы не состоите, в список не попадают, хотя сами чаты вам доступны. - Срок, названный словами, — это `expires_at`, а не часть подписи, и считается он в часовом поясе того сотрудника, которому ставят статус. Эмодзи обязателен и ровно один, подпись обязательна и не длиннее 50 символов. + Сортировка — по убыванию времени последнего сообщения в треде. - Свой статус ставят методом [Новый свой статус](PUT /profile/status) — он доступен всем ролям и ботам. + В элементе списка нет ни названия, ни текста: только идентификаторы треда, его чата и родительского сообщения. Чтобы понять, о чём тред, прочитайте его сообщения методом [Список сообщений чата](GET /messages) по `chat_id`, а нужный тред по содержанию ищут методом [Поиск сообщений](GET /search/messages). parameters: - - name: user_id - in: path - required: true - description: Идентификатор пользователя + - name: last_message_at_after + in: query + required: false + description: 'Фильтрация по времени последнего сообщения в треде: вернутся треды, где оно позже указанного. Значение в ISO-8601, смещение вида `+03:00` учитывается, время без смещения считается UTC.' + schema: + type: string + format: date-time + example: '2025-01-01T00:00:00.000Z' + example: '2025-01-01T00:00:00.000Z' + explode: false + - name: last_message_at_before + in: query + required: false + description: 'Фильтрация по времени последнего сообщения в треде: вернутся треды, где оно раньше указанного. Значение в ISO-8601, смещение вида `+03:00` учитывается, время без смещения считается UTC.' + schema: + type: string + format: date-time + example: '2025-02-01T00:00:00.000Z' + example: '2025-02-01T00:00:00.000Z' + explode: false + - name: limit + in: query + required: false + description: Количество возвращаемых сущностей за один запрос schema: type: integer format: int32 - example: 12 - example: 12 + minimum: 1 + maximum: 50 + example: 1 + default: 50 + example: 1 + explode: false + - name: cursor + in: query + required: false + description: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`) + schema: + type: string + example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 + example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 + explode: false responses: '200': description: The request has succeeded. @@ -6134,10 +6305,15 @@ paths: type: object required: - data + - meta properties: data: - $ref: '#/components/schemas/UserStatus' - description: Обертка ответа с данными + type: array + items: + $ref: '#/components/schemas/Thread' + meta: + $ref: '#/components/schemas/PaginationMeta' + description: Обертка ответа с данными и пагинацией '400': description: The server could not understand the request due to invalid syntax. content: @@ -6150,18 +6326,18 @@ paths: application/json: schema: $ref: '#/components/schemas/OAuthError' - '403': - description: Access is forbidden. + '402': + description: Client error content: application/json: schema: - $ref: '#/components/schemas/OAuthError' - '404': - description: The server cannot find the requested resource. + $ref: '#/components/schemas/ApiError' + '403': + description: Access is forbidden. content: application/json: schema: - $ref: '#/components/schemas/ApiError' + $ref: '#/components/schemas/OAuthError' '422': description: Client error content: @@ -6169,42 +6345,56 @@ paths: schema: $ref: '#/components/schemas/ApiError' tags: - - Users - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/StatusUpdateRequest' + - Threads + x-paginated: true x-requirements: - scope: user_status:write - delete: - operationId: UserStatusOperations_deleteUserStatus + scope: threads:read + /threads/{id}: + get: + operationId: ThreadOperations_getThread description: |- - Удаление статуса сотрудника + Информация о треде - Снимает статус с другого сотрудника вместе с режимом «Нет на месте» и его текстом. Доступно владельцу пространства и администратору, боту метод недоступен. + Идентификаторы треда и сообщения, под которым он висит. По `id` в тред пишут методом [Новое сообщение](POST /messages) с `entity_type: "thread"`, а по `chat_id` читают его сообщения. У самостоятельного треда `message_id` и `message_chat_id` приходят как `null`. - Если статуса не было, ответ всё равно `204`. Свой статус снимает [Удаление своего статуса](DELETE /profile/status). + В ответе только идентификаторы: названия и счётчика сообщений у треда нет, о чём он — видно по переписке внутри. Сообщения треда читаются методом [Список сообщений чата](GET /messages), а состав участников — методом [Список участников чата](GET /chats/{id}/members), оба по `chat_id` треда. + + Доступ к треду шире, чем выдача метода [Список тредов](GET /threads): тред, который открывается по `id`, в списке может и не появиться. parameters: - - name: user_id + - name: id in: path required: true - description: Идентификатор пользователя + description: Идентификатор треда schema: type: integer format: int32 - example: 12 - example: 12 + example: 265142 + example: 265142 responses: - '204': - description: 'There is no content to send for this request, but the headers may be useful. ' + '200': + description: The request has succeeded. + content: + application/json: + schema: + type: object + required: + - data + properties: + data: + $ref: '#/components/schemas/Thread' + description: Обертка ответа с данными '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/OAuthError' + '402': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' '403': description: Access is forbidden. content: @@ -6218,30 +6408,28 @@ paths: schema: $ref: '#/components/schemas/ApiError' tags: - - Users + - Threads x-requirements: - scope: user_status:write - /views/open: + scope: threads:read + /uploads: post: - operationId: FormOperations_openView + operationId: UploadOperations_getUploadParams description: |- - Открытие представления + Получение подписи, ключа и других параметров - Показывает пользователю модальное окно с формой в ответ на его действие. Метод вызывают токеном бота: события о нажатии кнопок приходят только ботам, от имени бота окно и открывается. + Первый шаг загрузки файла: метод выдаёт адрес хранилища и подписанные поля формы, с которыми файл заливают следующим запросом. - Открыть окно можно единственным способом — по `trigger_id` из события о нажатии кнопки. Один `trigger_id` открывает одно окно и живёт 3 секунды: у бота с вебхуком — с момента, когда Пачка передала нажатие, у бота с [Журналом событий](GET /webhooks/events) — с момента записи нажатия в журнал. Поэтому окно открывают первым делом, а всё остальное по событию делают уже после. + Ничего в Пачке при этом ещё не создаётся: загруженный файл никому не виден и ни к чему не привязан. Вложением он становится, когда его `key` передан в поле `files` — в [Новое сообщение](POST /messages) или [Новый черновик](POST /drafts), а также при их правке. - Заполненная форма приходит обратно событием `view_submit`: на исходящий вебхук, а если адрес не задан — в журнал. На вебхук отвечают прямо в ответе на него, и Пачка ждёт его 3 секунды. Событие из журнала закрывают методом [Ответ на отправку формы](POST /views/{view_id}/submit_response), на это есть 5 секунд. Не успели — пользователь увидит ошибку отправки. + Параметры выдаются на один файл: для каждого следующего запрашивайте их заново. Подпись действует 14 дней, а `key` привязан к владельцу токена, поэтому чужой ключ приложить к своему сообщению не получится. parameters: [] responses: '201': description: The request has succeeded and a new resource has been created as a result. - '400': - description: The server could not understand the request due to invalid syntax. content: application/json: schema: - $ref: '#/components/schemas/ApiError' + $ref: '#/components/schemas/UploadParams' '401': description: Access is unauthorized. content: @@ -6260,57 +6448,45 @@ paths: application/json: schema: $ref: '#/components/schemas/OAuthError' - '410': - description: Client error - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' - '422': - description: Client error - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' tags: - - Views - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/OpenViewRequest' + - Files x-requirements: - scope: views:write - /views/{view_id}/submit_response: + scope: uploads:write + /users: post: - operationId: FormOperations_submitViewResponse + operationId: UserOperations_createUser description: |- - Ответ на отправку формы + Новый сотрудник - Закрывает форму сотруднику или показывает ему ошибки под полями. Метод нужен боту, у которого не задан адрес исходящего вебхука: отвечать на вебхук такому боту некуда, и событие `view_submit` он получает из метода [История событий](GET /webhooks/events). Если адрес вебхука задан, отвечайте прямо на вебхук — это проще и не требует опроса журнала. + Заводит сотрудника в пространстве и отправляет ему приглашение на почту. Доступно владельцу пространства и администратору, боту метод недоступен. - Идентификаторы `view_id` и `submit_id` приходят в теле события. Ответить нужно в течение 5 секунд с момента отправки формы, иначе сотрудник увидит ошибку отправки, а значения полей сохранятся для повторной попытки. + Если сотрудник с этим адресом уже есть в пространстве, метод отвечает `409`. Занятый ник ошибкой не считается: к нему молча дописываются случайные символы, и в ответе приходит уже изменённый. - Тело без поля `errors` закрывает форму как успешно отправленную, с полем `errors` — показывает текст ошибки под каждым названным полем. + Вы можете заполнять дополнительные поля сотрудника, которые созданы в вашей компании. Получить актуальный список идентификаторов дополнительных полей сотрудника вы можете в методе [Список дополнительных полей](GET /custom_properties). - Ответ принимается один раз. Повторный вызов с той же парой `view_id` и `submit_id`, как и опоздавший, получает `410` с кодом `submit_expired`. - parameters: - - name: view_id - in: path - required: true - description: Идентификатор представления - schema: - type: string - example: 01KAJZ2XDSS2S3DSW9EXJZ0TBV - example: 01KAJZ2XDSS2S3DSW9EXJZ0TBV + Поле `list_tags` сразу заводит сотрудника в теги, а вместе с тегами — и в чаты, к которым эти теги привязаны. У гостя теги не назначаются вовсе: ответ приходит успешный, а `list_tags` в нём пустой. + + Через параметр `chat_ids` сотрудника можно сразу добавить в указанные чаты. Чтобы создать гостя, передайте `role: "guest"` — для этой роли `chat_ids` обязателен и должен содержать ровно один активный чат, в который у токена есть право добавлять участников. При нарушении правил гостевого доступа возвращается `400` с ошибкой по полю `chat_ids`. + parameters: [] responses: - '200': - description: The request has succeeded. + '201': + description: The request has succeeded and a new resource has been created as a result. content: application/json: schema: - $ref: '#/components/schemas/SubmitViewResponseResult' + type: object + required: + - data + properties: + data: + $ref: '#/components/schemas/User' + description: Обертка ответа с данными + '400': + description: The server could not understand the request due to invalid syntax. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' '401': description: Access is unauthorized. content: @@ -6329,14 +6505,8 @@ paths: application/json: schema: $ref: '#/components/schemas/OAuthError' - '404': - description: The server cannot find the requested resource. - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' - '410': - description: Client error + '409': + description: The request conflicts with the current state of the server. content: application/json: schema: @@ -6347,36 +6517,42 @@ paths: application/json: schema: $ref: '#/components/schemas/ApiError' - '503': - description: Service unavailable. - content: - application/json: - schema: - $ref: '#/components/schemas/ApiError' tags: - - Views + - Users requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/SubmitViewResponseRequest' + $ref: '#/components/schemas/UserCreateRequest' x-requirements: - scope: views:write - /webhooks/events: + scope: users:create get: - operationId: BotOperations_getWebhookEvents + operationId: UserOperations_listUsers description: |- - История событий + Список сотрудников - Журнал событий бота: то же самое, что уходит в исходящий вебхук, но забирается запросом. Метод нужен, когда принимать вебхуки на свой адрес нельзя — обработчик недоступен из интернета, поднимается не всегда или пишется прямо сейчас. + Все сотрудники пространства, кроме удалённых. Приостановленные приходят вместе с остальными и отличаются полем `suspended`. - Журнал ведётся, только когда в настройках бота включён пункт «Сохранять историю событий» во вкладке «Исходящий webhook». Адрес вебхука при этом можно не указывать вовсе, а если он указан, событие и уедет на него, и ляжет в журнал. + Боты в пространстве — тоже сотрудники и приходят в общем списке с `bot: true`. Но из выдачи по `query` они исключены: чтобы найти бота по имени, перебирайте страницы без поискового запроса или пользуйтесь методом [Список ботов](GET /bots). - Метод работает только с токеном бота: у личного токена своего журнала нет. События отдаются от новых к старым, идентификатор события — строка, а не число. + Мульти-гостю метод отдаёт не всё пространство, а тех, кого он видит в интерфейсе: его самого, участников общих с ним чатов вместе с ботами и публичных ботов. Треды и архивные чаты общими не считаются. - Сам журнал не очищается: прочитанные события удаляйте методом [Удаление события](DELETE /webhooks/events/{id}), иначе они придут снова при повторном запросе. + Почта и телефон приходят `null`, если в пространстве выключен показ персональных данных, а вызывающий не администратор. Мульти-гостю они всегда приходят `null`. + + Поиск по `query` может не уложиться по времени: тогда метод отвечает `504` с кодом `timeout`, и запрос стоит сузить. + + Карточку одного сотрудника отдаёт [Информация о сотруднике](GET /users/{id}), свою — [Свой профиль](GET /profile). parameters: + - name: query + in: query + required: false + description: 'Поисковая фраза для фильтрации результатов. Поиск работает по полям: `first_name` (имя), `last_name` (фамилия), `email` (электронная почта), `phone_number` (телефон) и `nickname` (никнейм).' + schema: + type: string + example: Олег + example: Олег + explode: false - name: limit in: query required: false @@ -6413,7 +6589,7 @@ paths: data: type: array items: - $ref: '#/components/schemas/WebhookEvent' + $ref: '#/components/schemas/User' meta: $ref: '#/components/schemas/PaginationMeta' description: Обертка ответа с данными и пагинацией @@ -6447,29 +6623,194 @@ paths: application/json: schema: $ref: '#/components/schemas/ApiError' + '504': + description: Server error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' tags: - - Bots + - Users x-paginated: true x-requirements: - scope: webhooks:events:read - /webhooks/events/{id}: + scope: users:read + /users/{id}: + get: + operationId: UserOperations_getUser + description: |- + Информация о сотруднике + + Карточка сотрудника. + + Приостановленный сотрудник отдаётся с `suspended: true`, удалённый — `404`, как несуществующий. Бот тоже приходит сюда как сотрудник, с `bot: true`. + + Мульти-гостю метод отдаёт только тех, кто приходит ему в [Список сотрудников](GET /users), а на остальных отвечает `404`. + + Почта и телефон приходят `null`, если в пространстве выключен показ персональных данных, а вызывающий не администратор. Мульти-гостю они всегда приходят `null`. Свою карточку сотрудник видит целиком — она же отдаётся методом [Свой профиль](GET /profile) и без скоупа `users:read`. + parameters: + - name: id + in: path + required: true + description: Идентификатор пользователя + schema: + type: integer + format: int32 + example: 12 + example: 12 + responses: + '200': + description: The request has succeeded. + content: + application/json: + schema: + type: object + required: + - data + properties: + data: + $ref: '#/components/schemas/User' + description: Обертка ответа с данными + '401': + description: Access is unauthorized. + content: + application/json: + schema: + $ref: '#/components/schemas/OAuthError' + '402': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '403': + description: Access is forbidden. + content: + application/json: + schema: + $ref: '#/components/schemas/OAuthError' + '404': + description: The server cannot find the requested resource. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - Users + x-requirements: + scope: users:read + put: + operationId: UserOperations_updateUser + description: |- + Редактирование сотрудника + + Меняет карточку сотрудника: перезаписываются только переданные поля. Идентификаторы дополнительных полей отдаёт [Список дополнительных полей](GET /custom_properties). + + Поле `list_tags` заменяет набор тегов целиком, поэтому присылайте вместе с новым тегом и те, что сохраняются. Снятый тег выводит сотрудника из чатов, куда его привёл этот тег, а имя, которого в пространстве ещё нет, создаёт новый тег вместе с назначением. + + `suspended: true` приостанавливает сотрудника: он теряет доступ, но остаётся в чатах, тегах и задачах, а `suspended: false` возвращает его обратно. Насовсем убирает сотрудника [Удаление сотрудника](DELETE /users/{id}). + + Владельца пространства редактирует только он сам, а его роль меняется лишь на администратора. Перевести обычного сотрудника в гостя нельзя — в обоих случаях ответ `403`. + + Незнакомое значение роли метод молча пропускает: ответ приходит успешный, а роль остаётся прежней. + + У бота ник должен оканчиваться на `_bot` и быть уникальным в пространстве, иначе метод отвечает `422` с ошибкой на поле `nickname`: `invalid` или `already_exists`. Прежний ник бота проверяется, только когда его меняют. + parameters: + - name: id + in: path + required: true + description: Идентификатор пользователя + schema: + type: integer + format: int32 + example: 12 + example: 12 + responses: + '200': + description: The request has succeeded. + content: + application/json: + schema: + type: object + required: + - data + properties: + data: + $ref: '#/components/schemas/User' + description: Обертка ответа с данными + '400': + description: The server could not understand the request due to invalid syntax. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: Access is unauthorized. + content: + application/json: + schema: + $ref: '#/components/schemas/OAuthError' + '402': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '403': + description: Access is forbidden. + content: + application/json: + schema: + $ref: '#/components/schemas/OAuthError' + '404': + description: The server cannot find the requested resource. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '409': + description: The request conflicts with the current state of the server. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - Users + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UserUpdateRequest' + x-requirements: + scope: users:update delete: - operationId: BotOperations_deleteWebhookEvent + operationId: UserOperations_deleteUser description: |- - Удаление события + Удаление сотрудника - Убирает событие из журнала бота. Разбирая журнал, удаляйте событие сразу после обработки: журнал не очищается сам, и всё, что осталось, придёт снова при повторном запросе. + Убирает сотрудника из пространства. Отменить это нельзя: вернуть его можно только новым приглашением, и это будет уже другой сотрудник. - Метод работает только с токеном того бота, которому принадлежит событие. + Что происходит: он выходит из всех бесед и каналов, кроме личных переписок, с него снимаются все теги, задачи, где он был единственным исполнителем, удаляются, а из остальных он убирается. Написанные им сообщения и файлы остаются на месте. + + Владельца пространства удалить нельзя — метод ответит `403`. Повторный вызов отвечает `404`: удалённого сотрудника метод уже не находит. + + Если сотрудник уходит в отпуск или увольнение ещё не финальное, пользуйтесь методом [Редактирование сотрудника](PUT /users/{id}) с `suspended: true`. Приостановка обратима и сохраняет чаты, теги и задачи. parameters: - name: id in: path required: true - description: Идентификатор события + description: Идентификатор пользователя schema: - type: string - example: 01KAJZ2XDSS2S3DSW9EXJZ0TBV - example: 01KAJZ2XDSS2S3DSW9EXJZ0TBV + type: integer + format: int32 + example: 12 + example: 12 responses: '204': description: 'There is no content to send for this request, but the headers may be useful. ' @@ -6498,45 +6839,636 @@ paths: schema: $ref: '#/components/schemas/ApiError' tags: - - Bots + - Users x-requirements: - scope: webhooks:events:delete -security: - - BearerAuth: [] -components: - schemas: - AccessTokenInfo: - type: object - required: - - id - - token - - name - - user_id - - scopes - - created_at - - revoked_at - - expires_in - - last_used_at - properties: - id: - type: integer - format: int64 - description: Идентификатор токена - example: 4827 - token: - type: string - description: Маскированный токен (видны первые 8 и последние 4 символа) - example: cH5kR9mN...x7Qp - name: - type: string - nullable: true - description: Пользовательское имя токена. `null` у токена бота — имя задаётся только при создании токена вручную. - example: Мой API токен - user_id: - type: integer - format: int64 - description: Идентификатор владельца токена - example: 12 + scope: users:delete + /users/{user_id}/avatar: + put: + operationId: UserAvatarOperations_updateUserAvatar + description: |- + Загрузка аватара сотрудника + + Ставит или заменяет аватар другому сотруднику. Доступно владельцу пространства и администратору, боту метод недоступен. Аватар владельца пространства меняет только он сам. + + Файл передаётся в формате `multipart/form-data`, в ответе приходит только ссылка на новое изображение. Принимаются `jpg`, `jpeg`, `png` и `gif`, анимированный `gif` — не больше 2 МБ, картинка уменьшается до 1024 на 1024 пикселя. + + Свой аватар ставят методом [Загрузка своего аватара](PUT /profile/avatar) — он доступен всем ролям и ботам. + parameters: + - name: user_id + in: path + required: true + description: Идентификатор пользователя + schema: + type: integer + format: int32 + example: 12 + example: 12 + responses: + '200': + description: The request has succeeded. + content: + application/json: + schema: + type: object + required: + - data + properties: + data: + $ref: '#/components/schemas/AvatarData' + description: Обертка ответа с данными + '401': + description: Access is unauthorized. + content: + application/json: + schema: + $ref: '#/components/schemas/OAuthError' + '402': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '403': + description: Access is forbidden. + content: + application/json: + schema: + anyOf: + - $ref: '#/components/schemas/ApiError' + - $ref: '#/components/schemas/OAuthError' + '404': + description: The server cannot find the requested resource. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - Users + requestBody: + required: true + content: + multipart/form-data: + schema: + type: object + properties: + image: + type: string + format: binary + description: Файл изображения для аватара + required: + - image + x-requirements: + scope: user_avatar:write + delete: + operationId: UserAvatarOperations_deleteUserAvatar + description: |- + Удаление аватара сотрудника + + Убирает аватар другому сотруднику, дальше в интерфейсе показываются инициалы. Доступно владельцу пространства и администратору, боту метод недоступен, а аватар владельца пространства убирает только он сам. + + Если аватара не было, ответ всё равно `204`. + parameters: + - name: user_id + in: path + required: true + description: Идентификатор пользователя + schema: + type: integer + format: int32 + example: 12 + example: 12 + responses: + '204': + description: 'There is no content to send for this request, but the headers may be useful. ' + '401': + description: Access is unauthorized. + content: + application/json: + schema: + $ref: '#/components/schemas/OAuthError' + '402': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '403': + description: Access is forbidden. + content: + application/json: + schema: + anyOf: + - $ref: '#/components/schemas/ApiError' + - $ref: '#/components/schemas/OAuthError' + '404': + description: The server cannot find the requested resource. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - Users + x-requirements: + scope: user_avatar:write + /users/{user_id}/status: + get: + operationId: UserStatusOperations_getUserStatus + description: |- + Статус сотрудника + + Статус другого сотрудника: эмодзи, подпись, срок и режим «Нет на месте». + + Мульти-гостю метод отдаёт статусы только тех, кто приходит ему в [Список сотрудников](GET /users), а на остальных отвечает `404`. + + Если статус не установлен, метод возвращает `200` и `null` в теле ответа — без объекта-обёртки. Статус с истёкшим `expires_at` какое-то время ещё возвращается, пока не будет очищен, поэтому проверяйте `expires_at` на стороне клиента. + parameters: + - name: user_id + in: path + required: true + description: Идентификатор пользователя + schema: + type: integer + format: int32 + example: 12 + example: 12 + responses: + '200': + description: The request has succeeded. + content: + application/json: + schema: + type: object + required: + - data + properties: + data: + $ref: '#/components/schemas/UserStatus' + description: Обертка ответа с данными + nullable: true + '401': + description: Access is unauthorized. + content: + application/json: + schema: + $ref: '#/components/schemas/OAuthError' + '403': + description: Access is forbidden. + content: + application/json: + schema: + $ref: '#/components/schemas/OAuthError' + '404': + description: The server cannot find the requested resource. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - Users + x-requirements: + scope: user_status:read + put: + operationId: UserStatusOperations_updateUserStatus + description: |- + Новый статус сотрудника + + Ставит статус другому сотруднику — например, «в отпуске» на время отсутствия. Доступно владельцу пространства и администратору, боту метод недоступен даже с выданным скоупом. + + Этим же методом сотруднику включают режим «Нет на месте» флагом `is_away` и задают текст `away_message`, который увидят при попытке к нему обратиться. + + Статус видят все, кто видит сотрудника в пространстве. Перезаписываются только переданные поля, поэтому продлить чужой статус можно одним `expires_at`. + + Срок, названный словами, — это `expires_at`, а не часть подписи, и считается он в часовом поясе того сотрудника, которому ставят статус. Эмодзи обязателен и ровно один, подпись обязательна и не длиннее 50 символов. + + Свой статус ставят методом [Новый свой статус](PUT /profile/status) — он доступен всем ролям и ботам. + parameters: + - name: user_id + in: path + required: true + description: Идентификатор пользователя + schema: + type: integer + format: int32 + example: 12 + example: 12 + responses: + '200': + description: The request has succeeded. + content: + application/json: + schema: + type: object + required: + - data + properties: + data: + $ref: '#/components/schemas/UserStatus' + description: Обертка ответа с данными + '400': + description: The server could not understand the request due to invalid syntax. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: Access is unauthorized. + content: + application/json: + schema: + $ref: '#/components/schemas/OAuthError' + '403': + description: Access is forbidden. + content: + application/json: + schema: + $ref: '#/components/schemas/OAuthError' + '404': + description: The server cannot find the requested resource. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - Users + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/StatusUpdateRequest' + x-requirements: + scope: user_status:write + delete: + operationId: UserStatusOperations_deleteUserStatus + description: |- + Удаление статуса сотрудника + + Снимает статус с другого сотрудника вместе с режимом «Нет на месте» и его текстом. Доступно владельцу пространства и администратору, боту метод недоступен. + + Если статуса не было, ответ всё равно `204`. Свой статус снимает [Удаление своего статуса](DELETE /profile/status). + parameters: + - name: user_id + in: path + required: true + description: Идентификатор пользователя + schema: + type: integer + format: int32 + example: 12 + example: 12 + responses: + '204': + description: 'There is no content to send for this request, but the headers may be useful. ' + '401': + description: Access is unauthorized. + content: + application/json: + schema: + $ref: '#/components/schemas/OAuthError' + '403': + description: Access is forbidden. + content: + application/json: + schema: + $ref: '#/components/schemas/OAuthError' + '404': + description: The server cannot find the requested resource. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - Users + x-requirements: + scope: user_status:write + /views/open: + post: + operationId: FormOperations_openView + description: |- + Открытие представления + + Показывает пользователю модальное окно с формой в ответ на его действие. Метод вызывают токеном бота: события о нажатии кнопок приходят только ботам, от имени бота окно и открывается. + + Открыть окно можно единственным способом — по `trigger_id` из события о нажатии кнопки. Один `trigger_id` открывает одно окно и живёт 3 секунды: у бота с вебхуком — с момента, когда Пачка передала нажатие, у бота с [Журналом событий](GET /webhooks/events) — с момента записи нажатия в журнал. Поэтому окно открывают первым делом, а всё остальное по событию делают уже после. + + Заполненная форма приходит обратно событием `view_submit`: на исходящий вебхук, а если адрес не задан — в журнал. На вебхук отвечают прямо в ответе на него, и Пачка ждёт его 3 секунды. Событие из журнала закрывают методом [Ответ на отправку формы](POST /views/{view_id}/submit_response), на это есть 5 секунд. Не успели — пользователь увидит ошибку отправки. + parameters: [] + responses: + '201': + description: The request has succeeded and a new resource has been created as a result. + '400': + description: The server could not understand the request due to invalid syntax. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: Access is unauthorized. + content: + application/json: + schema: + $ref: '#/components/schemas/OAuthError' + '402': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '403': + description: Access is forbidden. + content: + application/json: + schema: + $ref: '#/components/schemas/OAuthError' + '410': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - Views + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/OpenViewRequest' + x-requirements: + scope: views:write + /views/{view_id}/submit_response: + post: + operationId: FormOperations_submitViewResponse + description: |- + Ответ на отправку формы + + Закрывает форму сотруднику или показывает ему ошибки под полями. Метод нужен боту, у которого не задан адрес исходящего вебхука: отвечать на вебхук такому боту некуда, и событие `view_submit` он получает из метода [История событий](GET /webhooks/events). Если адрес вебхука задан, отвечайте прямо на вебхук — это проще и не требует опроса журнала. + + Идентификаторы `view_id` и `submit_id` приходят в теле события. Ответить нужно в течение 5 секунд с момента отправки формы, иначе сотрудник увидит ошибку отправки, а значения полей сохранятся для повторной попытки. + + Тело без поля `errors` закрывает форму как успешно отправленную, с полем `errors` — показывает текст ошибки под каждым названным полем. + + Ответ принимается один раз. Повторный вызов с той же парой `view_id` и `submit_id`, как и опоздавший, получает `410` с кодом `submit_expired`. + parameters: + - name: view_id + in: path + required: true + description: Идентификатор представления + schema: + type: string + example: 01KAJZ2XDSS2S3DSW9EXJZ0TBV + example: 01KAJZ2XDSS2S3DSW9EXJZ0TBV + responses: + '200': + description: The request has succeeded. + content: + application/json: + schema: + $ref: '#/components/schemas/SubmitViewResponseResult' + '401': + description: Access is unauthorized. + content: + application/json: + schema: + $ref: '#/components/schemas/OAuthError' + '402': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '403': + description: Access is forbidden. + content: + application/json: + schema: + $ref: '#/components/schemas/OAuthError' + '404': + description: The server cannot find the requested resource. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '410': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '503': + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - Views + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SubmitViewResponseRequest' + x-requirements: + scope: views:write + /webhooks/events: + get: + operationId: BotOperations_getWebhookEvents + description: |- + История событий + + Журнал событий бота: то же самое, что уходит в исходящий вебхук, но забирается запросом. Метод нужен, когда принимать вебхуки на свой адрес нельзя — обработчик недоступен из интернета, поднимается не всегда или пишется прямо сейчас. + + Журнал ведётся, только когда в настройках бота включён пункт «Сохранять историю событий» на вкладке «Исходящий вебхук». Адрес вебхука при этом можно не указывать вовсе, а если он указан, событие и уедет на него, и ляжет в журнал. + + Метод работает только с токеном бота: у личного токена своего журнала нет. События отдаются от новых к старым, идентификатор события — строка, а не число. + + Сам журнал не очищается: прочитанные события удаляйте методом [Удаление события](DELETE /webhooks/events/{id}), иначе они придут снова при повторном запросе. + parameters: + - name: limit + in: query + required: false + description: Количество возвращаемых сущностей за один запрос + schema: + type: integer + format: int32 + minimum: 1 + maximum: 50 + example: 1 + default: 50 + example: 1 + explode: false + - name: cursor + in: query + required: false + description: Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`) + schema: + type: string + example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 + example: eyJpZCI6MTAsImRpciI6ImFzYyJ9 + explode: false + responses: + '200': + description: The request has succeeded. + content: + application/json: + schema: + type: object + required: + - data + - meta + properties: + data: + type: array + items: + $ref: '#/components/schemas/WebhookEvent' + meta: + $ref: '#/components/schemas/PaginationMeta' + description: Обертка ответа с данными и пагинацией + '400': + description: The server could not understand the request due to invalid syntax. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: Access is unauthorized. + content: + application/json: + schema: + $ref: '#/components/schemas/OAuthError' + '402': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '403': + description: Access is forbidden. + content: + application/json: + schema: + $ref: '#/components/schemas/OAuthError' + '422': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - Bots + x-paginated: true + x-requirements: + scope: webhooks:events:read + /webhooks/events/{id}: + delete: + operationId: BotOperations_deleteWebhookEvent + description: |- + Удаление события + + Убирает событие из журнала бота. Разбирая журнал, удаляйте событие сразу после обработки: журнал не очищается сам, и всё, что осталось, придёт снова при повторном запросе. + + Метод работает только с токеном того бота, которому принадлежит событие. + parameters: + - name: id + in: path + required: true + description: Идентификатор события + schema: + type: string + example: 01KAJZ2XDSS2S3DSW9EXJZ0TBV + example: 01KAJZ2XDSS2S3DSW9EXJZ0TBV + responses: + '204': + description: 'There is no content to send for this request, but the headers may be useful. ' + '401': + description: Access is unauthorized. + content: + application/json: + schema: + $ref: '#/components/schemas/OAuthError' + '402': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '403': + description: Access is forbidden. + content: + application/json: + schema: + $ref: '#/components/schemas/OAuthError' + '404': + description: The server cannot find the requested resource. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - Bots + x-requirements: + scope: webhooks:events:delete +security: + - BearerAuth: [] +components: + schemas: + AccessTokenInfo: + type: object + required: + - id + - token + - name + - user_id + - scopes + - created_at + - revoked_at + - expires_in + - last_used_at + properties: + id: + type: integer + format: int64 + description: Идентификатор токена + example: 4827 + token: + type: string + description: Маскированный токен (видны первые 8 и последние 4 символа) + example: cH5kR9mN...x7Qp + name: + type: string + nullable: true + description: Пользовательское имя токена. `null` у токена бота — имя задаётся только при создании токена вручную. + example: Мой API токен + user_id: + type: integer + format: int64 + description: Идентификатор владельца токена + example: 12 scopes: type: array items: @@ -6613,7 +7545,7 @@ components: items: $ref: '#/components/schemas/ApiErrorItem' description: Массив ошибок - description: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422) + description: Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) x-error: true ApiErrorItem: type: object @@ -6664,13 +7596,24 @@ components: format: int32 nullable: true description: Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора. - description: 'При: bot_deleted, bot_token_recreated' + description: 'При: bot_deleted, bot_token_recreated, bot_token_created, bot_token_updated, bot_token_reissued' AuditDetailsBotOAuthClient: type: object required: + - bot_id + - actor_id - client_id - changes properties: + bot_id: + type: integer + format: int32 + description: Идентификатор бота + actor_id: + type: integer + format: int32 + nullable: true + description: Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора. client_id: type: string description: Идентификатор OAuth-клиента бота @@ -6679,12 +7622,73 @@ components: additionalProperties: {} description: Изменённые параметры клиента. Ключ — имя параметра (confidential, redirect_uris, scopes), значение — объект с полями previous (прежнее значение) и new (новое значение). description: 'При: bot_oauth_client_updated' + AuditDetailsBotOAuthClientDisabled: + type: object + required: + - bot_id + - actor_id + - client_id + - deleted_access_tokens_count + - deleted_access_grants_count + properties: + bot_id: + type: integer + format: int32 + description: Идентификатор бота + actor_id: + type: integer + format: int32 + nullable: true + description: Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора. + client_id: + type: string + description: Идентификатор OAuth-клиента бота + deleted_access_tokens_count: + type: integer + format: int32 + description: Сколько токенов сотрудников отозвано + deleted_access_grants_count: + type: integer + format: int32 + description: Сколько неиспользованных кодов авторизации отозвано + description: 'При: bot_oauth_client_disabled' + AuditDetailsBotOAuthClientSecretRotated: + type: object + required: + - bot_id + - actor_id + - client_id + properties: + bot_id: + type: integer + format: int32 + description: Идентификатор бота + actor_id: + type: integer + format: int32 + nullable: true + description: Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора. + client_id: + type: string + description: Идентификатор OAuth-клиента бота + description: 'При: bot_oauth_client_secret_rotated' AuditDetailsBotScopes: type: object required: + - bot_id + - actor_id - added_scopes - removed_scopes properties: + bot_id: + type: integer + format: int32 + description: Идентификатор бота + actor_id: + type: integer + format: int32 + nullable: true + description: Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора. added_scopes: type: array items: @@ -6699,8 +7703,19 @@ components: AuditDetailsBotWebhookSettings: type: object required: + - bot_id + - actor_id - changes properties: + bot_id: + type: integer + format: int32 + description: Идентификатор бота + actor_id: + type: integer + format: int32 + nullable: true + description: Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора. changes: type: object additionalProperties: {} @@ -6916,530 +7931,1155 @@ components: limit: type: integer format: int32 - description: Количество возвращённых результатов - filters: - type: object - additionalProperties: {} - description: 'Применённые фильтры. Возможные ключи зависят от типа поиска: order, sort, created_from, created_to, company_roles (users), active, chat_subtype, personal (chats), chat_ids, user_ids (messages).' - description: 'При: search_users_api, search_chats_api, search_messages_api' - AuditDetailsTagChat: + description: Количество возвращённых результатов + filters: + type: object + additionalProperties: {} + description: 'Применённые фильтры. Возможные ключи зависят от типа поиска: order, sort, created_from, created_to, company_roles (users), active, chat_subtype, personal (chats), chat_ids, user_ids (messages).' + description: 'При: search_users_api, search_chats_api, search_messages_api' + AuditDetailsTagChat: + type: object + required: + - chat_id + - tag_name + properties: + chat_id: + type: integer + format: int32 + description: Идентификатор чата + tag_name: + type: string + description: Название тега + description: 'При: tag_added_to_chat' + AuditDetailsTagName: + type: object + required: + - name + properties: + name: + type: string + description: Название тега + description: 'При: tag_created, tag_deleted' + AuditDetailsTokenScopes: + type: object + required: + - scopes + properties: + scopes: + type: array + items: + type: string + description: Скоупы токена + description: 'При: access_token_created, access_token_updated, access_token_destroy' + AuditDetailsUserUpdated: + type: object + required: + - changed_attrs + properties: + changed_attrs: + type: array + items: + type: string + description: Список изменённых полей + context: + type: string + description: Как было выполнено изменение. Значение `sso_login` — профиль обновился автоматически при входе через SSO. Поле отсутствует, если профиль изменили обычным способом. + description: 'При: user_updated' + AuditDetailsVideoCallFinished: + type: object + required: + - chat_id + - started_message_id + - duration + - max_members_count + properties: + chat_id: + type: integer + format: int32 + description: Идентификатор чата, в котором проходил видеозвонок + started_message_id: + type: integer + format: int32 + nullable: true + description: Идентификатор сообщения о начале звонка. `null`, если такого сообщения нет. + duration: + type: integer + format: int32 + description: Длительность звонка в секундах + max_members_count: + type: integer + format: int32 + description: Максимальное число одновременных участников за время звонка + description: 'При: video_call_finished' + AuditDetailsVideoCallRecording: + type: object + required: + - chat_id + - started_message_id + - recording_id + - file_id + - duration + - size + properties: + chat_id: + type: integer + format: int32 + description: Идентификатор чата, в котором проходил видеозвонок + started_message_id: + type: integer + format: int32 + nullable: true + description: Идентификатор сообщения о начале звонка. `null`, если такого сообщения нет. + recording_id: + type: integer + format: int32 + description: Идентификатор записи + file_id: + type: integer + format: int32 + description: Идентификатор файла записи + duration: + type: integer + format: int32 + description: Длительность записи в секундах + size: + type: integer + format: int64 + description: Размер файла записи в байтах + description: 'При: video_call_recording_ready' + AuditDetailsVideoCallStarted: type: object required: - chat_id - - tag_name + - started_message_id properties: chat_id: type: integer format: int32 - description: Идентификатор чата - tag_name: - type: string - description: Название тега - description: 'При: tag_added_to_chat' - AuditDetailsTagName: + description: Идентификатор чата, в котором проходит видеозвонок + started_message_id: + type: integer + format: int32 + nullable: true + description: Идентификатор сообщения о начале звонка. `null`, если такого сообщения нет. + description: 'При: video_call_started' + AuditEvent: type: object required: - - name + - id + - created_at + - event_key + - entity_id + - entity_type + - actor_id + - actor_type + - details + - ip_address + - user_agent properties: - name: + id: type: string - description: Название тега - description: 'При: tag_created, tag_deleted' - AuditDetailsTokenScopes: - type: object - required: - - scopes - properties: - scopes: - type: array - items: - type: string - description: Скоупы токена - description: 'При: access_token_created, access_token_updated, access_token_destroy' - AuditDetailsUserUpdated: - type: object - required: - - changed_attrs - properties: - changed_attrs: - type: array - items: - type: string - description: Список изменённых полей - context: + description: Уникальный идентификатор события + example: a1b2c3d4-5e6f-7g8h-9i10-j11k12l13m14 + created_at: type: string - description: Как было выполнено изменение. Значение `sso_login` — профиль обновился автоматически при входе через SSO. Поле отсутствует, если профиль изменили обычным способом. - description: 'При: user_updated' - AuditDetailsVideoCallFinished: + format: date-time + description: Дата и время создания события (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ + example: '2025-05-15T14:30:00.000Z' + event_key: + allOf: + - $ref: '#/components/schemas/AuditEventKey' + description: Ключ типа события + example: user_login + entity_id: + type: string + description: Идентификатор затронутой сущности + example: '98765' + entity_type: + type: string + description: Тип затронутой сущности + example: User + actor_id: + type: string + description: Идентификатор пользователя, выполнившего действие + example: '98765' + actor_type: + type: string + description: Тип актора + example: User + details: + allOf: + - $ref: '#/components/schemas/AuditEventDetailsUnion' + description: Дополнительные детали события. Структура зависит от значения event_key — см. описания значений поля event_key. Для событий без деталей возвращается пустой объект. + ip_address: + type: string + nullable: true + description: IP-адрес, с которого было выполнено действие. `null` у событий, записанных без запроса пользователя. + example: 192.168.1.100 + user_agent: + type: string + nullable: true + description: User agent клиента, обрезается до 255 символов. `null` у событий, записанных без запроса пользователя. + example: Pachca/3.60.0 (co.staply.pachca; build:15; iOS 18.5.0) Alamofire/5.0.0 + description: Событие аудита + AuditEventDetailsUnion: + anyOf: + - $ref: '#/components/schemas/AuditDetailsEmpty' + - $ref: '#/components/schemas/AuditDetailsUserUpdated' + - $ref: '#/components/schemas/AuditDetailsRoleChanged' + - $ref: '#/components/schemas/AuditDetailsTagName' + - $ref: '#/components/schemas/AuditDetailsInitiator' + - $ref: '#/components/schemas/AuditDetailsInviter' + - $ref: '#/components/schemas/AuditDetailsChatRenamed' + - $ref: '#/components/schemas/AuditDetailsChatPermission' + - $ref: '#/components/schemas/AuditDetailsTagChat' + - $ref: '#/components/schemas/AuditDetailsChatId' + - $ref: '#/components/schemas/AuditDetailsTokenScopes' + - $ref: '#/components/schemas/AuditDetailsKms' + - $ref: '#/components/schemas/AuditDetailsDlp' + - $ref: '#/components/schemas/AuditDetailsSearch' + - $ref: '#/components/schemas/AuditDetailsBot' + - $ref: '#/components/schemas/AuditDetailsBotScopes' + - $ref: '#/components/schemas/AuditDetailsBotWebhookSettings' + - $ref: '#/components/schemas/AuditDetailsBotOAuthClient' + - $ref: '#/components/schemas/AuditDetailsOAuthAuthorizationGranted' + - $ref: '#/components/schemas/AuditDetailsOAuthAuthorizationRevoked' + - $ref: '#/components/schemas/AuditDetailsDeviceAuthorizationApproved' + - $ref: '#/components/schemas/AuditDetailsDeviceAuthorizationDenied' + - $ref: '#/components/schemas/AuditDetailsVideoCallStarted' + - $ref: '#/components/schemas/AuditDetailsVideoCallFinished' + - $ref: '#/components/schemas/AuditDetailsVideoCallRecording' + - $ref: '#/components/schemas/AuditDetailsBotOAuthClientSecretRotated' + - $ref: '#/components/schemas/AuditDetailsBotOAuthClientDisabled' + description: Дополнительные детали события аудита. Структура зависит от значения event_key. + AuditEventKey: + type: string + enum: + - user_login + - user_logout + - user_2fa_fail + - user_2fa_success + - user_2fa_disabled + - user_created + - user_deleted + - user_role_changed + - user_updated + - tag_created + - tag_deleted + - user_added_to_tag + - user_removed_from_tag + - chat_created + - chat_renamed + - chat_permission_changed + - user_chat_join + - user_chat_leave + - tag_added_to_chat + - tag_removed_from_chat + - message_updated + - message_deleted + - message_created + - reaction_created + - reaction_deleted + - thread_created + - access_token_created + - access_token_updated + - access_token_destroy + - kms_encrypt + - kms_decrypt + - audit_events_accessed + - company_chats_accessed + - company_bots_accessed + - dlp_violation_detected + - search_users_api + - search_chats_api + - search_messages_api + - bot_scopes_updated + - bot_webhook_settings_updated + - bot_token_recreated + - bot_deleted + - bot_oauth_client_updated + - bot_oauth_client_disabled + - bot_oauth_client_secret_rotated + - bot_token_created + - bot_token_updated + - bot_token_reissued + - oauth_authorization_granted + - oauth_authorization_revoked + - oauth_device_authorization_approved + - oauth_device_authorization_denied + - video_call_started + - video_call_finished + - video_call_recording_ready + - exchange_disabled + description: Тип аудит-события + x-enum-descriptions: + user_login: Пользователь успешно вошел в систему + user_logout: Пользователь вышел из системы + user_2fa_fail: Неудачная попытка двухфакторной аутентификации + user_2fa_success: Успешная двухфакторная аутентификация + user_2fa_disabled: Двухфакторная аутентификация отключена у сотрудника + user_created: Создана новая учетная запись пользователя + user_deleted: Учетная запись пользователя удалена + user_role_changed: Роль пользователя была изменена + user_updated: Данные пользователя обновлены + tag_created: Создан новый тег + tag_deleted: Тег удален + user_added_to_tag: Пользователь добавлен в тег + user_removed_from_tag: Пользователь удален из тега + chat_created: Создан новый чат + chat_renamed: Чат переименован + chat_permission_changed: Изменены права доступа к чату + user_chat_join: Пользователь присоединился к чату + user_chat_leave: Пользователь покинул чат + tag_added_to_chat: Тег добавлен в чат + tag_removed_from_chat: Тег удален из чата + message_updated: Сообщение отредактировано + message_deleted: Сообщение удалено + message_created: Сообщение создано + reaction_created: Реакция добавлена + reaction_deleted: Реакция удалена + thread_created: Тред создан + access_token_created: Создан новый токен доступа + access_token_updated: Токен доступа обновлен + access_token_destroy: Токен доступа удален + kms_encrypt: Данные зашифрованы + kms_decrypt: Данные расшифрованы + audit_events_accessed: Доступ к журналам аудита получен + company_chats_accessed: Получен список всех чатов пространства + company_bots_accessed: Получен список всех ботов пространства + dlp_violation_detected: Срабатывание правила DLP-системы + search_users_api: Поиск сотрудников через API + search_chats_api: Поиск чатов через API + search_messages_api: Поиск сообщений через API + bot_scopes_updated: Изменены скоупы токена бота + bot_webhook_settings_updated: Изменены настройки исходящего вебхука бота + bot_token_recreated: Токен бота перевыпущен (ротация) + bot_deleted: Бот удалён + bot_oauth_client_updated: Изменены параметры OAuth-клиента бота + bot_oauth_client_disabled: У бота выключена авторизация от имени сотрудника + bot_oauth_client_secret_rotated: Обновлён секрет OAuth-клиента бота + bot_token_created: Выпущен токен бота + bot_token_updated: Изменены имя или скоупы токена бота + bot_token_reissued: Отдельный токен бота перевыпущен + oauth_authorization_granted: Пользователь выдал OAuth-клиенту доступ к своим данным + oauth_authorization_revoked: Доступ OAuth-клиента к данным пользователя отозван + oauth_device_authorization_approved: Сотрудник подтвердил вход приложения с устройства + oauth_device_authorization_denied: Сотрудник отклонил вход приложения с устройства + video_call_started: Видеозвонок начат + video_call_finished: Видеозвонок завершён + video_call_recording_ready: Запись видеозвонка готова + exchange_disabled: Отключена интеграция с Exchange + AvatarData: type: object required: - - chat_id - - started_message_id - - duration - - max_members_count + - image_url properties: - chat_id: - type: integer - format: int32 - description: Идентификатор чата, в котором проходил видеозвонок - started_message_id: - type: integer - format: int32 - nullable: true - description: Идентификатор сообщения о начале звонка. `null`, если такого сообщения нет. - duration: - type: integer - format: int32 - description: Длительность звонка в секундах - max_members_count: - type: integer - format: int32 - description: Максимальное число одновременных участников за время звонка - description: 'При: video_call_finished' - AuditDetailsVideoCallRecording: + image_url: + type: string + description: URL аватара + example: https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg + description: Данные аватара + BotAccessToken: type: object required: - - chat_id - - started_message_id - - recording_id - - file_id - - duration - - size + - id + - token + - name + - user_id + - scopes + - created_at + - revoked_at + - expires_in + - last_used_at + - authorized_at properties: - chat_id: - type: integer - format: int32 - description: Идентификатор чата, в котором проходил видеозвонок - started_message_id: + id: type: integer - format: int32 + format: int64 + description: Идентификатор токена + example: 4827 + token: + type: string + description: 'Токен в маскированном виде (видны первые 8 и последние 4 символа). Полное значение приходит один раз: при выпуске и перевыпуске токена.' + example: cH5kR9mN...x7Qp + name: + type: string nullable: true - description: Идентификатор сообщения о начале звонка. `null`, если такого сообщения нет. - recording_id: - type: integer - format: int32 - description: Идентификатор записи - file_id: + description: Имя токена. `null` у токена, выпущенного без имени. + example: Сервер уведомлений + user_id: type: integer - format: int32 - description: Идентификатор файла записи - duration: + format: int64 + description: Идентификатор бота, которому принадлежит токен + example: 1738816 + scopes: + type: array + items: + type: string + description: Права токена + example: + - messages:create + - chats:read + created_at: + type: string + format: date-time + description: Дата и время выпуска токена (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ + example: '2025-01-15T10:30:00.000Z' + revoked_at: + type: string + format: date-time + nullable: true + description: 'Дата отзыва токена. Всегда `null`: отозванные токены в ответ не попадают.' + example: null + expires_in: type: integer format: int32 - description: Длительность записи в секундах - size: - type: integer - format: int64 - description: Размер файла записи в байтах - description: 'При: video_call_recording_ready' - AuditDetailsVideoCallStarted: + nullable: true + description: 'Время жизни токена в секундах. У токенов бота `null`: они бессрочные.' + example: null + last_used_at: + type: string + format: date-time + nullable: true + description: Дата последнего использования токена. `null`, пока по токену не было ни одного запроса. Обновляется не чаще раза в час, поэтому может отставать. + example: '2025-02-24T14:20:00.000Z' + authorized_at: + type: string + format: date-time + nullable: true + description: Дата авторизации. У токенов бота `null`. + example: null + description: Токен бота + BotCanEdit: + type: string + enum: + - admin + - chat_owners + description: Роль, которой разрешено редактировать настройки бота + x-enum-descriptions: + admin: Администраторы компании + chat_owners: Владельцы чатов, в которые добавлен бот + BotCreateRequest: type: object required: - - chat_id - - started_message_id + - webhook properties: - chat_id: - type: integer - format: int32 - description: Идентификатор чата, в котором проходит видеозвонок - started_message_id: - type: integer - format: int32 - nullable: true - description: Идентификатор сообщения о начале звонка. `null`, если такого сообщения нет. - description: 'При: video_call_started' - AuditEvent: + empty: + type: boolean + description: 'Создать пустого бота: без токена и без входящего вебхука. Без этого поля бот создаётся с входящим вебхуком в своём формате, а его токен приходит в `access_token`.' + example: false + default: false + webhook: + type: object + properties: + name: + type: string + maxLength: 255 + description: Имя бота + example: Бот задач + nickname: + type: string + maxLength: 255 + description: Никнейм бота. Должен заканчиваться на `_bot`. + example: tasks_bot + outgoing_url: + type: string + description: URL исходящего вебхука + example: https://www.website.com/tasks/new + events: + type: array + items: + $ref: '#/components/schemas/BotEventName' + description: События, на которые подписан бот + example: + - message_new + trigger_on: + allOf: + - $ref: '#/components/schemas/BotTriggerOn' + description: Условие срабатывания исходящего вебхука + example: commands + default: commands + commands: + type: array + items: + type: string + description: Команды бота (триггер-слова), на которые он реагирует при trigger_on = commands. Суммарная длина команд, объединённых через запятую, не должна превышать 255 символов. + example: + - /task + - /help + scopes: + type: array + items: + type: string + description: 'Скоупы (права доступа) токена бота. Если не указано, бот получает набор по умолчанию. Боту доступны не все скоупы: часть из них разрешена только пользовательским ролям, и попытка назначить такой скоуп возвращает `400`. Служебные значения `bot` и `all` назначать нельзя.' + example: + - messages:create + template: + type: string + description: Шаблон форматирования входящего вебхука + example: Заказ от {{ client }} на сумму {{ amount }} ₽ + template_engine: + allOf: + - $ref: '#/components/schemas/BotTemplateEngine' + description: Шаблонизатор для обработки шаблона входящего вебхука + example: liquid + default: liquid + challenge_key: + type: string + description: Название поля проверки для верификации входящего вебхука + example: challenge + link_preview_enabled: + type: boolean + description: Показывать превью ссылок в сообщениях входящего вебхука + example: true + default: true + ignore_self_messages: + type: boolean + description: Игнорировать входящие сообщения, отправленные самим ботом + example: false + default: false + events_history_enabled: + type: boolean + description: Сохранять историю событий бота для последующего получения через метод истории событий + example: false + default: false + who_can_add: + allOf: + - $ref: '#/components/schemas/BotWhoCanAdd' + description: Кто может добавлять бота в чаты + example: creator + default: creator + can_edit: + type: array + items: + $ref: '#/components/schemas/BotCanEdit' + description: Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. + example: + - admin + single_chat: + type: boolean + description: 'Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят.' + example: false + default: false + kind: + allOf: + - $ref: '#/components/schemas/BotWebhookKind' + description: Источник входящего вебхука. Без `empty` по умолчанию `simple`, а у пустого бота входящий вебхук включается только этим полем. + example: simple + unfurl_domains: + type: array + items: + type: string + description: Домены, ссылки на которые бот разворачивает, не больше 5. Работают вместе с событием `message_link_shared`. + example: + - example.com + required: + - name + description: Объект параметров вебхука создаваемого бота + oauth_client: + allOf: + - $ref: '#/components/schemas/BotOAuthClientRequest' + description: Включить авторизацию от имени сотрудника сразу при создании + promo: + allOf: + - $ref: '#/components/schemas/BotPromoRequest' + description: 'Страница бота в витрине. Задаётся только вместе с `oauth_client`: без авторизации страницы у бота нет.' + description: Запрос на создание бота + BotCreateResponse: type: object required: - id - - created_at - - event_key - - entity_id - - entity_type - - actor_id - - actor_type - - details - - ip_address - - user_agent + - name + - nickname + - avatar_url + - creator_id + - created_at + - authorized_users_count + - last_used_at + - webhook + - oauth_client_enabled + - oauth_client + - promo + - permissions properties: id: + type: integer + format: int32 + description: Идентификатор бота (совпадает с `user_id` бота) + example: 1738816 + name: type: string - description: Уникальный идентификатор события - example: a1b2c3d4-5e6f-7g8h-9i10-j11k12l13m14 + description: Имя бота + example: Бот задач + nickname: + type: string + description: Никнейм бота + example: tasks_bot + avatar_url: + type: string + nullable: true + description: Ссылка на аватар бота. `null`, если аватар не задан. + example: https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg + creator_id: + type: integer + format: int32 + nullable: true + description: Идентификатор сотрудника, создавшего бота. `null`, если создатель не записан. + example: 12 created_at: type: string format: date-time - description: Дата и время создания события (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ + description: Дата и время создания бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ example: '2025-05-15T14:30:00.000Z' - event_key: - allOf: - - $ref: '#/components/schemas/AuditEventKey' - description: Ключ типа события - example: user_login - entity_id: - type: string - description: Идентификатор затронутой сущности - example: '98765' - entity_type: - type: string - description: Тип затронутой сущности - example: User - actor_id: - type: string - description: Идентификатор пользователя, выполнившего действие - example: '98765' - actor_type: + authorized_users_count: + type: integer + format: int32 + description: Сколько сотрудников авторизовали бота + example: 3 + last_used_at: type: string - description: Тип актора - example: User - details: + format: date-time + nullable: true + description: 'Дата и время, когда бот последний раз работал (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ: запрос на входящий вебхук или вызов API любым токеном бота, включая токены сотрудников. `null`, если такого не было. Использование токена учитывается не чаще раза в час.' + example: '2025-05-15T14:30:00.000Z' + webhook: allOf: - - $ref: '#/components/schemas/AuditEventDetailsUnion' - description: Дополнительные детали события. Структура зависит от значения event_key — см. описания значений поля event_key. Для событий без деталей возвращается пустой объект. - ip_address: - type: string + - $ref: '#/components/schemas/BotWebhook' + description: Объект параметров вебхука + oauth_client_enabled: + type: boolean + description: Включена ли у бота авторизация от имени сотрудника + example: true + oauth_client: + type: object + allOf: + - $ref: '#/components/schemas/BotOAuthClient' nullable: true - description: IP-адрес, с которого было выполнено действие. `null` у событий, записанных без запроса пользователя. - example: 192.168.1.100 - user_agent: - type: string + description: Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией, поэтому включена ли она, смотрите в `oauth_client_enabled`. У бота без токенов может прийти `null`. + promo: + type: object + allOf: + - $ref: '#/components/schemas/BotPromo' nullable: true - description: User agent клиента, обрезается до 255 символов. `null` у событий, записанных без запроса пользователя. - example: Pachca/3.60.0 (co.staply.pachca; build:15; iOS 18.5.0) Alamofire/5.0.0 - description: Событие аудита - AuditEventDetailsUnion: - anyOf: - - $ref: '#/components/schemas/AuditDetailsEmpty' - - $ref: '#/components/schemas/AuditDetailsUserUpdated' - - $ref: '#/components/schemas/AuditDetailsRoleChanged' - - $ref: '#/components/schemas/AuditDetailsTagName' - - $ref: '#/components/schemas/AuditDetailsInitiator' - - $ref: '#/components/schemas/AuditDetailsInviter' - - $ref: '#/components/schemas/AuditDetailsChatRenamed' - - $ref: '#/components/schemas/AuditDetailsChatPermission' - - $ref: '#/components/schemas/AuditDetailsTagChat' - - $ref: '#/components/schemas/AuditDetailsChatId' - - $ref: '#/components/schemas/AuditDetailsTokenScopes' - - $ref: '#/components/schemas/AuditDetailsKms' - - $ref: '#/components/schemas/AuditDetailsDlp' - - $ref: '#/components/schemas/AuditDetailsSearch' - - $ref: '#/components/schemas/AuditDetailsBot' - - $ref: '#/components/schemas/AuditDetailsBotScopes' - - $ref: '#/components/schemas/AuditDetailsBotWebhookSettings' - - $ref: '#/components/schemas/AuditDetailsBotOAuthClient' - - $ref: '#/components/schemas/AuditDetailsOAuthAuthorizationGranted' - - $ref: '#/components/schemas/AuditDetailsOAuthAuthorizationRevoked' - - $ref: '#/components/schemas/AuditDetailsDeviceAuthorizationApproved' - - $ref: '#/components/schemas/AuditDetailsDeviceAuthorizationDenied' - - $ref: '#/components/schemas/AuditDetailsVideoCallStarted' - - $ref: '#/components/schemas/AuditDetailsVideoCallFinished' - - $ref: '#/components/schemas/AuditDetailsVideoCallRecording' - description: Дополнительные детали события аудита. Структура зависит от значения event_key. - AuditEventKey: + description: Страница бота в витрине. `null`, если авторизация у бота выключена. + permissions: + allOf: + - $ref: '#/components/schemas/BotPermissions' + description: Что вы можете делать с этим ботом + client_secret: + type: string + description: 'Секрет клиента. Приходит один раз: при включении серверного клиента, при переходе на него и при ротации секрета.' + example: dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA + access_token: + type: string + description: 'Токен доступа бота. Возвращается при создании бота и при ротации токена. Не приходит, если бот создан с `empty: true`.' + example: bm90X2FfcmVhbF90b2tlbg + description: Параметры созданного бота + BotEventName: type: string enum: - - user_login - - user_logout - - user_2fa_fail - - user_2fa_success - - user_2fa_disabled - - user_created - - user_deleted - - user_role_changed - - user_updated - - tag_created - - tag_deleted - - user_added_to_tag - - user_removed_from_tag - - chat_created - - chat_renamed - - chat_permission_changed - - user_chat_join - - user_chat_leave - - tag_added_to_chat - - tag_removed_from_chat - - message_updated - - message_deleted - - message_created - - reaction_created - - reaction_deleted - - thread_created - - access_token_created - - access_token_updated - - access_token_destroy - - kms_encrypt - - kms_decrypt - - audit_events_accessed - - company_chats_accessed - - company_bots_accessed - - dlp_violation_detected - - search_users_api - - search_chats_api - - search_messages_api - - bot_scopes_updated - - bot_webhook_settings_updated - - bot_token_recreated - - bot_deleted - - bot_oauth_client_updated - - oauth_authorization_granted - - oauth_authorization_revoked - - oauth_device_authorization_approved - - oauth_device_authorization_denied + - message_new + - message_update + - message_delete + - reaction_new + - reaction_delete + - button_click + - message_link_shared + - chat_member_add + - chat_member_remove + - company_member_invite + - company_member_confirm + - company_member_suspend + - company_member_activate + - company_member_delete + - company_member_update - video_call_started - video_call_finished - video_call_recording_ready - - exchange_disabled - description: Тип аудит-события + description: Событие исходящего вебхука бота x-enum-descriptions: - user_login: Пользователь успешно вошел в систему - user_logout: Пользователь вышел из системы - user_2fa_fail: Неудачная попытка двухфакторной аутентификации - user_2fa_success: Успешная двухфакторная аутентификация - user_2fa_disabled: Двухфакторная аутентификация отключена у сотрудника - user_created: Создана новая учетная запись пользователя - user_deleted: Учетная запись пользователя удалена - user_role_changed: Роль пользователя была изменена - user_updated: Данные пользователя обновлены - tag_created: Создан новый тег - tag_deleted: Тег удален - user_added_to_tag: Пользователь добавлен в тег - user_removed_from_tag: Пользователь удален из тега - chat_created: Создан новый чат - chat_renamed: Чат переименован - chat_permission_changed: Изменены права доступа к чату - user_chat_join: Пользователь присоединился к чату - user_chat_leave: Пользователь покинул чат - tag_added_to_chat: Тег добавлен в чат - tag_removed_from_chat: Тег удален из чата - message_updated: Сообщение отредактировано - message_deleted: Сообщение удалено - message_created: Сообщение создано - reaction_created: Реакция добавлена - reaction_deleted: Реакция удалена - thread_created: Тред создан - access_token_created: Создан новый токен доступа - access_token_updated: Токен доступа обновлен - access_token_destroy: Токен доступа удален - kms_encrypt: Данные зашифрованы - kms_decrypt: Данные расшифрованы - audit_events_accessed: Доступ к журналам аудита получен - company_chats_accessed: Получен список всех чатов пространства - company_bots_accessed: Получен список всех ботов пространства - dlp_violation_detected: Срабатывание правила DLP-системы - search_users_api: Поиск сотрудников через API - search_chats_api: Поиск чатов через API - search_messages_api: Поиск сообщений через API - bot_scopes_updated: Изменены скоупы токена бота - bot_webhook_settings_updated: Изменены настройки исходящего вебхука бота - bot_token_recreated: Токен бота перевыпущен (ротация) - bot_deleted: Бот удалён - bot_oauth_client_updated: Изменены параметры OAuth-клиента бота - oauth_authorization_granted: Пользователь выдал OAuth-клиенту доступ к своим данным - oauth_authorization_revoked: Доступ OAuth-клиента к данным пользователя отозван - oauth_device_authorization_approved: Сотрудник подтвердил вход приложения с устройства - oauth_device_authorization_denied: Сотрудник отклонил вход приложения с устройства - video_call_started: Видеозвонок начат - video_call_finished: Видеозвонок завершён + message_new: Новое сообщение + message_update: Сообщение отредактировано + message_delete: Сообщение удалено + reaction_new: Добавлена реакция + reaction_delete: Реакция удалена + button_click: Нажата кнопка + message_link_shared: В сообщении отправлена ссылка (для unfurl) + chat_member_add: Участник добавлен в чат + chat_member_remove: Участник удалён из чата + company_member_invite: Сотрудник приглашён в компанию + company_member_confirm: Сотрудник подтвердил приглашение + company_member_suspend: Сотрудник деактивирован + company_member_activate: Сотрудник активирован + company_member_delete: Сотрудник удалён из компании + company_member_update: Данные сотрудника изменены + video_call_started: Видеозвонок начался + video_call_finished: Видеозвонок завершился video_call_recording_ready: Запись видеозвонка готова - exchange_disabled: Отключена интеграция с Exchange - AvatarData: + BotOAuthClient: + type: object + required: + - client_id + - client_secret_preview + - confidential + - redirect_uris + - scopes + properties: + client_id: + type: string + description: Идентификатор клиента для ссылки авторизации + example: aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY + client_secret_preview: + type: string + description: 'Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета.' + example: cH5kR9mN...x7Qp + confidential: + type: boolean + description: 'Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE' + example: true + redirect_uris: + type: array + items: + type: string + description: Адреса возврата после согласия + example: + - https://example.com/oauth/callback + scopes: + type: array + items: + type: string + description: Права, которые бот запрашивает у сотрудника на экране согласия + example: + - messages:read + - messages:create + description: Авторизация от имени сотрудника + BotOAuthClientRequest: + type: object + properties: + confidential: + type: boolean + description: 'Где хранится секрет: `true` — серверное приложение хранит `client_secret` и обменивает код у себя, `false` — приложение без секрета (браузер, мобильное, CLI) обменивает код по PKCE. Если не передать, значение не меняется, а у нового клиента — `true`.' + example: true + redirect_uris: + type: array + items: + type: string + description: Адреса возврата после согласия. HTTPS обязателен, кроме адресов на этом же компьютере (`localhost`, `127.0.0.1`). Адрес в ссылке авторизации должен совпадать с одним из списка точно, у `localhost` и `127.0.0.1` порт не сравнивается. При включении передайте хотя бы один адрес. Список заменяется целиком. + example: + - https://example.com/oauth/callback + scopes: + type: array + items: + type: string + description: Права, которые бот запрашивает у сотрудника на экране согласия. Доступны только права, которые можно выдать самому боту. Если при включении поле не передать, запрашиваются все права бота. Список заменяется целиком. + example: + - messages:read + - messages:create + description: Настройки авторизации от имени сотрудника + BotPermissions: type: object required: - - image_url + - update_oauth_client + - recreate_token + - destroy properties: - image_url: + update_oauth_client: + type: boolean + description: Менять авторизацию от имени сотрудника, страницу в витрине и имя бота + example: true + recreate_token: + type: boolean + description: Выпускать, менять и удалять токены бота и обновлять секрет клиента + example: true + destroy: + type: boolean + description: Удалить бота + example: true + description: Что текущий пользователь может делать с ботом + BotPromo: + type: object + required: + - description + - published + - promo_images + properties: + description: type: string - description: URL аватара - example: https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg - description: Данные аватара - BotCanEdit: - type: string - enum: - - admin - - chat_owners - description: Роль, которой разрешено редактировать настройки бота - x-enum-descriptions: - admin: Администраторы компании - chat_owners: Владельцы чатов, в которые добавлен бот - BotCreateRequest: + nullable: true + description: Описание бота. `null`, если не задано. + example: Собирает сводку по задачам Jira и присылает её в чат + published: + type: boolean + description: Опубликован ли бот в витрине + example: true + promo_images: + type: array + items: + $ref: '#/components/schemas/BotPromoImage' + description: Скриншоты страницы бота + description: Страница бота в витрине + BotPromoImage: + type: object + required: + - key + - url + properties: + key: + type: string + description: Ключ изображения + example: attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png + url: + type: string + description: Ссылка на изображение + example: https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png + description: Скриншот страницы бота в витрине + BotPromoRequest: + type: object + properties: + description: + type: string + description: 'Описание: чем бот занимается и зачем его подключать. Без описания бота нельзя опубликовать.' + example: Собирает сводку по задачам Jira и присылает её в чат + published: + type: boolean + description: 'Опубликовать бота в витрине: он появится карточкой на вкладке «Обзор». Публикация требует описания.' + example: true + promo_images: + type: array + items: + type: string + description: 'Скриншоты страницы бота, не больше 5: ключи загруженных изображений (`key` из [Получение подписи, ключа и других параметров](POST /uploads)). Список заменяется целиком, порядок сохраняется.' + example: + - attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png + description: Страница бота в витрине + BotResponse: type: object required: + - id + - name + - nickname + - avatar_url + - creator_id + - created_at + - authorized_users_count + - last_used_at - webhook + - oauth_client_enabled + - oauth_client + - promo + - permissions properties: + id: + type: integer + format: int32 + description: Идентификатор бота (совпадает с `user_id` бота) + example: 1738816 + name: + type: string + description: Имя бота + example: Бот задач + nickname: + type: string + description: Никнейм бота + example: tasks_bot + avatar_url: + type: string + nullable: true + description: Ссылка на аватар бота. `null`, если аватар не задан. + example: https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg + creator_id: + type: integer + format: int32 + nullable: true + description: Идентификатор сотрудника, создавшего бота. `null`, если создатель не записан. + example: 12 + created_at: + type: string + format: date-time + description: Дата и время создания бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ + example: '2025-05-15T14:30:00.000Z' + authorized_users_count: + type: integer + format: int32 + description: Сколько сотрудников авторизовали бота + example: 3 + last_used_at: + type: string + format: date-time + nullable: true + description: 'Дата и время, когда бот последний раз работал (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ: запрос на входящий вебхук или вызов API любым токеном бота, включая токены сотрудников. `null`, если такого не было. Использование токена учитывается не чаще раза в час.' + example: '2025-05-15T14:30:00.000Z' webhook: + allOf: + - $ref: '#/components/schemas/BotWebhook' + description: Объект параметров вебхука + oauth_client_enabled: + type: boolean + description: Включена ли у бота авторизация от имени сотрудника + example: true + oauth_client: type: object - properties: - name: - type: string - maxLength: 255 - description: Имя бота - example: Бот задач - nickname: - type: string - maxLength: 255 - description: Никнейм бота. Должен заканчиваться на `_bot`. - example: tasks_bot - outgoing_url: - type: string - description: URL исходящего вебхука - example: https://www.website.com/tasks/new - events: - type: array - items: - $ref: '#/components/schemas/BotEventName' - description: События, на которые подписан бот - example: - - message_new - trigger_on: - allOf: - - $ref: '#/components/schemas/BotTriggerOn' - description: Условие срабатывания исходящего вебхука - example: commands - default: commands - commands: - type: array - items: - type: string - description: Команды бота (триггер-слова), на которые он реагирует при trigger_on = commands. Суммарная длина команд, объединённых через запятую, не должна превышать 255 символов. - example: - - /task - - /help - scopes: - type: array - items: - type: string - description: 'Скоупы (права доступа) токена бота. Если не указано, бот получает набор по умолчанию. Боту доступны не все скоупы: часть из них разрешена только пользовательским ролям, и попытка назначить такой скоуп возвращает `400`. Служебные значения `bot` и `all` назначать нельзя.' - example: - - messages:create - template: - type: string - description: Шаблон форматирования входящего вебхука - example: Заказ от {{ client }} на сумму {{ amount }} ₽ - template_engine: - allOf: - - $ref: '#/components/schemas/BotTemplateEngine' - description: Шаблонизатор для обработки шаблона входящего вебхука - example: liquid - default: liquid - challenge_key: - type: string - description: Название поля проверки для верификации входящего вебхука - example: challenge - link_preview_enabled: - type: boolean - description: Показывать превью ссылок в сообщениях входящего вебхука - example: true - default: true - ignore_self_messages: - type: boolean - description: Игнорировать входящие сообщения, отправленные самим ботом - example: false - default: false - events_history_enabled: - type: boolean - description: Сохранять историю событий бота для последующего получения через метод истории событий - example: false - default: false - who_can_add: - allOf: - - $ref: '#/components/schemas/BotWhoCanAdd' - description: Кто может добавлять бота в чаты - example: creator - default: creator - can_edit: - type: array - items: - $ref: '#/components/schemas/BotCanEdit' - description: Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. - example: - - admin - single_chat: - type: boolean - description: 'Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Задаётся только при создании, при редактировании не меняется.' - example: false - default: false - required: - - name - description: Объект параметров вебхука создаваемого бота - description: Запрос на создание бота - BotCreateResponse: + allOf: + - $ref: '#/components/schemas/BotOAuthClient' + nullable: true + description: Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией, поэтому включена ли она, смотрите в `oauth_client_enabled`. У бота без токенов может прийти `null`. + promo: + type: object + allOf: + - $ref: '#/components/schemas/BotPromo' + nullable: true + description: Страница бота в витрине. `null`, если авторизация у бота выключена. + permissions: + allOf: + - $ref: '#/components/schemas/BotPermissions' + description: Что вы можете делать с этим ботом + client_secret: + type: string + description: 'Секрет клиента. Приходит один раз: при включении серверного клиента, при переходе на него и при ротации секрета.' + example: dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA + description: Параметры бота + BotScopeCatalog: + type: object + required: + - scopes + - groups + - presets + properties: + scopes: + type: array + items: + $ref: '#/components/schemas/BotScopeCatalogItem' + description: Права, доступные боту + groups: + type: array + items: + $ref: '#/components/schemas/BotScopeCatalogGroup' + description: Категории прав + presets: + type: array + items: + $ref: '#/components/schemas/BotScopeCatalogPreset' + description: Готовые наборы прав + description: Каталог прав, которые можно выдать боту + BotScopeCatalogGroup: + type: object + required: + - id + - title + - description + properties: + id: + type: string + description: Идентификатор категории + example: messages + title: + type: string + description: Название категории + example: Сообщения + description: + type: string + description: Описание категории + example: Работа с сообщениями + description: Категория прав + BotScopeCatalogItem: + type: object + required: + - id + - title + - group + - preset + properties: + id: + type: string + description: Право + example: messages:create + title: + type: string + description: Описание права + example: Отправка сообщений + group: + type: string + description: Категория права, `id` из `groups` + example: messages + preset: + type: array + items: + type: string + description: Наборы, в которые входит право, `id` из `presets` + example: + - admin + description: Право в каталоге прав бота + BotScopeCatalogPreset: + type: object + required: + - id + - title + properties: + id: + type: string + description: 'Идентификатор набора: `read-only` или `admin`' + example: read-only + title: + type: string + description: Название набора + example: Только чтение + description: Готовый набор прав + BotSelfResponse: type: object required: - id + - oauth_client - webhook - - access_token properties: id: type: integer format: int32 description: Идентификатор бота (совпадает с `user_id` бота) example: 1738816 + oauth_client: + type: object + allOf: + - $ref: '#/components/schemas/BotOAuthClient' + nullable: true + description: Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией. У бота без токенов может прийти `null`. webhook: allOf: - - $ref: '#/components/schemas/BotWebhook' + - $ref: '#/components/schemas/BotSelfWebhook' description: Объект параметров вебхука - access_token: - type: string - description: Токен доступа бота. Возвращается при создании бота и при ротации токена. - example: bm90X2FfcmVhbF90b2tlbg - description: Параметры созданного бота - BotEventName: - type: string - enum: - - message_new - - message_update - - message_delete - - reaction_new - - reaction_delete - - button_click - - message_link_shared - - chat_member_add - - chat_member_remove - - company_member_invite - - company_member_confirm - - company_member_suspend - - company_member_activate - - company_member_delete - - company_member_update - - video_call_started - - video_call_finished - - video_call_recording_ready - description: Событие исходящего вебхука бота - x-enum-descriptions: - message_new: Новое сообщение - message_update: Сообщение отредактировано - message_delete: Сообщение удалено - reaction_new: Добавлена реакция - reaction_delete: Реакция удалена - button_click: Нажата кнопка - message_link_shared: В сообщении отправлена ссылка (для unfurl) - chat_member_add: Участник добавлен в чат - chat_member_remove: Участник удалён из чата - company_member_invite: Сотрудник приглашён в компанию - company_member_confirm: Сотрудник подтвердил приглашение - company_member_suspend: Сотрудник деактивирован - company_member_activate: Сотрудник активирован - company_member_delete: Сотрудник удалён из компании - company_member_update: Данные сотрудника изменены - video_call_started: Видеозвонок начался - video_call_finished: Видеозвонок завершился - video_call_recording_ready: Запись видеозвонка готова - BotResponse: + description: Параметры бота в ответах методов самого бота + BotSelfTokenResponse: type: object required: - id + - oauth_client - webhook + - access_token properties: id: type: integer format: int32 description: Идентификатор бота (совпадает с `user_id` бота) example: 1738816 + oauth_client: + type: object + allOf: + - $ref: '#/components/schemas/BotOAuthClient' + nullable: true + description: Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией. У бота без токенов может прийти `null`. webhook: allOf: - - $ref: '#/components/schemas/BotWebhook' + - $ref: '#/components/schemas/BotSelfWebhook' description: Объект параметров вебхука - description: Параметры бота + access_token: + type: string + description: Новый токен бота. Возвращается один раз. + example: bm90X2FfcmVhbF90b2tlbg + description: Параметры бота с новым токеном + BotSelfWebhook: + type: object + required: + - name + - nickname + - outgoing_url + - events + - trigger_on + - commands + - scopes + - template + - template_engine + - challenge_key + - link_preview_enabled + - ignore_self_messages + - events_history_enabled + - single_chat + - can_edit + - who_can_add + properties: + name: + type: string + maxLength: 255 + description: Имя бота + example: Бот задач + nickname: + type: string + maxLength: 255 + description: Никнейм бота + example: tasks_bot + outgoing_url: + type: string + nullable: true + description: URL исходящего вебхука. `null`, если исходящий вебхук у бота не настроен. + example: https://www.website.com/tasks/new + events: + type: array + items: + $ref: '#/components/schemas/BotEventName' + description: События, на которые подписан бот + example: + - message_new + trigger_on: + allOf: + - $ref: '#/components/schemas/BotTriggerOn' + description: Условие срабатывания исходящего вебхука + example: commands + commands: + type: array + items: + type: string + description: Команды бота (триггер-слова) + example: + - /task + scopes: + type: array + items: + type: string + description: Скоупы (права доступа) токена бота. Набор по умолчанию шире того, что можно назначить явно, поэтому здесь могут встречаться значения, недоступные для явной установки. + example: + - messages:create + template: + type: string + nullable: true + description: Шаблон форматирования входящего вебхука. `null`, если не задан. + example: Заказ от {{ client }} на сумму {{ amount }} ₽ + template_engine: + allOf: + - $ref: '#/components/schemas/BotTemplateEngine' + description: Шаблонизатор для обработки шаблона входящего вебхука + example: liquid + challenge_key: + type: string + nullable: true + description: Название поля проверки для верификации входящего вебхука. `null`, если не задано. + example: challenge + link_preview_enabled: + type: boolean + description: Показывать превью ссылок в сообщениях входящего вебхука + example: true + ignore_self_messages: + type: boolean + description: Игнорировать входящие сообщения, отправленные самим ботом + example: false + events_history_enabled: + type: boolean + description: Сохранять историю событий бота для последующего получения через метод истории событий + example: false + single_chat: + type: boolean + description: 'Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят.' + example: false + can_edit: + type: array + items: + $ref: '#/components/schemas/BotCanEdit' + description: Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. + example: + - admin + who_can_add: + allOf: + - $ref: '#/components/schemas/BotWhoCanAdd' + description: Кто может добавлять бота в чаты + example: creator + description: Параметры вебхука бота в ответах методов самого бота BotTemplateEngine: type: string enum: @@ -7449,6 +9089,42 @@ components: x-enum-descriptions: liquid: Liquid — условия, циклы и фильтры mustache: Mustache — простая подстановка без логики + BotTokenCreateRequest: + type: object + required: + - name + properties: + name: + type: string + maxLength: 255 + description: 'Имя токена: по нему токены различают в списке' + example: Сервер уведомлений + scopes: + type: array + items: + type: string + description: Права токена. Доступны только права, которые можно выдать боту. Если не передать, токен выпускается без прав. + example: + - messages:create + - chats:read + description: Запрос на выпуск токена бота + BotTokenUpdateRequest: + type: object + properties: + name: + type: string + maxLength: 255 + description: Новое имя токена + example: Сервер уведомлений + scopes: + type: array + items: + type: string + description: Новые права токена. Список заменяется целиком и действует сразу, перевыпускать токен не нужно. + example: + - messages:create + - chats:read + description: Запрос на изменение токена бота BotTriggerOn: type: string enum: @@ -7462,8 +9138,6 @@ components: unfurl: На развёртывание ссылок (link previews) BotUpdateRequest: type: object - required: - - webhook properties: webhook: type: object @@ -7552,7 +9226,33 @@ components: description: Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель. example: - admin + single_chat: + type: boolean + description: 'Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят.' + example: false + kind: + allOf: + - $ref: '#/components/schemas/BotWebhookKind' + description: Источник входящего вебхука. Если у бота входящего вебхука не было, он включается. + example: simple + unfurl_domains: + type: array + items: + type: string + description: Домены, ссылки на которые бот разворачивает, не больше 5. Работают вместе с событием `message_link_shared`. + example: + - example.com description: Объект параметров вебхука редактируемого бота + oauth_client: + type: object + allOf: + - $ref: '#/components/schemas/BotOAuthClientRequest' + nullable: true + description: 'Настройки авторизации от имени сотрудника. Если авторизация выключена, объект её включает, а `null` выключает: выданные сотрудниками авторизации отзываются, страница в витрине удаляется.' + promo: + allOf: + - $ref: '#/components/schemas/BotPromoRequest' + description: Страница бота в витрине. Доступна, только когда у бота включена авторизация. description: Запрос на обновление бота BotWebhook: type: object @@ -7573,6 +9273,9 @@ components: - single_chat - can_edit - who_can_add + - kind + - unfurl_domains + - last_request_at properties: name: type: string @@ -7658,7 +9361,37 @@ components: - $ref: '#/components/schemas/BotWhoCanAdd' description: Кто может добавлять бота в чаты example: creator + kind: + allOf: + - $ref: '#/components/schemas/BotWebhookKind' + nullable: true + description: Источник входящего вебхука. `null`, если входящий вебхук у бота выключен. + example: simple + unfurl_domains: + type: array + items: + type: string + description: Домены, ссылки на которые бот разворачивает + example: + - example.com + last_request_at: + type: string + format: date-time + nullable: true + description: Дата и время последнего запроса на входящий вебхук бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если запросов не было. + example: '2025-05-15T14:30:00.000Z' description: Параметры вебхука бота + BotWebhookKind: + type: string + enum: + - simple + - gitlab + - grafana + description: Источник входящего вебхука бота + x-enum-descriptions: + simple: 'Свой формат: сообщение собирается из тела запроса по шаблону бота' + gitlab: 'GitLab: Пачка сама разбирает запрос и собирает сообщение' + grafana: 'Grafana: Пачка сама разбирает запрос и собирает сообщение' BotWebhookSelfUpdateRequest: type: object required: @@ -7687,7 +9420,7 @@ components: creator: Только создатель бота creator_admin: Создатель и администраторы компании creator_admin_user: Создатель, администраторы и участники компании - anyone: Любой пользователь, в том числе гости + anyone: 'Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей' Button: type: object required: @@ -8030,6 +9763,7 @@ components: type: object required: - id + - oauth_client - webhook properties: id: @@ -8037,6 +9771,12 @@ components: format: int32 description: Идентификатор бота (совпадает с `user_id` бота) example: 1738816 + oauth_client: + type: object + allOf: + - $ref: '#/components/schemas/BotOAuthClient' + nullable: true + description: Параметры авторизации от имени сотрудника. `null` у бота, недоступного вам для редактирования. Может прийти и у бота с выключенной авторизацией, а у бота без токенов может прийти `null`. webhook: allOf: - $ref: '#/components/schemas/CompanyBotWebhook' @@ -8438,7 +10178,7 @@ components: duration_ms: type: integer format: int32 - description: Длительность в миллисекундах. Обязательна для голосового сообщения (`file_type` — `voice`). + description: Длительность в миллисекундах. Обязательна для голосового сообщения (`file_type` — `voice`). Голосовое сообщение длиннее 30 минут (1 800 000 мс) отклоняется с `422`. example: 5400 waveform: type: string @@ -8923,6 +10663,9 @@ components: - message_id - links - user_id + - entity_type + - entity_id + - thread - created_at - webhook_timestamp properties: @@ -8962,6 +10705,23 @@ components: format: int32 description: Идентификатор отправителя сообщения example: 2345 + entity_type: + allOf: + - $ref: '#/components/schemas/MessageEntityType' + description: Тип сущности, к которой относится сообщение со ссылкой + example: discussion + entity_id: + type: integer + format: int32 + nullable: true + description: 'Идентификатор сущности: беседы или канала, треда. В личной переписке `null`: бот в ней не участвует, и собеседника ему не раскрывают.' + example: 23438 + thread: + type: object + allOf: + - $ref: '#/components/schemas/WebhookMessageThread' + nullable: true + description: Тред, в котором отправлено сообщение со ссылкой. `null`, если сообщение отправлено не в треде. created_at: type: string format: date-time @@ -8973,6 +10733,16 @@ components: description: Дата и время отправки вебхука (UTC+0) в формате UNIX example: 1726685594 description: Структура исходящего вебхука о разворачивании ссылок + MarkChatUnreadRequest: + type: object + properties: + message_id: + type: integer + format: int32 + minimum: 1 + description: 'Идентификатор сообщения, с которого чат становится непрочитанным: оно и все сообщения после него. Если не передать, непрочитанным становится последнее сообщение.' + example: 1194275 + description: Запрос на отметку чата непрочитанным MemberEventType: type: string enum: @@ -9071,12 +10841,12 @@ components: id: type: integer format: int64 - description: Идентификатор треда + description: 'Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](POST /messages) с `entity_type: "thread"`.' example: 265142 chat_id: type: integer format: int64 - description: Идентификатор чата треда + description: Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](GET /messages). example: 2637266155 required: - id @@ -9139,7 +10909,7 @@ components: example: 334 content: type: string - description: 'Текст сообщения. Поддерживает упоминания: `@nickname` или `<@user_id>` (будет автоматически преобразовано в `@nickname`).' + description: 'Текст сообщения. Поддерживает упоминания: `@nickname` или `<@user_id>` (будет автоматически преобразовано в `@nickname`). У мульти-гостя `<@user_id>` недоступного ему сотрудника остаётся в тексте как есть.' example: Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье) files: type: array @@ -9180,7 +10950,7 @@ components: type: integer format: int32 minimum: 1 - description: Длительность в миллисекундах. Обязательно для голосовых сообщений (`file_type` — `voice`), для других типов не используется. + description: Длительность в миллисекундах. Обязательно для голосовых сообщений (`file_type` — `voice`), для других типов не используется. Голосовое сообщение длиннее 30 минут (1 800 000 мс) отклоняется с `422`. example: 5400 waveform: type: string @@ -9209,7 +10979,7 @@ components: parent_message_id: type: integer format: int32 - description: 'Идентификатор сообщения, на которое отвечаете. Ответ появится прямо в ленте чата, а не в треде: для треда отправляйте сообщение с `entity_type: "thread"`.' + description: 'Идентификатор сообщения, на которое вы отвечаете с цитатой. Ответить можно на сообщение в любом чате, в том числе в треде: ответ отправляют в тот же чат или тред, где лежит это сообщение, иначе запрос вернёт ошибку `422`. Чтобы написать в тред под сообщением, укажите `entity_type: "thread"` и идентификатор треда в `entity_id`.' example: 194270 display_avatar_url: type: string @@ -9273,7 +11043,7 @@ components: properties: content: type: string - description: 'Текст сообщения. Поддерживает упоминания: `@nickname` или `<@user_id>` (будет автоматически преобразовано в `@nickname`).' + description: 'Текст сообщения. Поддерживает упоминания: `@nickname` или `<@user_id>` (будет автоматически преобразовано в `@nickname`). У мульти-гостя `<@user_id>` недоступного ему сотрудника остаётся в тексте как есть.' example: 'Вот попробуйте написать правильно это с первого раза: Будущий, Полощи, Прийти, Грейпфрут, Мозаика, Бюллетень, Дуршлаг, Винегрет.' files: type: array @@ -9315,7 +11085,7 @@ components: type: integer format: int32 minimum: 1 - description: Длительность в миллисекундах. Обязательно для голосовых сообщений (`file_type` — `voice`), для других типов не используется. + description: Длительность в миллисекундах. Обязательно для голосовых сообщений (`file_type` — `voice`), для других типов не используется. Голосовое сообщение длиннее 30 минут (1 800 000 мс) отклоняется с `422`. example: 5400 waveform: type: string @@ -9459,6 +11229,7 @@ components: - chats:read - chats:create - chats:update + - chats:mark_unread - chats:archive - chats:leave - chat_members:read @@ -9519,6 +11290,7 @@ components: - owner - admin - user + - multi_guest - bot chats_create: - owner @@ -9529,11 +11301,19 @@ components: - owner - admin - user + - multi_guest + - bot + chats_mark_unread: + - owner + - admin + - user + - multi_guest - bot chats_archive: - owner - admin - user + - multi_guest - bot chats_leave: - owner @@ -9544,11 +11324,13 @@ components: - owner - admin - user + - multi_guest - bot chat_members_write: - owner - admin - user + - multi_guest - bot chat_exports_read: - owner @@ -9558,46 +11340,55 @@ components: - owner - admin - user + - multi_guest - bot messages_create: - owner - admin - user + - multi_guest - bot messages_update: - owner - admin - user + - multi_guest - bot messages_delete: - owner - admin - user + - multi_guest - bot reactions_read: - owner - admin - user + - multi_guest - bot reactions_write: - owner - admin - user + - multi_guest - bot pins_write: - owner - admin - user + - multi_guest - bot threads_read: - owner - admin - user + - multi_guest - bot threads_create: - owner - admin - user + - multi_guest - bot link_previews_write: - owner @@ -9608,11 +11399,13 @@ components: - owner - admin - user + - multi_guest - bot users_read: - owner - admin - user + - multi_guest - bot users_create: - owner @@ -9627,6 +11420,7 @@ components: - owner - admin - user + - multi_guest - bot group_tags_write: - owner @@ -9647,26 +11441,31 @@ components: - owner - admin - user + - multi_guest - bot profile_status_read: - owner - admin - user + - multi_guest - bot profile_status_write: - owner - admin - user + - multi_guest - bot profile_avatar_write: - owner - admin - user + - multi_guest - bot user_status_read: - owner - admin - user + - multi_guest - bot user_status_write: - owner @@ -9678,6 +11477,7 @@ components: - owner - admin - user + - multi_guest - bot audit_events_read: - owner @@ -9689,26 +11489,31 @@ components: - owner - admin - user + - multi_guest - bot tasks_create: - owner - admin - user + - multi_guest - bot tasks_update: - owner - admin - user + - multi_guest - bot tasks_delete: - owner - admin - user + - multi_guest - bot files_read: - owner - admin - user + - multi_guest - bot files_write: - owner @@ -9719,6 +11524,7 @@ components: - owner - admin - user + - multi_guest - bot webhooks_read: - owner @@ -9744,29 +11550,35 @@ components: - owner - admin - user + - multi_guest - bot search_chats: - owner - admin - user + - multi_guest - bot search_messages: - owner - admin - user + - multi_guest - bot drafts_read: - owner - admin - user + - multi_guest drafts_write: - owner - admin - user + - multi_guest x-enum-descriptions: chats_read: Просмотр чатов и списка чатов chats_create: Создание новых чатов chats_update: Изменение настроек чата + chats_mark_unread: Отметка чатов непрочитанными chats_archive: Архивация и разархивация чатов chats_leave: Выход из чатов chat_members_read: Просмотр участников чата @@ -10400,12 +12212,12 @@ components: id: type: integer format: int64 - description: Идентификатор созданного треда (в тред пишут методом [Новое сообщение](POST /messages)) + description: 'Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](POST /messages) с `entity_type: "thread"`.' example: 265142 chat_id: type: integer format: int64 - description: Идентификатор чата треда (по нему пишут в тред методом [Новое сообщение](POST /messages) и читают его методом [Список сообщений чата](GET /messages)) + description: Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](GET /messages) и работают с его участниками. example: 2637266155 message_id: type: integer @@ -10537,13 +12349,13 @@ components: type: string nullable: true maxLength: 255 - description: 'Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда.' + description: 'Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда.' example: olegp@example.com phone_number: type: string nullable: true maxLength: 255 - description: 'Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда.' + description: 'Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда.' example: '+79001234567' department: type: string @@ -10580,7 +12392,7 @@ components: type: array items: type: string - description: Массив тегов, привязанных к сотруднику + description: Массив тегов, привязанных к сотруднику. Мульти-гостю в чужой карточке приходит пустым. example: - Product - Design @@ -10682,7 +12494,7 @@ components: type: array items: type: string - description: Массив тегов, привязываемых к сотруднику + description: Массив названий тегов, привязываемых к сотруднику. Значение, которое не является массивом непустых строк, игнорируется. example: - Product - Design @@ -10872,7 +12684,7 @@ components: type: array items: type: string - description: Массив тегов, привязываемых к сотруднику + description: 'Массив названий тегов, привязываемых к сотруднику. Список заменяет прежний целиком, пустой снимает все теги. Значение, которое не является массивом непустых строк, игнорируется: теги сотрудника не меняются.' example: - Product - Design @@ -10935,6 +12747,8 @@ components: - draft_type_change_forbidden - confidential_download_denied - decryption_failed + - bot_add_denied + - timeout - forbidden - permission_denied - access_denied @@ -11004,6 +12818,8 @@ components: draft_type_change_forbidden: Отложенное сообщение нельзя превратить обратно в черновик confidential_download_denied: 'Скачивание файла запрещено: нужен запрос из безопасного контура' decryption_failed: Не удалось расшифровать файл + bot_add_denied: 'Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`' + timeout: 'Поиск не уложился по времени: сузьте запрос и повторите' VideoCallEventType: type: string enum: @@ -11158,7 +12974,7 @@ components: items: $ref: '#/components/schemas/ViewBlockCheckboxOption' minItems: 1 - maxItems: 10 + maxItems: 20 description: Массив чекбоксов required: type: boolean @@ -11460,7 +13276,7 @@ components: items: $ref: '#/components/schemas/ViewBlockSelectableOption' minItems: 1 - maxItems: 10 + maxItems: 20 description: Массив радиокнопок required: type: boolean diff --git a/packages/spec/overlay.en.yaml b/packages/spec/overlay.en.yaml index 51cf7f276..e95748343 100644 --- a/packages/spec/overlay.en.yaml +++ b/packages/spec/overlay.en.yaml @@ -47,11 +47,13 @@ actions: Changes a bot's settings: only the fields you pass are overwritten. - The `single_chat` field is accepted only when a bot is created. In this method it is silently ignored: the response is successful and the bot's mode does not change. + The nickname must end with `_bot` and be free in the workspace, otherwise the method responds with a validation error. Commands and scopes are replaced by the passed list as a whole. Scopes apply to the bot's main token — the one without a name, or the oldest one if there is none — and take effect on it right away, there is no need to reissue it. The scopes of an additional token are changed by [Edit bot token](PUT /bots/{id}/tokens/{token_id}). - The nickname must end with `_bot` and be free in the workspace, otherwise the method responds with a validation error. Commands and scopes are replaced by the passed list as a whole, and the new set of scopes is applied to the bot's current token right away — there is no need to reissue it. + The `oauth_client` object enables authorization on behalf of an employee or changes its settings, and `null` disables it: authorizations granted by employees are revoked, the catalog page is deleted, and the bot's own tokens keep working. When the client becomes server-side, its secret comes in `client_secret` once. The catalog page is set by `promo` while authorization is enabled. - You cannot edit a bot whose settings are not accessible to you (the "Who can edit bot settings" field is located on the "General" tab in the bot settings). + Only a workspace administrator or owner can enable the `message_link_shared` event, and for a bot with it change the domains, the webhook address and the event history. + + The bot name, authorization on behalf of an employee and the catalog page are changed only by the bot's creator, and a workspace administrator if the bot's settings grant administrators edit access. Other settings cannot be changed for a bot whose settings are not accessible to you (the "Who can edit bot settings" field is located on the "General" tab in the bot settings). - target: $.paths['/bots/{id}'].put.parameters[?(@.name=='id')] update: description: Bot ID @@ -62,7 +64,7 @@ actions: The bots the caller is entitled to configure: those they created themselves and those whose settings grant them edit access. - The `query` parameter selects bots by part of the name, without typos. Bot tokens do not come in the list — they are shown once at creation and at rotation. + The `query` parameter selects bots by part of the name, without typos. Bot tokens do not come in the list: a token value is shown once, and the bot's tokens themselves are returned by [Bot token list](GET /bots/{id}/tokens). The list of all bots in the workspace, including other people's, is available to the owner on the "Corporation" plan — [List workspace bots](GET /company/bots). There other people's bots come with only a name and a nickname, and the rest of the settings are hidden. - target: $.paths['/bots'].get.parameters[?(@.name=='query')] @@ -97,16 +99,12 @@ actions: description: Pagination cursor (from `meta.paginate.next_page`) - target: $.paths['/bots/{id}'].delete update: - description: >- + description: |- Delete bot + Removes the bot from the workspace for good. All of the bot's tokens stop working at once, as do the authorizations employees granted to it. The bot is removed from all chats, and its webhooks and catalog page are deleted. - Delete a bot. The bot's previous `access_token` is invalidated immediately, the bot is removed from all chats, - and its outgoing webhook is deleted. - - - Deletion is available to the bot creator, and to a workspace administrator if the bot's settings grant - administrators edit access. Chat owners and admins cannot delete a bot, even if they are allowed to edit it. + Deletion is available to the bot's creator, and a workspace administrator if the bot's settings grant administrators edit access. Chat owners and admins cannot delete a bot, even if they are allowed to edit it. - target: $.paths['/bots/{id}'].delete.parameters[?(@.name=='id')] update: description: Bot ID @@ -117,15 +115,17 @@ actions: Creates a conversation or a channel. The token owner becomes the chat owner, and this role is not transferred later on. + A multi-guest cannot create chats, as in the interface: the method responds `403` to them. + To create a one-on-one direct message with a user, use the [New message](POST /messages) method. To discuss a particular message there is no need to create a chat — a thread is started under it with the [New thread](POST /messages/{id}/thread) method. - Members can be passed right away: `member_ids` adds them one by one, `group_tag_ids` brings in everyone who belongs to the tag and keeps the membership up to date afterwards. IDs that do not exist in the workspace, as well as suspended and deleted employees, are silently dropped — the response is successful but the employee is not in the chat, so check the membership in the response. + Members can be passed right away: `member_ids` adds them one by one, `group_tag_ids` brings in everyone who belongs to the tag and keeps the membership up to date afterwards. IDs that do not exist in the workspace, as well as suspended and deleted employees, are silently dropped — the response is successful but the employee is not in the chat, so check the membership in the response. Bots are stricter: if a bot's "Who can add the bot to chats" setting does not let you add it, the chat is not created, and the method responds `403` with the `bot_add_denied` code and the IDs of such bots in `value`. - target: $.paths['/chats'].get update: description: |- List chats - By default — the conversations, channels, and direct messages the token owner belongs to. With `availability=public` the method returns instead all public chats of the workspace, including the ones the caller has not joined. + By default — the conversations, channels, and direct messages the token owner belongs to. With `availability=public` the method returns instead all public chats of the workspace, including the ones the caller has not joined. For a multi-guest — only the public chats they are a member of. Threads never come in this list; for them there is [List threads](GET /threads). @@ -326,6 +326,8 @@ actions: Those who already belong to the chat are silently skipped by the method, and this is not treated as an error. An unknown or inactive ID, however, stops the whole request: the method responds `404` and lists such values, and nobody is added. + A bot is added only by someone its "Who can add the bot to chats" setting allows — see [Bot settings](/guides/bots/settings#kto-mozhet-dobavlyat-bota-v-chaty). If `member_ids` contains a bot you are not allowed to add, the method adds nobody and responds `403` with the `bot_add_denied` code and the IDs of such bots in `value`. If the same request also has an unknown ID, the response is `404` with both errors. + Adding a whole department at once is more convenient with a tag — [Add tags](POST /chats/{id}/group_tags): then the chat membership is maintained by itself. - target: $.paths['/chats/{id}/members'].post.parameters[?(@.name=='id')] update: @@ -483,9 +485,9 @@ actions: description: |- List tags - All tags of the workspace with the number of employees in each. They are visible the same way to all roles, regardless of which chats they are linked to. + All tags of the workspace with the number of employees in each, regardless of which chats they are linked to. A multi-guest gets only the tags of active conversations and channels they are a member of. - The `names` parameter looks tags up by name — this is the way to get an `id` from a name known from the interface. It accepts no more than 100 names per request. + The `names` parameter looks tags up by name — this is the way to get an `id` from a name known from the interface. It accepts no more than 100 names per request, and for more the method responds `400` with the `too_long` code. Who belongs to a particular tag is returned by [List tag employees](GET /group_tags/{id}/users). - target: $.paths['/group_tags'].get.parameters[?(@.name=='names')] @@ -505,6 +507,8 @@ actions: The tag name and the number of employees in it. Only active employees are counted in `users_count`: suspended ones do not make it into the counter, although they remain in [List tag employees](GET /group_tags/{id}/users). + + Only the tags that come to a multi-guest in [List tags](GET /group_tags) are available to them; for the rest the method responds `404`. - target: $.paths['/group_tags/{id}'].get.parameters[?(@.name=='id')] update: description: Tag ID @@ -540,6 +544,8 @@ actions: Who belongs to the tag. Suspended employees come in the list, although they are not counted in the tag's own `users_count`; deleted ones do not come. Bots marked with the tag also make it into the results. The membership of a tag is changed in an employee's profile — [Edit employee](PUT /users/{id}) with the `list_tags` field, one employee at a time. + + For a multi-guest the method responds `403`: the list of workspace employees is closed to them, as in the interface. - target: $.paths['/group_tags/{id}/users'].get.parameters[?(@.name=='id')] update: description: Tag ID @@ -560,6 +566,8 @@ actions: There is no need to create the direct chat for this: it appears by itself if there has been no prior conversation between you. Only one direct chat can exist between two employees. Your own ID writes to the chat with yourself — the same place where an employee sends notes to themselves. + To reply to a specific message with a quote, pass its ID in `parent_message_id`. This works in any chat, including a thread: the reply is sent to the same chat or thread where the original message is. + The text in the `content` field is parsed as markdown: bold, italic, strikethrough, inline code, code block, and links. Lists and tables are not parsed — `-`, `1.`, and `|` stay as they are, a quote loses its `>`, and a line with a hash and a space becomes bold. The details are in the [Text formatting](/guides/markdown) section. `@all` mentions all members of the chat, `@here` those who are currently online, and `@` with a tag name without spaces the employees of that tag. In a thread a mention also works as an invitation: a mentioned employee who is not in the thread is added to it by Pachca and gains access to the thread and its parent message. To prevent that, pass `skip_invite_mentions: true`. In a conversation or a channel a mention adds nobody, and the parameter changes nothing there. @@ -582,7 +590,7 @@ actions: Deleted messages do not make it into the list. - The messages of a thread are returned by the `chat_id` of the thread itself, not by the chat where the parent message hangs. The thread identifier arrives in the `thread` field of the parent message. + The messages of a thread are returned by the `chat_id` of the thread itself, not by the chat where the parent message hangs. This `chat_id` arrives in the `thread.chat_id` field of the parent message. - target: $.paths['/messages'].get.parameters[?(@.name=='chat_id')] update: description: Chat ID (conversation, channel, direct message, or thread chat) @@ -829,6 +837,8 @@ actions: Direct messages are not searched by default. Pass `personal=true` and the search will go by the name of the other party rather than by the chat name. The method searches names, not content. To find where something was discussed or agreed, use [Search messages](GET /search/messages). + + A query that is too heavy may not finish in time: then the method responds `504` with the `timeout` code, and the query is worth narrowing. - target: $.paths['/search/chats'].get.parameters[?(@.name=='query')] update: description: Search query text @@ -866,6 +876,8 @@ actions: The words of the query are matched by their forms and by part of a word, and typos are not corrected. A query in quotation marks is searched as an exact phrase, and matching on part of a word does not apply to it. By default messages come from newest to oldest. `sort=relevance` switches the results to how well they match the query, where recent messages are still valued higher. + + A query that is too heavy may not finish in time: then the method responds `504` with the `timeout` code, and the query is worth narrowing. - target: $.paths['/search/messages'].get.parameters[?(@.name=='query')] update: description: Search query text @@ -906,6 +918,8 @@ actions: The method searches by email only for those who can see personal data in the workspace. It does not search by phone at all — for that there is [List employees](GET /users) with the `query` parameter. Deleted employees are never found; suspended ones only when a text query is given, and they stand below the rest in the results. Of the bots, only public ones are found. + + A query that is too heavy may not finish in time: then the method responds `504` with the `timeout` code, and the query is worth narrowing. - target: $.paths['/search/users'].get.parameters[?(@.name=='query')] update: description: Search query text @@ -961,7 +975,7 @@ actions: description: Filter by state. If the parameter is omitted, tasks in any state are returned. - target: $.paths['/tasks'].get.parameters[?(@.name=='chat_ids')] update: - description: Filter by the chats the tasks are attached to. Accessible chats are the ones you are a member of, public conversations and channels of the workspace, and threads available to you through their parent chat. The remaining IDs are ignored without an error. Up to 100 IDs. + description: Filter by the chats the tasks are attached to. Accessible chats are the ones you are a member of, public conversations and channels of the workspace, and threads available to you through their parent chat. For a multi-guest, public conversations and channels are accessible only if they are a member. The remaining IDs are ignored without an error. Up to 100 IDs. - target: $.paths['/tasks'].get.parameters[?(@.name=='performer_ids')] update: description: Filter by task performers. Up to 100 IDs. @@ -1018,7 +1032,7 @@ actions: description: |- Thread info - The thread's identifiers: its own `id`, the `chat_id` for reading and sending messages, and the message it hangs under. For a standalone thread `message_id` and `message_chat_id` come back as `null`. + The identifiers of the thread and of the message it hangs under. The thread's `id` is used to write to it with the [New message](POST /messages) method with `entity_type: "thread"`, and its `chat_id` to read its messages. For a standalone thread `message_id` and `message_chat_id` come back as `null`. The response carries identifiers only: a thread has no name and no message counter, and what it is about can be seen from the conversation inside. The messages of a thread are read with the [List chat messages](GET /messages) method, and its members with the [List chat members](GET /chats/{id}/members) method, both by the `chat_id` of the thread. @@ -1093,7 +1107,11 @@ actions: Bots in the workspace are employees too and come in the common list with `bot: true`. But they are excluded from the results for `query`: to find a bot by name, page through the list without a search query or use [List bots](GET /bots). - Email and phone come back as `null` if the display of personal data is turned off in the workspace and the caller is not an administrator. + For a multi-guest the method returns not the whole workspace but the people they see in the interface: themselves, members of their shared chats including bots, and public bots. Threads and archived chats do not count as shared. + + Email and phone come back as `null` if the display of personal data is turned off in the workspace and the caller is not an administrator. For a multi-guest they always come back as `null`. + + A `query` search may not finish in time: then the method responds `504` with the `timeout` code, and the query is worth narrowing. The profile of a single employee is returned by [Employee info](GET /users/{id}), and your own by [Own profile](GET /profile). - target: $.paths['/users'].get.parameters[?(@.name=='query')] @@ -1116,7 +1134,9 @@ actions: A suspended employee is returned with `suspended: true`, a deleted one as `404`, like a non-existent one. A bot also comes here as an employee, with `bot: true`. - Email and phone come back as `null` if the display of personal data is turned off in the workspace and the caller is not an administrator. An employee sees their own profile in full — the same one is returned by the [Own profile](GET /profile) method, and without the `users:read` scope. + For a multi-guest the method returns only those who come to them in [List employees](GET /users), and responds `404` for the rest. + + Email and phone come back as `null` if the display of personal data is turned off in the workspace and the caller is not an administrator. For a multi-guest they always come back as `null`. An employee sees their own profile in full — the same one is returned by the [Own profile](GET /profile) method, and without the `users:read` scope. - target: $.paths['/users/{id}'].get.parameters[?(@.name=='id')] update: description: User ID @@ -1134,6 +1154,8 @@ actions: The workspace owner can be edited only by themselves, and their role can be changed only to administrator. Turning a regular employee into a guest is impossible — in both cases the response is `403`. An unknown role value is silently ignored by the method: the response is successful and the role stays as it was. + + A bot's nickname must end with `_bot` and be unique in the workspace, otherwise the method responds `422` with an error on the `nickname` field: `invalid` or `already_exists`. A bot's existing nickname is checked only when it is changed. - target: $.paths['/users/{id}'].put.parameters[?(@.name=='id')] update: description: User ID @@ -1154,7 +1176,7 @@ actions: description: User ID - target: $.paths['/users/{user_id}/status'].get update: - description: "Employee status\n\nThe status of another employee: the emoji, the title, the expiry, and away mode.\n\nIf no status is set, the method returns `200` and `null` in the response body — with no wrapper object. A status whose `expires_at` has passed may still be returned for a short time until it is cleared, so check `expires_at` on the client side." + description: "Employee status\n\nThe status of another employee: the emoji, the title, the expiry, and away mode.\n\nFor a multi-guest the method returns statuses only of those who come to them in [List employees](GET /users), and responds `404` for the rest.\n\nIf no status is set, the method returns `200` and `null` in the response body — with no wrapper object. A status whose `expires_at` has passed may still be returned for a short time until it is cleared, so check `expires_at` on the client side." - target: $.paths['/users/{user_id}/status'].get.parameters[?(@.name=='user_id')] update: description: User ID @@ -1314,7 +1336,7 @@ actions: description: Array of tag IDs to be added as members - target: $.components.schemas.ApiError update: - description: API error (used for 400, 402, 403, 404, 409, 410, 422) + description: API error (used for 400, 402, 403, 404, 409, 410, 422, 429, 503, 504) - target: $.components.schemas.ApiError.properties.errors update: description: Array of errors @@ -1458,7 +1480,7 @@ actions: description: "Applied filters. Possible keys depend on the search type: order, sort, created_from, created_to, company_roles (users), active, chat_subtype, personal (chats), chat_ids, user_ids (messages)." - target: $.components.schemas.AuditDetailsBot update: - description: 'For: bot_deleted, bot_token_recreated' + description: 'For: bot_deleted, bot_token_recreated, bot_token_created, bot_token_updated, bot_token_reissued' - target: $.components.schemas.AuditDetailsBot.properties.bot_id update: description: Bot ID @@ -1667,6 +1689,11 @@ actions: bot_token_recreated: Bot token recreated (rotation) bot_deleted: Bot deleted bot_oauth_client_updated: Bot OAuth client settings changed + bot_oauth_client_disabled: Authorization on behalf of an employee disabled for the bot + bot_oauth_client_secret_rotated: Bot OAuth client secret rotated + bot_token_created: Bot token issued + bot_token_updated: Bot token name or scopes changed + bot_token_reissued: Additional bot token reissued oauth_authorization_granted: User granted an OAuth client access to their data oauth_authorization_revoked: An OAuth client's access to user data was revoked oauth_device_authorization_approved: Employee confirmed an app sign-in from a device @@ -1809,21 +1836,25 @@ actions: description: |- New bot - Creates a bot in the workspace and immediately returns its `access_token`. Save the token at creation: the same one is not shown again, and what remains is to reissue it with [Bot token rotation](POST /bots/{id}/recreate_token). + Creates a bot in the workspace. By default the bot gets an incoming webhook in its own format and immediately returns its `access_token`. Save the token at creation: the same one is not shown again, and what remains is to reissue it with [Bot token rotation](POST /bots/{id}/recreate_token). + + With `empty: true` an empty bot is created, as in the interface: only a name and a nickname, without a token and without an incoming webhook. Tokens are issued to it with [New bot token](POST /bots/{id}/tokens), and the incoming webhook is enabled with the `kind` field in the `webhook` object. A newly created bot does not write anywhere yet. It writes into a conversation and a channel only as a member, and it is added like an employee — with the [Add users](POST /chats/{id}/members) method, passing the bot's `id`. In a channel the bot receives the editor role. Direct messages and threads in public chats do not require membership. The bot's incoming webhook sends a message at once to every conversation and channel the bot belongs to, so it is the set of its chats that decides where it lands. No token is needed for that, the webhook address is enough. To write into one particular chat, take the [New message](POST /messages) method — that one does need a token. - The nickname must end with `_bot` and be free in the workspace. The `single_chat` restriction is set only here: when editing a bot it can no longer be changed. + Authorization on behalf of an employee can be enabled right away by passing `oauth_client`, and the catalog page can be filled in `promo`. For a server-side client the secret comes in `client_secret` once. Learn more in [Authorization setup](/guides/oauth/setup). + + The nickname must end with `_bot` and be free in the workspace. - target: $.paths['/bots/{id}'].get update: description: |- Bot info - The bot's settings. The token does not come in the response — it is shown once at the bot's creation and at [Bot token rotation](POST /bots/{id}/recreate_token). + The bot's settings. The token does not come in the response — it is shown once at the bot's creation and at [Bot token rotation](POST /bots/{id}/recreate_token). The bot's tokens are returned by [Bot token list](GET /bots/{id}/tokens). - The method returns only the bots the caller is entitled to configure: their own, and, if the bot's settings allow it, also as a workspace administrator or as the owner of a chat the bot belongs to. For someone else's bot the method responds `403`. + The method returns only the bots the caller is entitled to configure: their own, and, if the bot's settings allow it, also as a workspace administrator or as an owner or admin of a chat the bot belongs to. For someone else's bot the method responds `403`. The list of all bots in the workspace, including other people's, is available to the owner on the "Corporation" plan — [List workspace bots](GET /company/bots). - target: $.paths['/bots/{id}'].get.parameters[?(@.name=='id')] @@ -1871,7 +1902,7 @@ actions: creator: Only the bot creator creator_admin: The creator and company administrators creator_admin_user: The creator, administrators, and company members - anyone: Anyone, including guests + anyone: "Public bot: any employee except guests and multi-guests can add it" - target: $.components.schemas.BotCanEdit update: description: Role allowed to edit the bot settings @@ -1931,7 +1962,7 @@ actions: description: Roles allowed to edit the bot settings in addition to the creator. The creator can always edit. An empty array means only the creator can edit. - target: $.components.schemas.BotCreateRequest.properties.webhook.properties.single_chat update: - description: Restricts the bot to a single group chat. `true` — the bot can be added to one discussion or channel only, `false` — to multiple. Personal chats and threads don't count toward this limit. Set only on creation and not changed on update. + description: Restricts the bot to a single group chat. `true` — the bot can be added to one discussion or channel only, `false` — to multiple. Personal chats and threads don't count toward this limit. - target: $.components.schemas.BotWebhook update: description: Bot webhook parameters @@ -2116,9 +2147,11 @@ actions: Generates a new `access_token` for the bot and immediately invalidates the previous one. Use it when a token is compromised or for scheduled secret rotation in `CI`. + The bot's main token is reissued — the one without a name, or the oldest one if there is none. An additional token is reissued by [Reissue bot token](POST /bots/{id}/tokens/{token_id}/reissue). + The new token is returned in the response only once — save it right away. Its permissions are the same: the scopes are carried over from the previous token. - Rotation is available to the bot creator, and also to a workspace administrator if the bot's settings grant administrators edit access. The owner of a chat the bot belongs to cannot rotate the token, even when the rest of the bot's settings are open to them. + Rotation is available to the bot's creator, and a workspace administrator if the bot's settings grant administrators edit access. The owner of a chat the bot belongs to cannot rotate the token, even when the rest of the bot's settings are open to them. - target: $.paths['/bots/{id}/recreate_token'].post.parameters[?(@.name=='id')] update: description: Bot ID @@ -2129,7 +2162,7 @@ actions: Allows a bot to generate a new `access_token` for itself using its own token — without an administrator and without knowing its own `id`. - The very token the request was made with is rotated, and it is invalidated immediately. + The bot's main token is reissued — the one without a name, or the oldest one if there is none — and it is invalidated immediately. If the bot works with an additional token, that token stays as it was. The new token is returned in the response once — be sure to save it, otherwise the bot loses access to the API. The scopes are carried over from the previous token. - target: $.components.schemas.BotCreateResponse @@ -2143,8 +2176,7 @@ actions: description: Webhook parameters object - target: $.components.schemas.BotCreateResponse.properties.access_token update: - description: >- - Bot access token. Returned when the bot is created and when the token is rotated. + description: 'Bot access token. Returned when the bot is created and when the token is rotated. Not returned if the bot is created with `empty: true`.' - target: $.components.schemas.Message.properties.voice_content update: description: Voice message data. Filled only for voice messages (file `file_type` is `voice`), otherwise `null`. @@ -2162,13 +2194,13 @@ actions: description: Voice message transcription to text. `null` while the transcription is not ready or unavailable. - target: $.components.schemas.MessageCreateRequest.properties.message.properties.files.items.properties.duration_ms update: - description: Duration in milliseconds. Required for voice messages (`file_type` is `voice`), not used for other types. + description: Duration in milliseconds. Required for voice messages (`file_type` is `voice`), not used for other types. A voice message longer than 30 minutes (1,800,000 ms) is rejected with `422`. - target: $.components.schemas.MessageCreateRequest.properties.message.properties.files.items.properties.waveform update: description: Waveform for visualizing the voice message. Required for voice messages (`file_type` is `voice`), not used for other types. - target: $.components.schemas.MessageUpdateRequest.properties.message.properties.files.items.properties.duration_ms update: - description: Duration in milliseconds. Required for voice messages (`file_type` is `voice`), not used for other types. + description: Duration in milliseconds. Required for voice messages (`file_type` is `voice`), not used for other types. A voice message longer than 30 minutes (1,800,000 ms) is rejected with `422`. - target: $.components.schemas.MessageUpdateRequest.properties.message.properties.files.items.properties.waveform update: description: "Waveform for visualizing the voice message. Without it a request with a voice file (`file_type` is `voice`) does not pass validation, but when editing, the value that was sent is not saved. Not used for other types." @@ -2583,7 +2615,7 @@ actions: description: Image height in pixels - target: $.components.schemas.DraftFileRequest.properties.duration_ms update: - description: "Duration in milliseconds. Required for a voice message (`file_type` is `voice`)." + description: "Duration in milliseconds. Required for a voice message (`file_type` is `voice`). A voice message longer than 30 minutes (1,800,000 ms) is rejected with `422`." - target: $.components.schemas.DraftFileRequest.properties.waveform update: description: "Waveform for visualization. Required for a voice message (`file_type` is `voice`)." @@ -3071,10 +3103,12 @@ actions: description: "Thread created for this message. `null` if no thread was created, and for messages that are themselves inside a thread." - target: $.components.schemas.Message.properties.thread.properties.id update: - description: Thread ID + description: >- + Thread ID. To write to the thread, pass it in `entity_id` of the [New message](POST /messages) method with + `entity_type: "thread"`. - target: $.components.schemas.Message.properties.thread.properties.chat_id update: - description: Thread chat ID + description: Thread chat ID. It is used to read the thread's messages with the [List chat messages](GET /messages) method. - target: $.components.schemas.Message.properties.forwarding update: description: "Forwarded message information. `null` if the message is not a forwarded one." @@ -3107,7 +3141,7 @@ actions: description: "Identifier of whatever is named in `entity_type`: a conversation or channel, a thread, or an employee." - target: $.components.schemas.MessageCreateRequest.properties.message.properties.content update: - description: "Message text. Supports mentions: `@nickname` or `<@user_id>` (automatically converted to `@nickname`)." + description: "Message text. Supports mentions: `@nickname` or `<@user_id>` (automatically converted to `@nickname`). For a multi-guest, `<@user_id>` of an employee not accessible to them stays in the text as is." - target: $.components.schemas.MessageCreateRequest.properties.message.properties.files update: description: Files to attach @@ -3136,7 +3170,7 @@ actions: row. - target: $.components.schemas.MessageCreateRequest.properties.message.properties.parent_message_id update: - description: "ID of the message you are replying to. The reply appears right in the chat feed rather than in a thread: to write into a thread, send the message with `entity_type: \"thread\"`." + description: "ID of the message you are replying to with a quote. You can reply to a message in any chat, including a thread: send the reply to the same chat or thread where that message is, otherwise the request returns a `422` error. To write into the thread under a message, set `entity_type: \"thread\"` and the thread ID in `entity_id`." - target: $.components.schemas.MessageCreateRequest.properties.message.properties.display_avatar_url update: description: Custom sender avatar URL for this message. This field can only be used with a bot access_token. @@ -3166,7 +3200,7 @@ actions: description: Message parameters object to update - target: $.components.schemas.MessageUpdateRequest.properties.message.properties.content update: - description: "Message text. Supports mentions: `@nickname` or `<@user_id>` (automatically converted to `@nickname`)." + description: "Message text. Supports mentions: `@nickname` or `<@user_id>` (automatically converted to `@nickname`). For a multi-guest, `<@user_id>` of an employee not accessible to them stays in the text as is." - target: $.components.schemas.MessageUpdateRequest.properties.message.properties.files update: description: Files to attach @@ -3266,6 +3300,7 @@ actions: chats_read: View chats and chat list chats_create: Create new chats chats_update: Update chat settings + chats_mark_unread: Mark chats as unread chats_archive: Archive and unarchive chats chats_leave: Leave chats chat_members_read: View chat members @@ -3642,12 +3677,14 @@ actions: description: Thread - target: $.components.schemas.Thread.properties.id update: - description: Created thread ID (the thread is written to with the [New message](POST /messages) method) + description: >- + Thread ID. To write to the thread, pass it in `entity_id` of the [New message](POST /messages) method with + `entity_type: "thread"`. - target: $.components.schemas.Thread.properties.chat_id update: description: >- - Thread chat ID (it is used to write to the thread with the [New message](POST /messages) method and to read it - with the [List chat messages](GET /messages) method) + Thread chat ID. It is used to read the thread's messages with the [List chat messages](GET /messages) method + and to manage its members. - target: $.components.schemas.Thread.properties.message_id update: description: ID of the message the thread was created for. `null` for a standalone thread created without a message. @@ -3711,10 +3748,10 @@ actions: description: Username - target: $.components.schemas.User.properties.email update: - description: "Email. In someone else's card it comes as `null` if the caller has no right to see personal data: the workspace owner and an administrator always have it, an employee and a bot only when showing personal data is enabled in the workspace, and a guest never. In your own card the field always comes." + description: "Email. In someone else's card it comes as `null` if the caller has no right to see personal data: the workspace owner and an administrator always have it, an employee and a bot only when showing personal data is enabled in the workspace, and a guest or a multi-guest never. In your own card the field always comes." - target: $.components.schemas.User.properties.phone_number update: - description: "Phone number. In someone else's card it comes as `null` if the caller has no right to see personal data: the workspace owner and an administrator always have it, an employee and a bot only when showing personal data is enabled in the workspace, and a guest never. In your own card the field always comes." + description: "Phone number. In someone else's card it comes as `null` if the caller has no right to see personal data: the workspace owner and an administrator always have it, an employee and a bot only when showing personal data is enabled in the workspace, and a guest or a multi-guest never. In your own card the field always comes." - target: $.components.schemas.User.properties.department update: description: "Department. If not specified, `null` or an empty string is returned." @@ -3735,7 +3772,7 @@ actions: description: ID of the employee who invited this user. Returns `null` if the user signed up themselves or if the inviter has been deleted. - target: $.components.schemas.User.properties.list_tags update: - description: Array of tags assigned to the employee + description: Array of tags assigned to the employee. For a multi-guest it comes empty in someone else's card. - target: $.components.schemas.User.properties.custom_properties update: description: Employee custom properties @@ -3792,7 +3829,7 @@ actions: description: Whether the user is deactivated - target: $.components.schemas.UserCreateRequest.properties.user.properties.list_tags update: - description: Array of tags to assign to the employee + description: Array of tag names to assign to the employee. A value that is not an array of non-empty strings is ignored. - target: $.components.schemas.UserCreateRequest.properties.user.properties.chat_ids update: description: >- @@ -3913,7 +3950,7 @@ actions: description: Whether the user is deactivated - target: $.components.schemas.UserUpdateRequest.properties.user.properties.list_tags update: - description: Array of tags to assign to the employee + description: "Array of tag names to assign to the employee. The list replaces the previous one as a whole, an empty one removes all tags. A value that is not an array of non-empty strings is ignored: the employee's tags do not change." - target: $.components.schemas.UserUpdateRequest.properties.user.properties.custom_properties update: description: Custom properties to set @@ -3980,6 +4017,8 @@ actions: draft_type_change_forbidden: A scheduled message cannot be turned back into a draft confidential_download_denied: "Downloading the file is denied: the request has to come from the secure perimeter" decryption_failed: The file could not be decrypted + bot_add_denied: "The bot's \"Who can add the bot to chats\" setting does not let you add it: the IDs of such bots come in `value`" + timeout: "Search did not finish in time: narrow the query and retry" - target: $.components.schemas.ViewBlock update: description: View block for forms (base model, use specific block types) @@ -4515,7 +4554,7 @@ actions: description: Image height in pixels - target: $.components.schemas.DraftCreateRequest.properties.draft.properties.files.items.properties.duration_ms update: - description: "Duration in milliseconds. Required for a voice message (`file_type` is `voice`)." + description: "Duration in milliseconds. Required for a voice message (`file_type` is `voice`). A voice message longer than 30 minutes (1,800,000 ms) is rejected with `422`." - target: $.components.schemas.DraftCreateRequest.properties.draft.properties.files.items.properties.waveform update: description: "Waveform for visualization. Required for a voice message (`file_type` is `voice`)." @@ -4564,7 +4603,7 @@ actions: description: Image height in pixels - target: $.components.schemas.DraftUpdateRequest.properties.draft.properties.files.items.properties.duration_ms update: - description: "Duration in milliseconds. Required for a voice message (`file_type` is `voice`)." + description: "Duration in milliseconds. Required for a voice message (`file_type` is `voice`). A voice message longer than 30 minutes (1,800,000 ms) is rejected with `422`." - target: $.components.schemas.DraftUpdateRequest.properties.draft.properties.files.items.properties.waveform update: description: "Waveform for visualization. Required for a voice message (`file_type` is `voice`)." @@ -4734,3 +4773,866 @@ actions: - target: $.paths['/files/{id}'].get.parameters[?(@.name=='target')] update: description: "What to return instead of the original file: `pdf_preview` — the document converted to PDF, `pdf_first_page` — the first page as an image, `thumb` — a scaled-down copy of the image, `image` — the image as it is. Without the parameter the original file comes. A variant this file does not have leads to `400`." + - target: $.components.schemas.AuditDetailsBotOAuthClient.properties.actor_id + update: + description: "ID of the user who performed the action. `null` if the action was performed without an initiator." + - target: $.components.schemas.AuditDetailsBotOAuthClient.properties.bot_id + update: + description: "Bot ID" + - target: $.components.schemas.AuditDetailsBotOAuthClientDisabled + update: + description: "For: bot_oauth_client_disabled" + - target: $.components.schemas.AuditDetailsBotOAuthClientDisabled.properties.actor_id + update: + description: "ID of the user who performed the action. `null` if the action was performed without an initiator." + - target: $.components.schemas.AuditDetailsBotOAuthClientDisabled.properties.bot_id + update: + description: "Bot ID" + - target: $.components.schemas.AuditDetailsBotOAuthClientDisabled.properties.client_id + update: + description: "Bot OAuth client ID" + - target: $.components.schemas.AuditDetailsBotOAuthClientDisabled.properties.deleted_access_grants_count + update: + description: "Number of unused authorization codes revoked" + - target: $.components.schemas.AuditDetailsBotOAuthClientDisabled.properties.deleted_access_tokens_count + update: + description: "Number of employee tokens revoked" + - target: $.components.schemas.AuditDetailsBotOAuthClientSecretRotated + update: + description: "For: bot_oauth_client_secret_rotated" + - target: $.components.schemas.AuditDetailsBotOAuthClientSecretRotated.properties.actor_id + update: + description: "ID of the user who performed the action. `null` if the action was performed without an initiator." + - target: $.components.schemas.AuditDetailsBotOAuthClientSecretRotated.properties.bot_id + update: + description: "Bot ID" + - target: $.components.schemas.AuditDetailsBotOAuthClientSecretRotated.properties.client_id + update: + description: "Bot OAuth client ID" + - target: $.components.schemas.AuditDetailsBotScopes.properties.actor_id + update: + description: "ID of the user who performed the action. `null` if the action was performed without an initiator." + - target: $.components.schemas.AuditDetailsBotScopes.properties.bot_id + update: + description: "Bot ID" + - target: $.components.schemas.AuditDetailsBotWebhookSettings.properties.actor_id + update: + description: "ID of the user who performed the action. `null` if the action was performed without an initiator." + - target: $.components.schemas.AuditDetailsBotWebhookSettings.properties.bot_id + update: + description: "Bot ID" + - target: $.components.schemas.BotAccessToken + update: + description: "Bot token" + - target: $.components.schemas.BotAccessToken.properties.authorized_at + update: + description: "Authorization date. `null` for bot tokens." + - target: $.components.schemas.BotAccessToken.properties.created_at + update: + description: "Token issue date and time (ISO-8601, UTC+0) in YYYY-MM-DDThh:mm:ss.sssZ format" + - target: $.components.schemas.BotAccessToken.properties.expires_in + update: + description: "Token lifetime in seconds. `null` for bot tokens: they do not expire." + - target: $.components.schemas.BotAccessToken.properties.id + update: + description: "Token ID" + - target: $.components.schemas.BotAccessToken.properties.last_used_at + update: + description: "Token last used date. `null` until the token has been used at least once. Updated at most once per hour, so it may lag behind." + - target: $.components.schemas.BotAccessToken.properties.name + update: + description: "Token name. `null` for a token issued without a name." + - target: $.components.schemas.BotAccessToken.properties.revoked_at + update: + description: "Token revocation date. Always `null`: revoked tokens are not returned." + - target: $.components.schemas.BotAccessToken.properties.scopes + update: + description: "Token scopes" + - target: $.components.schemas.BotAccessToken.properties.token + update: + description: "Masked token (the first 8 and the last 4 characters are visible). The full value is returned once: when the token is issued and when it is reissued." + - target: $.components.schemas.BotAccessToken.properties.user_id + update: + description: "ID of the bot the token belongs to" + - target: $.components.schemas.BotCreateRequest.properties.empty + update: + description: "Create an empty bot: without a token and without an incoming webhook. Without this field the bot is created with an incoming webhook in its own format, and its token comes in `access_token`." + - target: $.components.schemas.BotCreateRequest.properties.oauth_client + update: + description: "Enable authorization on behalf of an employee right at creation" + - target: $.components.schemas.BotCreateRequest.properties.oauth_client.properties.confidential + update: + description: "Where the secret is stored: `true` — a server-side application stores `client_secret` and exchanges the code on its side, `false` — an application without a secret (browser, mobile, CLI) exchanges the code with PKCE. If omitted, the value does not change, and a new client gets `true`." + - target: $.components.schemas.BotCreateRequest.properties.oauth_client.properties.redirect_uris + update: + description: "Redirect URIs after consent. HTTPS is required, except for addresses on the same computer (`localhost`, `127.0.0.1`). The address in the authorization link must exactly match one from the list, except that the port is not compared for `localhost` and `127.0.0.1`. Pass at least one address when enabling. The list is replaced as a whole." + - target: $.components.schemas.BotCreateRequest.properties.oauth_client.properties.scopes + update: + description: "Scopes the bot requests from an employee on the consent screen. Only scopes that can be granted to the bot itself are available. If omitted when enabling, all bot scopes are requested. The list is replaced as a whole." + - target: $.components.schemas.BotCreateRequest.properties.promo + update: + description: "The bot's catalog page. Set only together with `oauth_client`: without authorization the bot has no page." + - target: $.components.schemas.BotCreateRequest.properties.promo.properties.description + update: + description: "Description: what the bot does and why to connect it. A bot cannot be published without a description." + - target: $.components.schemas.BotCreateRequest.properties.promo.properties.promo_images + update: + description: "Screenshots for the bot's page, up to 5: keys of uploaded images (`key` from [Get signature, key and other parameters](POST /uploads)). The list is replaced as a whole, the order is kept." + - target: $.components.schemas.BotCreateRequest.properties.promo.properties.published + update: + description: "Publish the bot to the catalog: it appears as a card on the \"Overview\" tab. Publishing requires a description." + - target: $.components.schemas.BotCreateRequest.properties.webhook.properties.kind + update: + description: "Incoming webhook source. Without `empty` it defaults to `simple`, and an empty bot gets an incoming webhook only through this field." + - target: $.components.schemas.BotCreateRequest.properties.webhook.properties.unfurl_domains + update: + description: "Domains whose links the bot unfurls, up to 5. They work together with the `message_link_shared` event." + - target: $.components.schemas.BotCreateResponse.properties.authorized_users_count + update: + description: "How many employees have authorized the bot" + - target: $.components.schemas.BotCreateResponse.properties.avatar_url + update: + description: "Bot avatar URL. `null` if no avatar is set." + - target: $.components.schemas.BotCreateResponse.properties.client_secret + update: + description: "Client secret. Returned once: when a server-side client is enabled, when the client switches to server-side, and when the secret is rotated." + - target: $.components.schemas.BotCreateResponse.properties.created_at + update: + description: "Bot creation date and time (ISO-8601, UTC+0) in YYYY-MM-DDThh:mm:ss.sssZ format" + - target: $.components.schemas.BotCreateResponse.properties.creator_id + update: + description: "ID of the employee who created the bot. `null` if the creator is not recorded." + - target: $.components.schemas.BotCreateResponse.properties.last_used_at + update: + description: "Date and time the bot last worked (ISO-8601, UTC+0) in YYYY-MM-DDThh:mm:ss.sssZ format: a request to the incoming webhook or an API call with any of the bot's tokens, including employee tokens. `null` if there has been none. Token use is recorded at most once an hour." + - target: $.components.schemas.BotCreateResponse.properties.name + update: + description: "Bot name" + - target: $.components.schemas.BotCreateResponse.properties.nickname + update: + description: "Bot nickname" + - target: $.components.schemas.BotCreateResponse.properties.oauth_client + update: + description: "Authorization on behalf of an employee. It can come even for a bot with authorization disabled, so check `oauth_client_enabled` to see whether it is enabled. A bot without tokens may get `null`." + - target: $.components.schemas.BotCreateResponse.properties.oauth_client.properties.client_id + update: + description: "Client ID for the authorization link" + - target: $.components.schemas.BotCreateResponse.properties.oauth_client.properties.client_secret_preview + update: + description: "Masked client secret. The full value comes in `client_secret` once: when a server-side client is enabled and when the secret is rotated." + - target: $.components.schemas.BotCreateResponse.properties.oauth_client.properties.confidential + update: + description: "Where the secret is stored: `true` — a server-side application, `false` — an application without a secret that exchanges the code with PKCE" + - target: $.components.schemas.BotCreateResponse.properties.oauth_client.properties.redirect_uris + update: + description: "Redirect URIs after consent" + - target: $.components.schemas.BotCreateResponse.properties.oauth_client.properties.scopes + update: + description: "Scopes the bot requests from an employee on the consent screen" + - target: $.components.schemas.BotCreateResponse.properties.oauth_client_enabled + update: + description: "Whether authorization on behalf of an employee is enabled for the bot" + - target: $.components.schemas.BotCreateResponse.properties.permissions + update: + description: "What you can do with this bot" + - target: $.components.schemas.BotCreateResponse.properties.permissions.properties.destroy + update: + description: "Delete the bot" + - target: $.components.schemas.BotCreateResponse.properties.permissions.properties.recreate_token + update: + description: "Issue, change and delete the bot's tokens and rotate the client secret" + - target: $.components.schemas.BotCreateResponse.properties.permissions.properties.update_oauth_client + update: + description: "Change authorization on behalf of an employee, the catalog page and the bot name" + - target: $.components.schemas.BotCreateResponse.properties.promo + update: + description: "The bot's catalog page. `null` if authorization is disabled for the bot." + - target: $.components.schemas.BotCreateResponse.properties.promo.properties.description + update: + description: "Bot description. `null` if not set." + - target: $.components.schemas.BotCreateResponse.properties.promo.properties.promo_images + update: + description: "Screenshots for the bot's page" + - target: $.components.schemas.BotCreateResponse.properties.promo.properties.promo_images.items.properties.key + update: + description: "Image key" + - target: $.components.schemas.BotCreateResponse.properties.promo.properties.promo_images.items.properties.url + update: + description: "Image URL" + - target: $.components.schemas.BotCreateResponse.properties.promo.properties.published + update: + description: "Whether the bot is published in the catalog" + - target: $.components.schemas.BotCreateResponse.properties.webhook.properties.kind + update: + description: "Incoming webhook source. `null` if the bot's incoming webhook is disabled." + - target: $.components.schemas.BotCreateResponse.properties.webhook.properties.last_request_at + update: + description: "Date and time of the last request to the bot's incoming webhook (ISO-8601, UTC+0) in YYYY-MM-DDThh:mm:ss.sssZ format. `null` if there have been no requests." + - target: $.components.schemas.BotCreateResponse.properties.webhook.properties.unfurl_domains + update: + description: "Domains whose links the bot unfurls" + - target: $.components.schemas.BotOAuthClient + update: + description: "Authorization on behalf of an employee" + - target: $.components.schemas.BotOAuthClient.properties.client_id + update: + description: "Client ID for the authorization link" + - target: $.components.schemas.BotOAuthClient.properties.client_secret_preview + update: + description: "Masked client secret. The full value comes in `client_secret` once: when a server-side client is enabled and when the secret is rotated." + - target: $.components.schemas.BotOAuthClient.properties.confidential + update: + description: "Where the secret is stored: `true` — a server-side application, `false` — an application without a secret that exchanges the code with PKCE" + - target: $.components.schemas.BotOAuthClient.properties.redirect_uris + update: + description: "Redirect URIs after consent" + - target: $.components.schemas.BotOAuthClient.properties.scopes + update: + description: "Scopes the bot requests from an employee on the consent screen" + - target: $.components.schemas.BotOAuthClientRequest + update: + description: "Settings of authorization on behalf of an employee" + - target: $.components.schemas.BotOAuthClientRequest.properties.confidential + update: + description: "Where the secret is stored: `true` — a server-side application stores `client_secret` and exchanges the code on its side, `false` — an application without a secret (browser, mobile, CLI) exchanges the code with PKCE. If omitted, the value does not change, and a new client gets `true`." + - target: $.components.schemas.BotOAuthClientRequest.properties.redirect_uris + update: + description: "Redirect URIs after consent. HTTPS is required, except for addresses on the same computer (`localhost`, `127.0.0.1`). The address in the authorization link must exactly match one from the list, except that the port is not compared for `localhost` and `127.0.0.1`. Pass at least one address when enabling. The list is replaced as a whole." + - target: $.components.schemas.BotOAuthClientRequest.properties.scopes + update: + description: "Scopes the bot requests from an employee on the consent screen. Only scopes that can be granted to the bot itself are available. If omitted when enabling, all bot scopes are requested. The list is replaced as a whole." + - target: $.components.schemas.BotPermissions + update: + description: "What the current user can do with the bot" + - target: $.components.schemas.BotPermissions.properties.destroy + update: + description: "Delete the bot" + - target: $.components.schemas.BotPermissions.properties.recreate_token + update: + description: "Issue, change and delete the bot's tokens and rotate the client secret" + - target: $.components.schemas.BotPermissions.properties.update_oauth_client + update: + description: "Change authorization on behalf of an employee, the catalog page and the bot name" + - target: $.components.schemas.BotPromo + update: + description: "The bot's catalog page" + - target: $.components.schemas.BotPromo.properties.description + update: + description: "Bot description. `null` if not set." + - target: $.components.schemas.BotPromo.properties.promo_images + update: + description: "Screenshots for the bot's page" + - target: $.components.schemas.BotPromo.properties.promo_images.items.properties.key + update: + description: "Image key" + - target: $.components.schemas.BotPromo.properties.promo_images.items.properties.url + update: + description: "Image URL" + - target: $.components.schemas.BotPromo.properties.published + update: + description: "Whether the bot is published in the catalog" + - target: $.components.schemas.BotPromoImage + update: + description: "Screenshot for the bot's catalog page" + - target: $.components.schemas.BotPromoImage.properties.key + update: + description: "Image key" + - target: $.components.schemas.BotPromoImage.properties.url + update: + description: "Image URL" + - target: $.components.schemas.BotPromoRequest + update: + description: "The bot's catalog page" + - target: $.components.schemas.BotPromoRequest.properties.description + update: + description: "Description: what the bot does and why to connect it. A bot cannot be published without a description." + - target: $.components.schemas.BotPromoRequest.properties.promo_images + update: + description: "Screenshots for the bot's page, up to 5: keys of uploaded images (`key` from [Get signature, key and other parameters](POST /uploads)). The list is replaced as a whole, the order is kept." + - target: $.components.schemas.BotPromoRequest.properties.published + update: + description: "Publish the bot to the catalog: it appears as a card on the \"Overview\" tab. Publishing requires a description." + - target: $.components.schemas.BotResponse.properties.authorized_users_count + update: + description: "How many employees have authorized the bot" + - target: $.components.schemas.BotResponse.properties.avatar_url + update: + description: "Bot avatar URL. `null` if no avatar is set." + - target: $.components.schemas.BotResponse.properties.client_secret + update: + description: "Client secret. Returned once: when a server-side client is enabled, when the client switches to server-side, and when the secret is rotated." + - target: $.components.schemas.BotResponse.properties.created_at + update: + description: "Bot creation date and time (ISO-8601, UTC+0) in YYYY-MM-DDThh:mm:ss.sssZ format" + - target: $.components.schemas.BotResponse.properties.creator_id + update: + description: "ID of the employee who created the bot. `null` if the creator is not recorded." + - target: $.components.schemas.BotResponse.properties.last_used_at + update: + description: "Date and time the bot last worked (ISO-8601, UTC+0) in YYYY-MM-DDThh:mm:ss.sssZ format: a request to the incoming webhook or an API call with any of the bot's tokens, including employee tokens. `null` if there has been none. Token use is recorded at most once an hour." + - target: $.components.schemas.BotResponse.properties.name + update: + description: "Bot name" + - target: $.components.schemas.BotResponse.properties.nickname + update: + description: "Bot nickname" + - target: $.components.schemas.BotResponse.properties.oauth_client + update: + description: "Authorization on behalf of an employee. It can come even for a bot with authorization disabled, so check `oauth_client_enabled` to see whether it is enabled. A bot without tokens may get `null`." + - target: $.components.schemas.BotResponse.properties.oauth_client.properties.client_id + update: + description: "Client ID for the authorization link" + - target: $.components.schemas.BotResponse.properties.oauth_client.properties.client_secret_preview + update: + description: "Masked client secret. The full value comes in `client_secret` once: when a server-side client is enabled and when the secret is rotated." + - target: $.components.schemas.BotResponse.properties.oauth_client.properties.confidential + update: + description: "Where the secret is stored: `true` — a server-side application, `false` — an application without a secret that exchanges the code with PKCE" + - target: $.components.schemas.BotResponse.properties.oauth_client.properties.redirect_uris + update: + description: "Redirect URIs after consent" + - target: $.components.schemas.BotResponse.properties.oauth_client.properties.scopes + update: + description: "Scopes the bot requests from an employee on the consent screen" + - target: $.components.schemas.BotResponse.properties.oauth_client_enabled + update: + description: "Whether authorization on behalf of an employee is enabled for the bot" + - target: $.components.schemas.BotResponse.properties.permissions + update: + description: "What you can do with this bot" + - target: $.components.schemas.BotResponse.properties.permissions.properties.destroy + update: + description: "Delete the bot" + - target: $.components.schemas.BotResponse.properties.permissions.properties.recreate_token + update: + description: "Issue, change and delete the bot's tokens and rotate the client secret" + - target: $.components.schemas.BotResponse.properties.permissions.properties.update_oauth_client + update: + description: "Change authorization on behalf of an employee, the catalog page and the bot name" + - target: $.components.schemas.BotResponse.properties.promo + update: + description: "The bot's catalog page. `null` if authorization is disabled for the bot." + - target: $.components.schemas.BotResponse.properties.promo.properties.description + update: + description: "Bot description. `null` if not set." + - target: $.components.schemas.BotResponse.properties.promo.properties.promo_images + update: + description: "Screenshots for the bot's page" + - target: $.components.schemas.BotResponse.properties.promo.properties.promo_images.items.properties.key + update: + description: "Image key" + - target: $.components.schemas.BotResponse.properties.promo.properties.promo_images.items.properties.url + update: + description: "Image URL" + - target: $.components.schemas.BotResponse.properties.promo.properties.published + update: + description: "Whether the bot is published in the catalog" + - target: $.components.schemas.BotResponse.properties.webhook.properties.kind + update: + description: "Incoming webhook source. `null` if the bot's incoming webhook is disabled." + - target: $.components.schemas.BotResponse.properties.webhook.properties.last_request_at + update: + description: "Date and time of the last request to the bot's incoming webhook (ISO-8601, UTC+0) in YYYY-MM-DDThh:mm:ss.sssZ format. `null` if there have been no requests." + - target: $.components.schemas.BotResponse.properties.webhook.properties.unfurl_domains + update: + description: "Domains whose links the bot unfurls" + - target: $.components.schemas.BotScopeCatalog + update: + description: "Catalog of scopes that can be granted to the bot" + - target: $.components.schemas.BotScopeCatalog.properties.groups + update: + description: "Scope categories" + - target: $.components.schemas.BotScopeCatalog.properties.groups.items.properties.description + update: + description: "Category description" + - target: $.components.schemas.BotScopeCatalog.properties.groups.items.properties.id + update: + description: "Category ID" + - target: $.components.schemas.BotScopeCatalog.properties.groups.items.properties.title + update: + description: "Category name" + - target: $.components.schemas.BotScopeCatalog.properties.presets + update: + description: "Ready-made scope sets" + - target: $.components.schemas.BotScopeCatalog.properties.presets.items.properties.id + update: + description: "Set ID: `read-only` or `admin`" + - target: $.components.schemas.BotScopeCatalog.properties.presets.items.properties.title + update: + description: "Set name" + - target: $.components.schemas.BotScopeCatalog.properties.scopes + update: + description: "Scopes available to the bot" + - target: $.components.schemas.BotScopeCatalog.properties.scopes.items.properties.group + update: + description: "Scope category, `id` from `groups`" + - target: $.components.schemas.BotScopeCatalog.properties.scopes.items.properties.id + update: + description: "Scope" + - target: $.components.schemas.BotScopeCatalog.properties.scopes.items.properties.preset + update: + description: "Sets that include the scope, `id` from `presets`" + - target: $.components.schemas.BotScopeCatalog.properties.scopes.items.properties.title + update: + description: "Scope description" + - target: $.components.schemas.BotScopeCatalogGroup + update: + description: "Scope category" + - target: $.components.schemas.BotScopeCatalogGroup.properties.description + update: + description: "Category description" + - target: $.components.schemas.BotScopeCatalogGroup.properties.id + update: + description: "Category ID" + - target: $.components.schemas.BotScopeCatalogGroup.properties.title + update: + description: "Category name" + - target: $.components.schemas.BotScopeCatalogItem + update: + description: "Scope in the bot scope catalog" + - target: $.components.schemas.BotScopeCatalogItem.properties.group + update: + description: "Scope category, `id` from `groups`" + - target: $.components.schemas.BotScopeCatalogItem.properties.id + update: + description: "Scope" + - target: $.components.schemas.BotScopeCatalogItem.properties.preset + update: + description: "Sets that include the scope, `id` from `presets`" + - target: $.components.schemas.BotScopeCatalogItem.properties.title + update: + description: "Scope description" + - target: $.components.schemas.BotScopeCatalogPreset + update: + description: "Ready-made scope set" + - target: $.components.schemas.BotScopeCatalogPreset.properties.id + update: + description: "Set ID: `read-only` or `admin`" + - target: $.components.schemas.BotScopeCatalogPreset.properties.title + update: + description: "Set name" + - target: $.components.schemas.BotSelfResponse + update: + description: "Bot parameters in the responses of the bot's own methods" + - target: $.components.schemas.BotSelfResponse.properties.id + update: + description: "Bot ID" + - target: $.components.schemas.BotSelfResponse.properties.oauth_client + update: + description: "Authorization on behalf of an employee. It can come even for a bot with authorization disabled. A bot without tokens may get `null`." + - target: $.components.schemas.BotSelfResponse.properties.oauth_client.properties.client_id + update: + description: "Client ID for the authorization link" + - target: $.components.schemas.BotSelfResponse.properties.oauth_client.properties.client_secret_preview + update: + description: "Masked client secret. The full value comes in `client_secret` once: when a server-side client is enabled and when the secret is rotated." + - target: $.components.schemas.BotSelfResponse.properties.oauth_client.properties.confidential + update: + description: "Where the secret is stored: `true` — a server-side application, `false` — an application without a secret that exchanges the code with PKCE" + - target: $.components.schemas.BotSelfResponse.properties.oauth_client.properties.redirect_uris + update: + description: "Redirect URIs after consent" + - target: $.components.schemas.BotSelfResponse.properties.oauth_client.properties.scopes + update: + description: "Scopes the bot requests from an employee on the consent screen" + - target: $.components.schemas.BotSelfResponse.properties.webhook + update: + description: "Webhook parameters object" + - target: $.components.schemas.BotSelfResponse.properties.webhook.properties.can_edit + update: + description: "Roles allowed to edit the bot settings in addition to the creator. The creator can always edit. An empty array means only the creator can edit." + - target: $.components.schemas.BotSelfResponse.properties.webhook.properties.challenge_key + update: + description: "Verification field name for incoming webhook verification. `null` if not set." + - target: $.components.schemas.BotSelfResponse.properties.webhook.properties.commands + update: + description: "Bot commands (trigger words)" + - target: $.components.schemas.BotSelfResponse.properties.webhook.properties.events + update: + description: "Events the bot is subscribed to" + - target: $.components.schemas.BotSelfResponse.properties.webhook.properties.events_history_enabled + update: + description: "Save the bot's event history for later retrieval via the event history method" + - target: $.components.schemas.BotSelfResponse.properties.webhook.properties.ignore_self_messages + update: + description: "Ignore incoming messages sent by the bot itself" + - target: $.components.schemas.BotSelfResponse.properties.webhook.properties.link_preview_enabled + update: + description: "Show link previews in incoming webhook messages" + - target: $.components.schemas.BotSelfResponse.properties.webhook.properties.name + update: + description: "Bot name" + - target: $.components.schemas.BotSelfResponse.properties.webhook.properties.nickname + update: + description: "Bot nickname" + - target: $.components.schemas.BotSelfResponse.properties.webhook.properties.outgoing_url + update: + description: "Outgoing webhook URL" + - target: $.components.schemas.BotSelfResponse.properties.webhook.properties.scopes + update: + description: "Bot token scopes (permissions). The default set is broader than what can be assigned explicitly, so values that cannot be set explicitly may appear here." + - target: $.components.schemas.BotSelfResponse.properties.webhook.properties.single_chat + update: + description: "Restricts the bot to a single group chat. `true` — the bot can be added to one discussion or channel only, `false` — to multiple. Personal chats and threads don't count toward this limit" + - target: $.components.schemas.BotSelfResponse.properties.webhook.properties.template + update: + description: "Template for formatting the incoming webhook. `null` if not set." + - target: $.components.schemas.BotSelfResponse.properties.webhook.properties.template_engine + update: + description: "Template engine used to process the incoming webhook template" + - target: $.components.schemas.BotSelfResponse.properties.webhook.properties.trigger_on + update: + description: "Outgoing webhook trigger condition" + - target: $.components.schemas.BotSelfResponse.properties.webhook.properties.who_can_add + update: + description: "Who can add the bot to chats" + - target: $.components.schemas.BotSelfTokenResponse + update: + description: "Bot parameters with a new token" + - target: $.components.schemas.BotSelfTokenResponse.properties.access_token + update: + description: "New bot token. Returned once." + - target: $.components.schemas.BotSelfTokenResponse.properties.id + update: + description: "Bot ID" + - target: $.components.schemas.BotSelfTokenResponse.properties.oauth_client + update: + description: "Authorization on behalf of an employee. It can come even for a bot with authorization disabled. A bot without tokens may get `null`." + - target: $.components.schemas.BotSelfTokenResponse.properties.oauth_client.properties.client_id + update: + description: "Client ID for the authorization link" + - target: $.components.schemas.BotSelfTokenResponse.properties.oauth_client.properties.client_secret_preview + update: + description: "Masked client secret. The full value comes in `client_secret` once: when a server-side client is enabled and when the secret is rotated." + - target: $.components.schemas.BotSelfTokenResponse.properties.oauth_client.properties.confidential + update: + description: "Where the secret is stored: `true` — a server-side application, `false` — an application without a secret that exchanges the code with PKCE" + - target: $.components.schemas.BotSelfTokenResponse.properties.oauth_client.properties.redirect_uris + update: + description: "Redirect URIs after consent" + - target: $.components.schemas.BotSelfTokenResponse.properties.oauth_client.properties.scopes + update: + description: "Scopes the bot requests from an employee on the consent screen" + - target: $.components.schemas.BotSelfTokenResponse.properties.webhook + update: + description: "Webhook parameters object" + - target: $.components.schemas.BotSelfTokenResponse.properties.webhook.properties.can_edit + update: + description: "Roles allowed to edit the bot settings in addition to the creator. The creator can always edit. An empty array means only the creator can edit." + - target: $.components.schemas.BotSelfTokenResponse.properties.webhook.properties.challenge_key + update: + description: "Verification field name for incoming webhook verification. `null` if not set." + - target: $.components.schemas.BotSelfTokenResponse.properties.webhook.properties.commands + update: + description: "Bot commands (trigger words)" + - target: $.components.schemas.BotSelfTokenResponse.properties.webhook.properties.events + update: + description: "Events the bot is subscribed to" + - target: $.components.schemas.BotSelfTokenResponse.properties.webhook.properties.events_history_enabled + update: + description: "Save the bot's event history for later retrieval via the event history method" + - target: $.components.schemas.BotSelfTokenResponse.properties.webhook.properties.ignore_self_messages + update: + description: "Ignore incoming messages sent by the bot itself" + - target: $.components.schemas.BotSelfTokenResponse.properties.webhook.properties.link_preview_enabled + update: + description: "Show link previews in incoming webhook messages" + - target: $.components.schemas.BotSelfTokenResponse.properties.webhook.properties.name + update: + description: "Bot name" + - target: $.components.schemas.BotSelfTokenResponse.properties.webhook.properties.nickname + update: + description: "Bot nickname" + - target: $.components.schemas.BotSelfTokenResponse.properties.webhook.properties.outgoing_url + update: + description: "Outgoing webhook URL" + - target: $.components.schemas.BotSelfTokenResponse.properties.webhook.properties.scopes + update: + description: "Bot token scopes (permissions). The default set is broader than what can be assigned explicitly, so values that cannot be set explicitly may appear here." + - target: $.components.schemas.BotSelfTokenResponse.properties.webhook.properties.single_chat + update: + description: "Restricts the bot to a single group chat. `true` — the bot can be added to one discussion or channel only, `false` — to multiple. Personal chats and threads don't count toward this limit" + - target: $.components.schemas.BotSelfTokenResponse.properties.webhook.properties.template + update: + description: "Template for formatting the incoming webhook. `null` if not set." + - target: $.components.schemas.BotSelfTokenResponse.properties.webhook.properties.template_engine + update: + description: "Template engine used to process the incoming webhook template" + - target: $.components.schemas.BotSelfTokenResponse.properties.webhook.properties.trigger_on + update: + description: "Outgoing webhook trigger condition" + - target: $.components.schemas.BotSelfTokenResponse.properties.webhook.properties.who_can_add + update: + description: "Who can add the bot to chats" + - target: $.components.schemas.BotSelfWebhook + update: + description: "Bot webhook parameters in the responses of the bot's own methods" + - target: $.components.schemas.BotSelfWebhook.properties.can_edit + update: + description: "Roles allowed to edit the bot settings in addition to the creator. The creator can always edit. An empty array means only the creator can edit." + - target: $.components.schemas.BotSelfWebhook.properties.challenge_key + update: + description: "Verification field name for incoming webhook verification. `null` if not set." + - target: $.components.schemas.BotSelfWebhook.properties.commands + update: + description: "Bot commands (trigger words)" + - target: $.components.schemas.BotSelfWebhook.properties.events + update: + description: "Events the bot is subscribed to" + - target: $.components.schemas.BotSelfWebhook.properties.events_history_enabled + update: + description: "Save the bot's event history for later retrieval via the event history method" + - target: $.components.schemas.BotSelfWebhook.properties.ignore_self_messages + update: + description: "Ignore incoming messages sent by the bot itself" + - target: $.components.schemas.BotSelfWebhook.properties.link_preview_enabled + update: + description: "Show link previews in incoming webhook messages" + - target: $.components.schemas.BotSelfWebhook.properties.name + update: + description: "Bot name" + - target: $.components.schemas.BotSelfWebhook.properties.nickname + update: + description: "Bot nickname" + - target: $.components.schemas.BotSelfWebhook.properties.outgoing_url + update: + description: "Outgoing webhook URL" + - target: $.components.schemas.BotSelfWebhook.properties.scopes + update: + description: "Bot token scopes (permissions). The default set is broader than what can be assigned explicitly, so values that cannot be set explicitly may appear here." + - target: $.components.schemas.BotSelfWebhook.properties.single_chat + update: + description: "Restricts the bot to a single group chat. `true` — the bot can be added to one discussion or channel only, `false` — to multiple. Personal chats and threads don't count toward this limit" + - target: $.components.schemas.BotSelfWebhook.properties.template + update: + description: "Template for formatting the incoming webhook. `null` if not set." + - target: $.components.schemas.BotSelfWebhook.properties.template_engine + update: + description: "Template engine used to process the incoming webhook template" + - target: $.components.schemas.BotSelfWebhook.properties.trigger_on + update: + description: "Outgoing webhook trigger condition" + - target: $.components.schemas.BotSelfWebhook.properties.who_can_add + update: + description: "Who can add the bot to chats" + - target: $.components.schemas.BotTokenCreateRequest + update: + description: "Bot token issue request" + - target: $.components.schemas.BotTokenCreateRequest.properties.name + update: + description: "Token name: tokens are told apart by it in the list" + - target: $.components.schemas.BotTokenCreateRequest.properties.scopes + update: + description: "Token scopes. Only scopes that can be granted to a bot are available. If omitted, the token is issued without scopes." + - target: $.components.schemas.BotTokenUpdateRequest + update: + description: "Bot token update request" + - target: $.components.schemas.BotTokenUpdateRequest.properties.name + update: + description: "New token name" + - target: $.components.schemas.BotTokenUpdateRequest.properties.scopes + update: + description: "New token scopes. The list is replaced as a whole and takes effect immediately, there is no need to reissue the token." + - target: $.components.schemas.BotUpdateRequest.properties.oauth_client + update: + description: "Settings of authorization on behalf of an employee. If authorization is disabled, the object enables it, and `null` disables it: authorizations granted by employees are revoked and the catalog page is deleted." + - target: $.components.schemas.BotUpdateRequest.properties.oauth_client.properties.confidential + update: + description: "Where the secret is stored: `true` — a server-side application stores `client_secret` and exchanges the code on its side, `false` — an application without a secret (browser, mobile, CLI) exchanges the code with PKCE. If omitted, the value does not change, and a new client gets `true`." + - target: $.components.schemas.BotUpdateRequest.properties.oauth_client.properties.redirect_uris + update: + description: "Redirect URIs after consent. HTTPS is required, except for addresses on the same computer (`localhost`, `127.0.0.1`). The address in the authorization link must exactly match one from the list, except that the port is not compared for `localhost` and `127.0.0.1`. Pass at least one address when enabling. The list is replaced as a whole." + - target: $.components.schemas.BotUpdateRequest.properties.oauth_client.properties.scopes + update: + description: "Scopes the bot requests from an employee on the consent screen. Only scopes that can be granted to the bot itself are available. If omitted when enabling, all bot scopes are requested. The list is replaced as a whole." + - target: $.components.schemas.BotUpdateRequest.properties.promo + update: + description: "The bot's catalog page. Available only while authorization is enabled for the bot." + - target: $.components.schemas.BotUpdateRequest.properties.promo.properties.description + update: + description: "Description: what the bot does and why to connect it. A bot cannot be published without a description." + - target: $.components.schemas.BotUpdateRequest.properties.promo.properties.promo_images + update: + description: "Screenshots for the bot's page, up to 5: keys of uploaded images (`key` from [Get signature, key and other parameters](POST /uploads)). The list is replaced as a whole, the order is kept." + - target: $.components.schemas.BotUpdateRequest.properties.promo.properties.published + update: + description: "Publish the bot to the catalog: it appears as a card on the \"Overview\" tab. Publishing requires a description." + - target: $.components.schemas.BotUpdateRequest.properties.webhook.properties.kind + update: + description: "Incoming webhook source. If the bot had no incoming webhook, it is enabled." + - target: $.components.schemas.BotUpdateRequest.properties.webhook.properties.single_chat + update: + description: "Restricts the bot to a single group chat. `true` — the bot can be added to one discussion or channel only, `false` — to multiple. Personal chats and threads don't count toward this limit" + - target: $.components.schemas.BotUpdateRequest.properties.webhook.properties.unfurl_domains + update: + description: "Domains whose links the bot unfurls, up to 5. They work together with the `message_link_shared` event." + - target: $.components.schemas.BotWebhook.properties.kind + update: + description: "Incoming webhook source. `null` if the bot's incoming webhook is disabled." + - target: $.components.schemas.BotWebhook.properties.last_request_at + update: + description: "Date and time of the last request to the bot's incoming webhook (ISO-8601, UTC+0) in YYYY-MM-DDThh:mm:ss.sssZ format. `null` if there have been no requests." + - target: $.components.schemas.BotWebhook.properties.unfurl_domains + update: + description: "Domains whose links the bot unfurls" + - target: $.components.schemas.BotWebhookKind + update: + description: "Incoming webhook source of the bot" + - target: $.components.schemas.BotWebhookKind + update: + x-enum-descriptions: + simple: "Custom format: the message is built from the request body with the bot's template" + gitlab: "GitLab: Pachca parses the request and builds the message itself" + grafana: "Grafana: Pachca parses the request and builds the message itself" + - target: $.components.schemas.CompanyBotResponse.properties.oauth_client + update: + description: "Authorization on behalf of an employee. `null` for a bot you cannot edit. It can also come for a bot with authorization disabled, and a bot without tokens may get `null`." + - target: $.components.schemas.CompanyBotResponse.properties.oauth_client.properties.client_id + update: + description: "Client ID for the authorization link" + - target: $.components.schemas.CompanyBotResponse.properties.oauth_client.properties.client_secret_preview + update: + description: "Masked client secret. The full value comes in `client_secret` once: when a server-side client is enabled and when the secret is rotated." + - target: $.components.schemas.CompanyBotResponse.properties.oauth_client.properties.confidential + update: + description: "Where the secret is stored: `true` — a server-side application, `false` — an application without a secret that exchanges the code with PKCE" + - target: $.components.schemas.CompanyBotResponse.properties.oauth_client.properties.redirect_uris + update: + description: "Redirect URIs after consent" + - target: $.components.schemas.CompanyBotResponse.properties.oauth_client.properties.scopes + update: + description: "Scopes the bot requests from an employee on the consent screen" + - target: $.components.schemas.MarkChatUnreadRequest + update: + description: "Request to mark a chat as unread" + - target: $.components.schemas.MarkChatUnreadRequest.properties.message_id + update: + description: "ID of the message from which the chat becomes unread: this message and all messages after it. If omitted, the last message becomes unread." + - target: "$.paths['/bots/{id}/rotate_client_secret'].post" + update: + description: |- + Client secret rotation + + Issues a new `client_secret` for authorization on behalf of an employee. The previous secret stops working at once, so prepare the bot for the replacement first. Authorizations already granted and tokens already received keep working. + + The new secret comes in `client_secret` once. The method works only for a bot with authorization enabled and a server-side client (`confidential: true`), otherwise it responds `400`. + + Rotation is available to the bot's creator, and to a workspace administrator if the bot's settings give administrators edit access. + - target: "$.paths['/bots/{id}/rotate_client_secret'].post.parameters[?(@.name=='id')]" + update: + description: "Bot ID" + - target: "$.paths['/bots/{id}/scopes'].get" + update: + description: |- + Bot scope catalog + + The scopes that can be granted to this bot: to its tokens and to authorization on behalf of an employee. Each scope has a description, a category and the ready-made sets it belongs to, as when choosing scopes in the interface. + + The catalog is available to the same people who see the bot's tokens: the bot's creator, and a workspace administrator if the bot's settings give administrators edit access. + - target: "$.paths['/bots/{id}/scopes'].get.parameters[?(@.name=='id')]" + update: + description: "Bot ID" + - target: "$.paths['/bots/{id}/tokens'].get" + update: + description: |- + Bot token list + + The bot's active tokens: the main one, issued together with the bot, and additional ones — each with its own name and scopes. The token value is masked here: in full it is shown once, when the token is issued and when it is reissued. + + Only the bot's creator and a workspace administrator, if the bot's settings give administrators edit access, can work with the bot's tokens. For the owner of a chat with the bot the method responds `403`, even when the bot's other settings are open to them. + - target: "$.paths['/bots/{id}/tokens'].get.parameters[?(@.name=='cursor')]" + update: + description: "Pagination cursor (from `meta.paginate.next_page`)" + - target: "$.paths['/bots/{id}/tokens'].get.parameters[?(@.name=='id')]" + update: + description: "Bot ID" + - target: "$.paths['/bots/{id}/tokens'].get.parameters[?(@.name=='limit')]" + update: + description: "Number of entities returned per request" + - target: "$.paths['/bots/{id}/tokens'].post" + update: + description: |- + New bot token + + Issues one more token for the bot, with its own name and scopes. A bot can have several tokens: for example, a separate one for each service, so that they can be revoked one by one. + + The token value comes in the response once — save it right away. The token does not expire and works until it is deleted. + + Scopes are chosen from those that can be granted to a bot: they are listed by [Bot scope catalog](GET /bots/{id}/scopes). For a scope that is not in the catalog the method responds `400`. Without `scopes` the token is issued without scopes. + + Only the bot's creator and a workspace administrator, if the bot's settings give administrators edit access, can work with the bot's tokens. For the owner of a chat with the bot the method responds `403`, even when the bot's other settings are open to them. + - target: "$.paths['/bots/{id}/tokens'].post.parameters[?(@.name=='id')]" + update: + description: "Bot ID" + - target: "$.paths['/bots/{id}/tokens/{token_id}'].delete" + update: + description: |- + Delete bot token + + Deletes the token: requests with it stop passing at once. The bot's other tokens keep working. + + Only the bot's creator and a workspace administrator, if the bot's settings give administrators edit access, can work with the bot's tokens. For the owner of a chat with the bot the method responds `403`, even when the bot's other settings are open to them. + - target: "$.paths['/bots/{id}/tokens/{token_id}'].delete.parameters[?(@.name=='id')]" + update: + description: "Bot ID" + - target: "$.paths['/bots/{id}/tokens/{token_id}'].delete.parameters[?(@.name=='token_id')]" + update: + description: "Token ID" + - target: "$.paths['/bots/{id}/tokens/{token_id}'].put" + update: + description: |- + Edit bot token + + Changes the token's name or scopes. New scopes take effect immediately: there is no need to reissue the token, and its value stays the same. Scopes are replaced by the passed list as a whole. + + Only the bot's creator and a workspace administrator, if the bot's settings give administrators edit access, can work with the bot's tokens. For the owner of a chat with the bot the method responds `403`, even when the bot's other settings are open to them. + - target: "$.paths['/bots/{id}/tokens/{token_id}'].put.parameters[?(@.name=='id')]" + update: + description: "Bot ID" + - target: "$.paths['/bots/{id}/tokens/{token_id}'].put.parameters[?(@.name=='token_id')]" + update: + description: "Token ID" + - target: "$.paths['/bots/{id}/tokens/{token_id}/reissue'].post" + update: + description: |- + Reissue bot token + + Replaces the token value with a new one: the previous value stops working at once, the name and scopes stay. The new value comes in the response once — save it right away. + + The method is needed when a token has leaked or is changed on schedule. The bot's main token can also be reissued with [Bot token rotation](POST /bots/{id}/recreate_token). + + Only the bot's creator and a workspace administrator, if the bot's settings give administrators edit access, can work with the bot's tokens. For the owner of a chat with the bot the method responds `403`, even when the bot's other settings are open to them. + - target: "$.paths['/bots/{id}/tokens/{token_id}/reissue'].post.parameters[?(@.name=='id')]" + update: + description: "Bot ID" + - target: "$.paths['/bots/{id}/tokens/{token_id}/reissue'].post.parameters[?(@.name=='token_id')]" + update: + description: "Token ID" + - target: "$.paths['/chats/{id}/unread'].put" + update: + description: |- + Mark chat as unread + + Marks a chat as unread for the token owner, like "Mark as unread" in the interface. Only their own counter changes, the other members notice nothing. + + Without `message_id` the last message of the chat becomes unread, with `message_id` — this message and all messages after it. A repeated request with the same message changes nothing, and in a chat without messages the method responds with success and does nothing. + + Works in conversations, channels, direct chats and threads the token owner belongs to. A hidden direct chat appears in the list again. For a chat the token owner is not in, and for a message from another chat, the method responds `404`. + - target: "$.paths['/chats/{id}/unread'].put.parameters[?(@.name=='id')]" + update: + description: "Chat or thread ID" + - target: $.components.schemas.LinkSharedWebhookPayload.properties.entity_id + update: + description: "Entity ID: the conversation or channel, or the thread. `null` in a direct chat: the bot does not take part in it, and the other participant is not disclosed to it." + - target: $.components.schemas.LinkSharedWebhookPayload.properties.entity_type + update: + description: "Type of the entity the message with the link belongs to" + - target: $.components.schemas.LinkSharedWebhookPayload.properties.thread + update: + description: "Thread the message with the link was sent in. `null` if the message was not sent in a thread." + - target: $.components.schemas.LinkSharedWebhookPayload.properties.thread.properties.message_chat_id + update: + description: "ID of the chat of the message the thread was created for. `null` for a thread without a parent message." + - target: $.components.schemas.LinkSharedWebhookPayload.properties.thread.properties.message_id + update: + description: "ID of the message the thread was created for. `null` for a thread without a parent message — such threads are created by [New standalone thread](POST /threads)." diff --git a/packages/spec/scripts/apply-overlay.ts b/packages/spec/scripts/apply-overlay.ts index 9b794af52..e724f1746 100644 --- a/packages/spec/scripts/apply-overlay.ts +++ b/packages/spec/scripts/apply-overlay.ts @@ -187,6 +187,15 @@ const RU_TO_EN: Record = { 'Бот релизов': 'Release bot', 'Заказ от {{ client }} на сумму {{ amount }} ₽': 'Order from {{ client }} for {{ amount }} ₽', 'Привет, посмотри пожалуйста последний отчёт': 'Hi, please take a look at the latest report', + // Bot tokens, catalog page and scope catalog examples + 'Сервер уведомлений': 'Notification server', + 'Собирает сводку по задачам и присылает её в чат': 'Collects a summary of tasks and sends it to the chat', + 'Собирает сводку по задачам Jira и присылает её в чат': 'Collects a summary of Jira tasks and sends it to the chat', + 'Отправка сообщений': 'Send messages', + 'Сообщения': 'Messages', + 'Работа с сообщениями': 'Working with messages', + 'Только чтение': 'Read only', + 'Администратор': 'Administrator', // Response wrapper descriptions (inline schemas in response bodies) 'Обертка ответа с данными и пагинацией': 'Response wrapper with data and pagination', diff --git a/packages/spec/scripts/validate-overlay.ts b/packages/spec/scripts/validate-overlay.ts index 16f7447e0..a8fc20852 100644 --- a/packages/spec/scripts/validate-overlay.ts +++ b/packages/spec/scripts/validate-overlay.ts @@ -169,6 +169,20 @@ function extractOverlayTargets(overlay: any): Set { return targets; } +/** + * Check that an overlay target points to an existing node in the base spec. + * Examples and response headers are translated too, but not collected above. + */ +function existsInDoc(target: string, doc: any): boolean { + const tokens = [...target.slice(1).matchAll(/\.([^.[\]]+)|\['([^']+)'\]/g)].map((m) => m[1] ?? m[2]); + let current = doc; + for (const token of tokens) { + current = resolveRef(current, doc)?.[token]; + if (current === undefined) return false; + } + return true; +} + // --------------------------------------------------------------------------- // Normalize targets for comparison // --------------------------------------------------------------------------- @@ -220,7 +234,7 @@ function main() { const stale: string[] = []; for (const [norm, original] of normalizedOverlay) { - if (!normalizedTranslatable.has(norm)) { + if (!normalizedTranslatable.has(norm) && !existsInDoc(original, baseDoc)) { stale.push(original); } } diff --git a/packages/spec/typespec.tsp b/packages/spec/typespec.tsp index a9259e899..a855ca629 100644 --- a/packages/spec/typespec.tsp +++ b/packages/spec/typespec.tsp @@ -505,6 +505,8 @@ enum ChatSubtype { draft_type_change_forbidden: "Отложенное сообщение нельзя превратить обратно в черновик", confidential_download_denied: "Скачивание файла запрещено: нужен запрос из безопасного контура", decryption_failed: "Не удалось расшифровать файл", + bot_add_denied: "Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value`", + timeout: "Поиск не уложился по времени: сузьте запрос и повторите", }) enum ValidationErrorCode { @doc("Обязательное поле (не может быть пустым)") @@ -612,6 +614,12 @@ enum ValidationErrorCode { @doc("Не удалось расшифровать файл") decryption_failed: "decryption_failed", + @doc("Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его") + bot_add_denied: "bot_add_denied", + + @doc("Поиск не уложился по времени") + timeout: "timeout", + @doc("Недостаточно прав для выполнения действия (пояснения вы получите в поле message)") forbidden: "forbidden", @@ -706,6 +714,11 @@ enum ValidationErrorCode { bot_token_recreated: "Токен бота перевыпущен (ротация)", bot_deleted: "Бот удалён", bot_oauth_client_updated: "Изменены параметры OAuth-клиента бота", + bot_oauth_client_disabled: "У бота выключена авторизация от имени сотрудника", + bot_oauth_client_secret_rotated: "Обновлён секрет OAuth-клиента бота", + bot_token_created: "Выпущен токен бота", + bot_token_updated: "Изменены имя или скоупы токена бота", + bot_token_reissued: "Отдельный токен бота перевыпущен", oauth_authorization_granted: "Пользователь выдал OAuth-клиенту доступ к своим данным", oauth_authorization_revoked: "Доступ OAuth-клиента к данным пользователя отозван", oauth_device_authorization_approved: "Сотрудник подтвердил вход приложения с устройства", @@ -845,6 +858,21 @@ enum AuditEventKey { @doc("Изменены параметры OAuth-клиента бота") bot_oauth_client_updated: "bot_oauth_client_updated", + @doc("У бота выключена авторизация от имени сотрудника") + bot_oauth_client_disabled: "bot_oauth_client_disabled", + + @doc("Обновлён секрет OAuth-клиента бота") + bot_oauth_client_secret_rotated: "bot_oauth_client_secret_rotated", + + @doc("Выпущен токен бота") + bot_token_created: "bot_token_created", + + @doc("Изменены имя или скоупы токена бота") + bot_token_updated: "bot_token_updated", + + @doc("Отдельный токен бота перевыпущен") + bot_token_reissued: "bot_token_reissued", + @doc("Пользователь выдал OAuth-клиенту доступ к своим данным") oauth_authorization_granted: "oauth_authorization_granted", @@ -994,11 +1022,11 @@ model Button { @doc("Тред") model Thread { - @doc("Идентификатор созданного треда (в тред пишут методом [Новое сообщение](POST /messages))") + @doc("Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](POST /messages) с `entity_type: \"thread\"`.") @example(265142) id: int64; - @doc("Идентификатор чата треда (по нему пишут в тред методом [Новое сообщение](POST /messages) и читают его методом [Список сообщений чата](GET /messages))") + @doc("Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](GET /messages) и работают с его участниками.") @example(2637266155) chat_id: int64; @@ -1071,12 +1099,12 @@ model User { @example("olegpetrov") nickname: string; - @doc("Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда.") + @doc("Электронная почта. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда.") @maxLength(255) @example("olegp@example.com") email: string | null; - @doc("Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя — никогда. В своей карточке поле приходит всегда.") + @doc("Телефон. В чужой карточке приходит `null`, если у вызывающего нет права видеть персональные данные: у владельца пространства и администратора оно есть всегда, у сотрудника и бота — только когда в пространстве включён показ персональных данных, у гостя и мульти-гостя — никогда. В своей карточке поле приходит всегда.") @maxLength(255) @example("+79001234567") phone_number: string | null; @@ -1106,7 +1134,7 @@ model User { @example(185) inviter_id: int32 | null; - @doc("Массив тегов, привязанных к сотруднику") + @doc("Массив тегов, привязанных к сотруднику. Мульти-гостю в чужой карточке приходит пустым.") @example(#["Product", "Design"]) list_tags: string[]; @@ -1258,11 +1286,11 @@ model Message { @doc("Тред, созданный к этому сообщению. `null`, если тред не создан, а также у сообщений, которые сами находятся внутри треда.") thread: { - @doc("Идентификатор треда") + @doc("Идентификатор треда. Чтобы написать в тред, передайте его в `entity_id` метода [Новое сообщение](POST /messages) с `entity_type: \"thread\"`.") @example(265142) id: int64; - @doc("Идентификатор чата треда") + @doc("Идентификатор чата треда. По нему читают сообщения треда методом [Список сообщений чата](GET /messages).") @example(2637266155) chat_id: int64; } | null; @@ -1585,6 +1613,7 @@ model AvatarData { chats_read: "Просмотр чатов и списка чатов", chats_create: "Создание новых чатов", chats_update: "Изменение настроек чата", + chats_mark_unread: "Отметка чатов непрочитанными", chats_archive: "Архивация и разархивация чатов", chats_leave: "Выход из чатов", chat_members_read: "Просмотр участников чата", @@ -1641,63 +1670,64 @@ model AvatarData { drafts_write: "Создание, изменение и удаление черновиков и отложенных сообщений", }) @extension("x-scope-roles", #{ - chats_read: #["owner", "admin", "user", "bot"], + chats_read: #["owner", "admin", "user", "multi_guest", "bot"], chats_create: #["owner", "admin", "user", "bot"], - chats_update: #["owner", "admin", "user", "bot"], - chats_archive: #["owner", "admin", "user", "bot"], + chats_update: #["owner", "admin", "user", "multi_guest", "bot"], + chats_mark_unread: #["owner", "admin", "user", "multi_guest", "bot"], + chats_archive: #["owner", "admin", "user", "multi_guest", "bot"], chats_leave: #["owner", "admin", "user", "bot"], - chat_members_read: #["owner", "admin", "user", "bot"], - chat_members_write: #["owner", "admin", "user", "bot"], + chat_members_read: #["owner", "admin", "user", "multi_guest", "bot"], + chat_members_write: #["owner", "admin", "user", "multi_guest", "bot"], chat_exports_read: #["owner"], chat_exports_write: #["owner"], - messages_read: #["owner", "admin", "user", "bot"], - messages_create: #["owner", "admin", "user", "bot"], - messages_update: #["owner", "admin", "user", "bot"], - messages_delete: #["owner", "admin", "user", "bot"], - reactions_read: #["owner", "admin", "user", "bot"], - reactions_write: #["owner", "admin", "user", "bot"], - pins_write: #["owner", "admin", "user", "bot"], - threads_read: #["owner", "admin", "user", "bot"], - threads_create: #["owner", "admin", "user", "bot"], + messages_read: #["owner", "admin", "user", "multi_guest", "bot"], + messages_create: #["owner", "admin", "user", "multi_guest", "bot"], + messages_update: #["owner", "admin", "user", "multi_guest", "bot"], + messages_delete: #["owner", "admin", "user", "multi_guest", "bot"], + reactions_read: #["owner", "admin", "user", "multi_guest", "bot"], + reactions_write: #["owner", "admin", "user", "multi_guest", "bot"], + pins_write: #["owner", "admin", "user", "multi_guest", "bot"], + threads_read: #["owner", "admin", "user", "multi_guest", "bot"], + threads_create: #["owner", "admin", "user", "multi_guest", "bot"], link_previews_write: #["owner", "admin", "user", "bot"], - views_write: #["owner", "admin", "user", "bot"], - users_read: #["owner", "admin", "user", "bot"], + views_write: #["owner", "admin", "user", "multi_guest", "bot"], + users_read: #["owner", "admin", "user", "multi_guest", "bot"], users_create: #["owner", "admin"], users_update: #["owner", "admin"], users_delete: #["owner", "admin"], - group_tags_read: #["owner", "admin", "user", "bot"], + group_tags_read: #["owner", "admin", "user", "multi_guest", "bot"], group_tags_write: #["owner", "admin"], bots_read: #["owner", "admin", "user"], bots_write: #["owner", "admin", "user"], bot_self_webhook_write: #["bot"], bot_self_write: #["bot"], - profile_read: #["owner", "admin", "user", "bot"], - profile_status_read: #["owner", "admin", "user", "bot"], - profile_status_write: #["owner", "admin", "user", "bot"], - profile_avatar_write: #["owner", "admin", "user", "bot"], - user_status_read: #["owner", "admin", "user", "bot"], + profile_read: #["owner", "admin", "user", "multi_guest", "bot"], + profile_status_read: #["owner", "admin", "user", "multi_guest", "bot"], + profile_status_write: #["owner", "admin", "user", "multi_guest", "bot"], + profile_avatar_write: #["owner", "admin", "user", "multi_guest", "bot"], + user_status_read: #["owner", "admin", "user", "multi_guest", "bot"], user_status_write: #["owner", "admin"], user_avatar_write: #["owner", "admin"], - custom_properties_read: #["owner", "admin", "user", "bot"], + custom_properties_read: #["owner", "admin", "user", "multi_guest", "bot"], audit_events_read: #["owner"], company_chats_read: #["owner"], company_bots_read: #["owner"], - tasks_read: #["owner", "admin", "user", "bot"], - tasks_create: #["owner", "admin", "user", "bot"], - tasks_update: #["owner", "admin", "user", "bot"], - tasks_delete: #["owner", "admin", "user", "bot"], - files_read: #["owner", "admin", "user", "bot"], + tasks_read: #["owner", "admin", "user", "multi_guest", "bot"], + tasks_create: #["owner", "admin", "user", "multi_guest", "bot"], + tasks_update: #["owner", "admin", "user", "multi_guest", "bot"], + tasks_delete: #["owner", "admin", "user", "multi_guest", "bot"], + files_read: #["owner", "admin", "user", "multi_guest", "bot"], files_write: #["owner", "admin", "user", "bot"], - uploads_write: #["owner", "admin", "user", "bot"], + uploads_write: #["owner", "admin", "user", "multi_guest", "bot"], webhooks_read: #["owner", "admin", "user", "bot"], webhooks_write: #["owner", "admin", "user", "bot"], webhooks_events_read: #["owner", "admin", "user", "bot"], webhooks_events_delete: #["owner", "admin", "user", "bot"], - search_users: #["owner", "admin", "user", "bot"], - search_chats: #["owner", "admin", "user", "bot"], - search_messages: #["owner", "admin", "user", "bot"], - drafts_read: #["owner", "admin", "user"], - drafts_write: #["owner", "admin", "user"], + search_users: #["owner", "admin", "user", "multi_guest", "bot"], + search_chats: #["owner", "admin", "user", "multi_guest", "bot"], + search_messages: #["owner", "admin", "user", "multi_guest", "bot"], + drafts_read: #["owner", "admin", "user", "multi_guest"], + drafts_write: #["owner", "admin", "user", "multi_guest"], }) enum OAuthScope { @doc("Просмотр чатов и списка чатов") @@ -1709,6 +1739,9 @@ enum OAuthScope { @doc("Изменение настроек чата") chats_update: "chats:update", + @doc("Отметка чатов непрочитанными") + chats_mark_unread: "chats:mark_unread", + @doc("Архивация и разархивация чатов") chats_archive: "chats:archive", @@ -1916,7 +1949,7 @@ model AccessTokenInfo { // ============================================================================ @extension("x-error", true) -@doc("Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422)") +@doc("Ошибка API (используется для 400, 402, 403, 404, 409, 410, 422, 429, 503, 504)") model ApiError { @doc("Массив ошибок") errors: ApiErrorItem[]; @@ -2047,7 +2080,7 @@ model UserCreateRequest { @example(false) suspended?: boolean = false; - @doc("Массив тегов, привязываемых к сотруднику") + @doc("Массив названий тегов, привязываемых к сотруднику. Значение, которое не является массивом непустых строк, игнорируется.") @example(#["Product", "Design"]) list_tags?: string[]; @@ -2119,7 +2152,7 @@ model UserUpdateRequest { @example(false) suspended?: boolean = false; - @doc("Массив тегов, привязываемых к сотруднику") + @doc("Массив названий тегов, привязываемых к сотруднику. Список заменяет прежний целиком, пустой снимает все теги. Значение, которое не является массивом непустых строк, игнорируется: теги сотрудника не меняются.") @example(#["Product", "Design"]) list_tags?: string[]; @@ -2216,6 +2249,14 @@ model ChatUpdateRequest { }; } +@doc("Запрос на отметку чата непрочитанным") +model MarkChatUnreadRequest { + @doc("Идентификатор сообщения, с которого чат становится непрочитанным: оно и все сообщения после него. Если не передать, непрочитанным становится последнее сообщение.") + @example(1194275) + @minValue(1) + message_id?: int32; +} + @doc("Запрос на добавление участников в чат") model AddMembersRequest { @doc("Массив идентификаторов пользователей, которые станут участниками") @@ -2253,7 +2294,7 @@ model MessageCreateRequest { @example(334) entity_id: int32; - @doc("Текст сообщения. Поддерживает упоминания: `@nickname` или `<@user_id>` (будет автоматически преобразовано в `@nickname`).") + @doc("Текст сообщения. Поддерживает упоминания: `@nickname` или `<@user_id>` (будет автоматически преобразовано в `@nickname`). У мульти-гостя `<@user_id>` недоступного ему сотрудника остаётся в тексте как есть.") @example("Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)") content: string; @@ -2285,7 +2326,7 @@ model MessageCreateRequest { @example(600) height?: int32; - @doc("Длительность в миллисекундах. Обязательно для голосовых сообщений (`file_type` — `voice`), для других типов не используется.") + @doc("Длительность в миллисекундах. Обязательно для голосовых сообщений (`file_type` — `voice`), для других типов не используется. Голосовое сообщение длиннее 30 минут (1 800 000 мс) отклоняется с `422`.") @example(5400) @minValue(1) duration_ms?: int32; @@ -2301,7 +2342,7 @@ model MessageCreateRequest { @example(#[#[#{ text: "Подробнее", url: "https://example.com/details" }, #{ text: "Отлично!", data: "awesome" }]]) buttons?: Button[][]; - @doc("Идентификатор сообщения, на которое отвечаете. Ответ появится прямо в ленте чата, а не в треде: для треда отправляйте сообщение с `entity_type: \"thread\"`.") + @doc("Идентификатор сообщения, на которое вы отвечаете с цитатой. Ответить можно на сообщение в любом чате, в том числе в треде: ответ отправляют в тот же чат или тред, где лежит это сообщение, иначе запрос вернёт ошибку `422`. Чтобы написать в тред под сообщением, укажите `entity_type: \"thread\"` и идентификатор треда в `entity_id`.") @example(194270) parent_message_id?: int32; @@ -2329,7 +2370,7 @@ model MessageCreateRequest { model MessageUpdateRequest { @doc("Собранный объект параметров редактируемого сообщения") message: { - @doc("Текст сообщения. Поддерживает упоминания: `@nickname` или `<@user_id>` (будет автоматически преобразовано в `@nickname`).") + @doc("Текст сообщения. Поддерживает упоминания: `@nickname` или `<@user_id>` (будет автоматически преобразовано в `@nickname`). У мульти-гостя `<@user_id>` недоступного ему сотрудника остаётся в тексте как есть.") @example("Вот попробуйте написать правильно это с первого раза: Будущий, Полощи, Прийти, Грейпфрут, Мозаика, Бюллетень, Дуршлаг, Винегрет.") content?: string; @@ -2361,7 +2402,7 @@ model MessageUpdateRequest { @example(600) height?: int32; - @doc("Длительность в миллисекундах. Обязательно для голосовых сообщений (`file_type` — `voice`), для других типов не используется.") + @doc("Длительность в миллисекундах. Обязательно для голосовых сообщений (`file_type` — `voice`), для других типов не используется. Голосовое сообщение длиннее 30 минут (1 800 000 мс) отклоняется с `422`.") @example(5400) @minValue(1) duration_ms?: int32; @@ -2565,7 +2606,7 @@ model DraftFileRequest { @example(600) height?: int32; - @doc("Длительность в миллисекундах. Обязательна для голосового сообщения (`file_type` — `voice`).") + @doc("Длительность в миллисекундах. Обязательна для голосового сообщения (`file_type` — `voice`). Голосовое сообщение длиннее 30 минут (1 800 000 мс) отклоняется с `422`.") @example(5400) duration_ms?: int32; @@ -2887,7 +2928,7 @@ model ViewBlockRadio { @doc("Массив радиокнопок") @minItems(1) - @maxItems(10) + @maxItems(20) options: ViewBlockSelectableOption[]; @doc("Обязательность") @@ -2921,7 +2962,7 @@ model ViewBlockCheckbox { @doc("Массив чекбоксов") @minItems(1) - @maxItems(10) + @maxItems(20) options: ViewBlockCheckboxOption[]; @doc("Обязательность") @@ -3187,7 +3228,7 @@ enum BotEventName { creator: "Только создатель бота", creator_admin: "Создатель и администраторы компании", creator_admin_user: "Создатель, администраторы и участники компании", - anyone: "Любой пользователь, в том числе гости", + anyone: "Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей", }) enum BotWhoCanAdd { creator: "creator", @@ -3206,8 +3247,24 @@ enum BotCanEdit { chat_owners: "chat_owners", } +@doc("Источник входящего вебхука бота") +@extension("x-enum-descriptions", #{ + simple: "Свой формат: сообщение собирается из тела запроса по шаблону бота", + gitlab: "GitLab: Пачка сама разбирает запрос и собирает сообщение", + grafana: "Grafana: Пачка сама разбирает запрос и собирает сообщение", +}) +enum BotWebhookKind { + simple: "simple", + gitlab: "gitlab", + grafana: "grafana", +} + @doc("Запрос на создание бота") model BotCreateRequest { + @doc("Создать пустого бота: без токена и без входящего вебхука. Без этого поля бот создаётся с входящим вебхуком в своём формате, а его токен приходит в `access_token`.") + @example(false) + empty?: boolean = false; + @doc("Объект параметров вебхука создаваемого бота") webhook: { @doc("Имя бота") @@ -3272,17 +3329,30 @@ model BotCreateRequest { @example(#[BotCanEdit.admin]) can_edit?: BotCanEdit[]; - @doc("Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят. Задаётся только при создании, при редактировании не меняется.") + @doc("Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят.") @example(false) single_chat?: boolean = false; + + @doc("Источник входящего вебхука. Без `empty` по умолчанию `simple`, а у пустого бота входящий вебхук включается только этим полем.") + @example(BotWebhookKind.simple) + kind?: BotWebhookKind; + + @doc("Домены, ссылки на которые бот разворачивает, не больше 5. Работают вместе с событием `message_link_shared`.") + @example(#["example.com"]) + unfurl_domains?: string[]; }; + @doc("Включить авторизацию от имени сотрудника сразу при создании") + oauth_client?: BotOAuthClientRequest; + + @doc("Страница бота в витрине. Задаётся только вместе с `oauth_client`: без авторизации страницы у бота нет.") + promo?: BotPromoRequest; } @doc("Запрос на обновление бота") model BotUpdateRequest { @doc("Объект параметров вебхука редактируемого бота") - webhook: { + webhook?: { @doc("Имя бота") @maxLength(255) @example("Бот задач") @@ -3344,14 +3414,122 @@ model BotUpdateRequest { @doc("Роли, которым, помимо создателя, разрешено редактировать настройки бота. Создатель может редактировать всегда. Пустой массив — редактировать может только создатель.") @example(#[BotCanEdit.admin]) can_edit?: BotCanEdit[]; + + @doc("Ограничивает бота одной беседой или каналом: `true` — бота можно добавить только в один такой чат, `false` — в несколько. Личные чаты и треды в ограничение не входят.") + @example(false) + single_chat?: boolean; + + @doc("Источник входящего вебхука. Если у бота входящего вебхука не было, он включается.") + @example(BotWebhookKind.simple) + kind?: BotWebhookKind; + + @doc("Домены, ссылки на которые бот разворачивает, не больше 5. Работают вместе с событием `message_link_shared`.") + @example(#["example.com"]) + unfurl_domains?: string[]; }; + @doc("Настройки авторизации от имени сотрудника. Если авторизация выключена, объект её включает, а `null` выключает: выданные сотрудниками авторизации отзываются, страница в витрине удаляется.") + oauth_client?: BotOAuthClientRequest | null; + + @doc("Страница бота в витрине. Доступна, только когда у бота включена авторизация.") + promo?: BotPromoRequest; } +@doc("Настройки авторизации от имени сотрудника") +model BotOAuthClientRequest { + @doc("Где хранится секрет: `true` — серверное приложение хранит `client_secret` и обменивает код у себя, `false` — приложение без секрета (браузер, мобильное, CLI) обменивает код по PKCE. Если не передать, значение не меняется, а у нового клиента — `true`.") + @example(true) + confidential?: boolean; + + @doc("Адреса возврата после согласия. HTTPS обязателен, кроме адресов на этом же компьютере (`localhost`, `127.0.0.1`). Адрес в ссылке авторизации должен совпадать с одним из списка точно, у `localhost` и `127.0.0.1` порт не сравнивается. При включении передайте хотя бы один адрес. Список заменяется целиком.") + @example(#["https://example.com/oauth/callback"]) + redirect_uris?: string[]; + @doc("Права, которые бот запрашивает у сотрудника на экране согласия. Доступны только права, которые можно выдать самому боту. Если при включении поле не передать, запрашиваются все права бота. Список заменяется целиком.") + @example(#["messages:read", "messages:create"]) + scopes?: string[]; +} -@doc("Параметры вебхука бота") -model BotWebhook { +@doc("Авторизация от имени сотрудника") +model BotOAuthClient { + @doc("Идентификатор клиента для ссылки авторизации") + @example("aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY") + client_id: string; + + @doc("Секрет клиента в маскированном виде. Полное значение приходит в `client_secret` один раз: при включении серверного клиента и при ротации секрета.") + @example("cH5kR9mN...x7Qp") + client_secret_preview: string; + + @doc("Где хранится секрет: `true` — серверное приложение, `false` — приложение без секрета, обмен кода по PKCE") + @example(true) + confidential: boolean; + + @doc("Адреса возврата после согласия") + @example(#["https://example.com/oauth/callback"]) + redirect_uris: string[]; + + @doc("Права, которые бот запрашивает у сотрудника на экране согласия") + @example(#["messages:read", "messages:create"]) + scopes: string[]; +} + +@doc("Страница бота в витрине") +model BotPromoRequest { + @doc("Описание: чем бот занимается и зачем его подключать. Без описания бота нельзя опубликовать.") + @example("Собирает сводку по задачам Jira и присылает её в чат") + description?: string; + + @doc("Опубликовать бота в витрине: он появится карточкой на вкладке «Обзор». Публикация требует описания.") + @example(true) + published?: boolean; + + @doc("Скриншоты страницы бота, не больше 5: ключи загруженных изображений (`key` из [Получение подписи, ключа и других параметров](POST /uploads)). Список заменяется целиком, порядок сохраняется.") + @example(#["attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png"]) + promo_images?: string[]; +} + +@doc("Скриншот страницы бота в витрине") +model BotPromoImage { + @doc("Ключ изображения") + @example("attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png") + key: string; + + @doc("Ссылка на изображение") + @example("https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/screenshot.png") + url: string; +} + +@doc("Страница бота в витрине") +model BotPromo { + @doc("Описание бота. `null`, если не задано.") + @example("Собирает сводку по задачам Jira и присылает её в чат") + description: string | null; + + @doc("Опубликован ли бот в витрине") + @example(true) + published: boolean; + + @doc("Скриншоты страницы бота") + promo_images: BotPromoImage[]; +} + +@doc("Что текущий пользователь может делать с ботом") +model BotPermissions { + @doc("Менять авторизацию от имени сотрудника, страницу в витрине и имя бота") + @example(true) + update_oauth_client: boolean; + + @doc("Выпускать, менять и удалять токены бота и обновлять секрет клиента") + @example(true) + recreate_token: boolean; + + @doc("Удалить бота") + @example(true) + destroy: boolean; +} + +@doc("Параметры вебхука бота в ответах методов самого бота") +model BotSelfWebhook { @doc("Имя бота") @maxLength(255) @example("Бот задач") @@ -3419,6 +3597,23 @@ model BotWebhook { who_can_add: BotWhoCanAdd; } +@doc("Параметры вебхука бота") +model BotWebhook { + ...BotSelfWebhook; + + @doc("Источник входящего вебхука. `null`, если входящий вебхук у бота выключен.") + @example(BotWebhookKind.simple) + kind: BotWebhookKind | null; + + @doc("Домены, ссылки на которые бот разворачивает") + @example(#["example.com"]) + unfurl_domains: string[]; + + @doc("Дата и время последнего запроса на входящий вебхук бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. `null`, если запросов не было.") + @example(utcDateTime.fromISO("2025-05-15T14:30:00.000Z")) + last_request_at: utcDateTime | null; +} + @doc("Запрос на саморегистрацию вебхука бота") model BotWebhookSelfUpdateRequest { @doc("Объект параметров вебхука") @@ -3435,19 +3630,208 @@ model BotResponse { @example(1738816) id: int32; + @doc("Имя бота") + @example("Бот задач") + name: string; + + @doc("Никнейм бота") + @example("tasks_bot") + nickname: string; + + @doc("Ссылка на аватар бота. `null`, если аватар не задан.") + @example("https://pachca-prod.s3.amazonaws.com/uploads/0001/0001/image.jpg") + avatar_url: string | null; + + @doc("Идентификатор сотрудника, создавшего бота. `null`, если создатель не записан.") + @example(12) + creator_id: int32 | null; + + @doc("Дата и время создания бота (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ") + @example(utcDateTime.fromISO("2025-05-15T14:30:00.000Z")) + created_at: utcDateTime; + + @doc("Сколько сотрудников авторизовали бота") + @example(3) + authorized_users_count: int32; + + @doc("Дата и время, когда бот последний раз работал (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ: запрос на входящий вебхук или вызов API любым токеном бота, включая токены сотрудников. `null`, если такого не было. Использование токена учитывается не чаще раза в час.") + @example(utcDateTime.fromISO("2025-05-15T14:30:00.000Z")) + last_used_at: utcDateTime | null; + @doc("Объект параметров вебхука") webhook: BotWebhook; + @doc("Включена ли у бота авторизация от имени сотрудника") + @example(true) + oauth_client_enabled: boolean; + + @doc("Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией, поэтому включена ли она, смотрите в `oauth_client_enabled`. У бота без токенов может прийти `null`.") + oauth_client: BotOAuthClient | null; + + @doc("Страница бота в витрине. `null`, если авторизация у бота выключена.") + promo: BotPromo | null; + + @doc("Что вы можете делать с этим ботом") + permissions: BotPermissions; + + @doc("Секрет клиента. Приходит один раз: при включении серверного клиента, при переходе на него и при ротации секрета.") + @example("dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA") + client_secret?: string; +} + +@doc("Параметры бота в ответах методов самого бота") +model BotSelfResponse { + @doc("Идентификатор бота (совпадает с `user_id` бота)") + @example(1738816) + id: int32; + + @doc("Параметры авторизации от имени сотрудника. Может прийти и у бота с выключенной авторизацией. У бота без токенов может прийти `null`.") + oauth_client: BotOAuthClient | null; + + @doc("Объект параметров вебхука") + webhook: BotSelfWebhook; +} + +@doc("Параметры бота с новым токеном") +model BotSelfTokenResponse { + ...BotSelfResponse; + + @doc("Новый токен бота. Возвращается один раз.") + @example("bm90X2FfcmVhbF90b2tlbg") + access_token: string; } @doc("Параметры созданного бота") model BotCreateResponse { ...BotResponse; - @doc("Токен доступа бота. Возвращается при создании бота и при ротации токена.") + @doc("Токен доступа бота. Возвращается при создании бота и при ротации токена. Не приходит, если бот создан с `empty: true`.") @example("bm90X2FfcmVhbF90b2tlbg") - access_token: string; + access_token?: string; +} + +@doc("Токен бота") +model BotAccessToken { + @doc("Идентификатор токена") + @example(4827) + id: int64; + + @doc("Токен в маскированном виде (видны первые 8 и последние 4 символа). Полное значение приходит один раз: при выпуске и перевыпуске токена.") + @example("cH5kR9mN...x7Qp") + token: string; + + @doc("Имя токена. `null` у токена, выпущенного без имени.") + @example("Сервер уведомлений") + name: string | null; + + @doc("Идентификатор бота, которому принадлежит токен") + @example(1738816) + user_id: int64; + + @doc("Права токена") + @example(#["messages:create", "chats:read"]) + scopes: string[]; + + @doc("Дата и время выпуска токена (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ") + @example(utcDateTime.fromISO("2025-01-15T10:30:00.000Z")) + created_at: utcDateTime; + + @doc("Дата отзыва токена. Всегда `null`: отозванные токены в ответ не попадают.") + @example(null) + revoked_at: utcDateTime | null; + + @doc("Время жизни токена в секундах. У токенов бота `null`: они бессрочные.") + @example(null) + expires_in: int32 | null; + + @doc("Дата последнего использования токена. `null`, пока по токену не было ни одного запроса. Обновляется не чаще раза в час, поэтому может отставать.") + @example(utcDateTime.fromISO("2025-02-24T14:20:00.000Z")) + last_used_at: utcDateTime | null; + + @doc("Дата авторизации. У токенов бота `null`.") + @example(null) + authorized_at: utcDateTime | null; +} + +@doc("Запрос на выпуск токена бота") +model BotTokenCreateRequest { + @doc("Имя токена: по нему токены различают в списке") + @maxLength(255) + @example("Сервер уведомлений") + name: string; + + @doc("Права токена. Доступны только права, которые можно выдать боту. Если не передать, токен выпускается без прав.") + @example(#["messages:create", "chats:read"]) + scopes?: string[]; +} + +@doc("Запрос на изменение токена бота") +model BotTokenUpdateRequest { + @doc("Новое имя токена") + @maxLength(255) + @example("Сервер уведомлений") + name?: string; + + @doc("Новые права токена. Список заменяется целиком и действует сразу, перевыпускать токен не нужно.") + @example(#["messages:create", "chats:read"]) + scopes?: string[]; +} + +@doc("Право в каталоге прав бота") +model BotScopeCatalogItem { + @doc("Право") + @example("messages:create") + id: string; + + @doc("Описание права") + @example("Отправка сообщений") + title: string; + + @doc("Категория права, `id` из `groups`") + @example("messages") + group: string; + + @doc("Наборы, в которые входит право, `id` из `presets`") + @example(#["admin"]) + preset: string[]; +} + +@doc("Категория прав") +model BotScopeCatalogGroup { + @doc("Идентификатор категории") + @example("messages") + id: string; + + @doc("Название категории") + @example("Сообщения") + title: string; + + @doc("Описание категории") + @example("Работа с сообщениями") + description: string; +} + +@doc("Готовый набор прав") +model BotScopeCatalogPreset { + @doc("Идентификатор набора: `read-only` или `admin`") + @example("read-only") + id: string; + @doc("Название набора") + @example("Только чтение") + title: string; +} + +@doc("Каталог прав, которые можно выдать боту") +model BotScopeCatalog { + @doc("Права, доступные боту") + scopes: BotScopeCatalogItem[]; + + @doc("Категории прав") + groups: BotScopeCatalogGroup[]; + + @doc("Готовые наборы прав") + presets: BotScopeCatalogPreset[]; } @doc("Параметры вебхука бота пространства. Настройки бота, недоступного вам для редактирования, приходят как `null` — остаются только имя и никнейм.") @@ -3525,9 +3909,11 @@ model CompanyBotResponse { @example(1738816) id: int32; + @doc("Параметры авторизации от имени сотрудника. `null` у бота, недоступного вам для редактирования. Может прийти и у бота с выключенной авторизацией, а у бота без токенов может прийти `null`.") + oauth_client: BotOAuthClient | null; + @doc("Объект параметров вебхука") webhook: CompanyBotWebhook; - } @doc("Пустые детали. При: user_login, user_logout, user_2fa_fail, user_2fa_success, user_2fa_disabled, user_created, user_deleted, chat_created, message_created, message_updated, message_deleted, reaction_created, reaction_deleted, thread_created, audit_events_accessed, company_chats_accessed, company_bots_accessed, exchange_disabled.") @@ -3645,7 +4031,7 @@ model AuditDetailsSearch { filters: Record; } -@doc("При: bot_deleted, bot_token_recreated") +@doc("При: bot_deleted, bot_token_recreated, bot_token_created, bot_token_updated, bot_token_reissued") model AuditDetailsBot { @doc("Идентификатор бота") bot_id: int32; @@ -3655,6 +4041,10 @@ model AuditDetailsBot { @doc("При: bot_scopes_updated") model AuditDetailsBotScopes { + @doc("Идентификатор бота") + bot_id: int32; + @doc("Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора.") + actor_id: int32 | null; @doc("Скоупы, добавленные токену бота") added_scopes: string[]; @doc("Скоупы, отозванные у токена бота") @@ -3663,18 +4053,50 @@ model AuditDetailsBotScopes { @doc("При: bot_webhook_settings_updated") model AuditDetailsBotWebhookSettings { + @doc("Идентификатор бота") + bot_id: int32; + @doc("Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора.") + actor_id: int32 | null; @doc("Изменённые настройки вебхука. Ключ — имя настройки (outgoing_url, ignore_self_messages, events_history_enabled), значение — объект с полями previous (прежнее значение) и new (новое значение).") changes: Record; } @doc("При: bot_oauth_client_updated") model AuditDetailsBotOAuthClient { + @doc("Идентификатор бота") + bot_id: int32; + @doc("Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора.") + actor_id: int32 | null; @doc("Идентификатор OAuth-клиента бота") client_id: string; @doc("Изменённые параметры клиента. Ключ — имя параметра (confidential, redirect_uris, scopes), значение — объект с полями previous (прежнее значение) и new (новое значение).") changes: Record; } +@doc("При: bot_oauth_client_secret_rotated") +model AuditDetailsBotOAuthClientSecretRotated { + @doc("Идентификатор бота") + bot_id: int32; + @doc("Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора.") + actor_id: int32 | null; + @doc("Идентификатор OAuth-клиента бота") + client_id: string; +} + +@doc("При: bot_oauth_client_disabled") +model AuditDetailsBotOAuthClientDisabled { + @doc("Идентификатор бота") + bot_id: int32; + @doc("Идентификатор пользователя, выполнившего действие. `null`, если действие выполнено без инициатора.") + actor_id: int32 | null; + @doc("Идентификатор OAuth-клиента бота") + client_id: string; + @doc("Сколько токенов сотрудников отозвано") + deleted_access_tokens_count: int32; + @doc("Сколько неиспользованных кодов авторизации отозвано") + deleted_access_grants_count: int32; +} + @doc("При: oauth_authorization_granted") model AuditDetailsOAuthAuthorizationGranted { @doc("Идентификатор OAuth-клиента, которому выдан доступ") @@ -3770,6 +4192,8 @@ union AuditEventDetailsUnion { AuditDetailsVideoCallStarted, AuditDetailsVideoCallFinished, AuditDetailsVideoCallRecording, + AuditDetailsBotOAuthClientSecretRotated, + AuditDetailsBotOAuthClientDisabled, } @doc("Событие аудита") @@ -4127,6 +4551,17 @@ model LinkSharedWebhookPayload { @example(2345) user_id: int32; + @doc("Тип сущности, к которой относится сообщение со ссылкой") + @example(MessageEntityType.discussion) + entity_type: MessageEntityType; + + @doc("Идентификатор сущности: беседы или канала, треда. В личной переписке `null`: бот в ней не участвует, и собеседника ему не раскрывают.") + @example(23438) + entity_id: int32 | null; + + @doc("Тред, в котором отправлено сообщение со ссылкой. `null`, если сообщение отправлено не в треде.") + thread: WebhookMessageThread | null; + @doc("Дата и время создания сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ") @example(utcDateTime.fromISO("2024-09-18T19:53:14.000Z")) created_at: utcDateTime; @@ -4684,7 +5119,11 @@ interface UserOperations { Боты в пространстве — тоже сотрудники и приходят в общем списке с `bot: true`. Но из выдачи по `query` они исключены: чтобы найти бота по имени, перебирайте страницы без поискового запроса или пользуйтесь методом [Список ботов](GET /bots). -Почта и телефон приходят `null`, если в пространстве выключен показ персональных данных, а вызывающий не администратор. +Мульти-гостю метод отдаёт не всё пространство, а тех, кого он видит в интерфейсе: его самого, участников общих с ним чатов вместе с ботами и публичных ботов. Треды и архивные чаты общими не считаются. + +Почта и телефон приходят `null`, если в пространстве выключен показ персональных данных, а вызывающий не администратор. Мульти-гостю они всегда приходят `null`. + +Поиск по `query` может не уложиться по времени: тогда метод отвечает `504` с кодом `timeout`, и запрос стоит сузить. Карточку одного сотрудника отдаёт [Информация о сотруднике](GET /users/{id}), свою — [Свой профиль](GET /profile). """) @@ -4721,6 +5160,9 @@ interface UserOperations { } | { @statusCode _: 402; @body body: ApiError; + } | { + @statusCode _: 504; + @body body: ApiError; }; @extension("x-requirements", #{ @@ -4733,7 +5175,9 @@ interface UserOperations { Приостановленный сотрудник отдаётся с `suspended: true`, удалённый — `404`, как несуществующий. Бот тоже приходит сюда как сотрудник, с `bot: true`. -Почта и телефон приходят `null`, если в пространстве выключен показ персональных данных, а вызывающий не администратор. Свою карточку сотрудник видит целиком — она же отдаётся методом [Свой профиль](GET /profile) и без скоупа `users:read`. +Мульти-гостю метод отдаёт только тех, кто приходит ему в [Список сотрудников](GET /users), а на остальных отвечает `404`. + +Почта и телефон приходят `null`, если в пространстве выключен показ персональных данных, а вызывающий не администратор. Мульти-гостю они всегда приходят `null`. Свою карточку сотрудник видит целиком — она же отдаётся методом [Свой профиль](GET /profile) и без скоупа `users:read`. """) @route("/{id}") @get @@ -4773,6 +5217,8 @@ interface UserOperations { Владельца пространства редактирует только он сам, а его роль меняется лишь на администратора. Перевести обычного сотрудника в гостя нельзя — в обоих случаях ответ `403`. Незнакомое значение роли метод молча пропускает: ответ приходит успешный, а роль остаётся прежней. + +У бота ник должен оканчиваться на `_bot` и быть уникальным в пространстве, иначе метод отвечает `422` с ошибкой на поле `nickname`: `invalid` или `already_exists`. Прежний ник бота проверяется, только когда его меняют. """) @put updateUser( @@ -4859,6 +5305,8 @@ interface UserStatusOperations { Статус другого сотрудника: эмодзи, подпись, срок и режим «Нет на месте». +Мульти-гостю метод отдаёт статусы только тех, кто приходит ему в [Список сотрудников](GET /users), а на остальных отвечает `404`. + Если статус не установлен, метод возвращает `200` и `null` в теле ответа — без объекта-обёртки. Статус с истёкшим `expires_at` какое-то время ещё возвращается, пока не будет очищен, поэтому проверяйте `expires_at` на стороне клиента. """) @route("/{user_id}/status") @@ -5090,6 +5538,8 @@ interface GroupTagOperations { Название тега и число сотрудников в нём. В `users_count` считаются только действующие сотрудники: приостановленные в счётчик не попадают, хотя в методе [Список сотрудников тега](GET /group_tags/{id}/users) остаются. + +Мульти-гостю доступны только теги, которые приходят ему в [Список тегов](GET /group_tags), а на остальные метод отвечает `404`. """) @route("/{id}") @get @@ -5120,9 +5570,9 @@ interface GroupTagOperations { @doc(""" Список тегов -Все теги пространства с числом сотрудников в каждом. Видны они одинаково всем ролям, независимо от того, к каким чатам привязаны. +Все теги пространства с числом сотрудников в каждом, независимо от того, к каким чатам они привязаны. Мульти-гостю приходят только теги активных бесед и каналов, где он участник. -Параметр `names` ищет теги по названиям — это способ получить `id` по имени, известному из интерфейса. За один запрос он принимает не больше 100 имён. +Параметр `names` ищет теги по названиям — это способ получить `id` по имени, известному из интерфейса. За один запрос он принимает не больше 100 имён, на большее число метод отвечает `400` с кодом `too_long`. Кто состоит в конкретном теге, отдаёт [Список сотрудников тега](GET /group_tags/{id}/users). """) @@ -5171,6 +5621,8 @@ interface GroupTagOperations { Кто состоит в теге. Приостановленные сотрудники в списке приходят, хотя в `users_count` самого тега они не учтены. Удалённые не приходят, а боты, помеченные тегом, в выдачу попадают. Состав тега меняют в карточке сотрудника — [Редактирование сотрудника](PUT /users/{id}) с полем `list_tags`, по одному сотруднику за раз. + +Мульти-гостю метод отвечает `403`: список сотрудников пространства ему закрыт, как и в интерфейсе. """) @extension("x-paginated", true) @route("/{id}/users") @@ -5304,9 +5756,11 @@ interface ChatOperations { Создаёт беседу или канал. Владелец токена становится владельцем чата, и роль эта в дальнейшем не передаётся. +Мульти-гость, как и в интерфейсе, создавать чаты не может: метод отвечает ему `403`. + Для создания личной переписки 1 на 1 с пользователем пользуйтесь методом [Новое сообщение](POST /messages). Чтобы обсудить конкретное сообщение, чат заводить не нужно — под ним заводят тред методом [Новый тред](POST /messages/{id}/thread). -Участников можно передать сразу: `member_ids` добавляет поимённо, `group_tag_ids` приводит всех, кто состоит в теге, и дальше поддерживает состав сам. Идентификаторы, которых в пространстве нет, а также приостановленные и удалённые сотрудники молча отбрасываются — ответ приходит успешным, а сотрудника в чате не оказывается, поэтому сверяйте состав в ответе. +Участников можно передать сразу: `member_ids` добавляет поимённо, `group_tag_ids` приводит всех, кто состоит в теге, и дальше поддерживает состав сам. Идентификаторы, которых в пространстве нет, а также приостановленные и удалённые сотрудники молча отбрасываются — ответ приходит успешным, а сотрудника в чате не оказывается, поэтому сверяйте состав в ответе. С ботами строже: если настройка бота «Кто может добавлять бота в чаты» не разрешает вам его добавить, чат не создаётся, а метод отвечает `403` с кодом `bot_add_denied` и идентификаторами таких ботов в `value`. """) @post createChat(@body request: ChatCreateRequest): { @@ -5317,7 +5771,7 @@ interface ChatOperations { @body body: OAuthError; } | { @statusCode _: 403; - @body body: OAuthError; + @body body: ApiError | OAuthError; } | { @statusCode _: 400; @body body: ApiError; @@ -5370,7 +5824,7 @@ interface ChatOperations { @doc(""" Список чатов -По умолчанию — беседы, каналы и личные переписки, где состоит владелец токена. С `availability=public` метод отдаёт вместо этого все открытые чаты пространства, включая те, куда вызывающий не вступал. +По умолчанию — беседы, каналы и личные переписки, где состоит владелец токена. С `availability=public` метод отдаёт вместо этого все открытые чаты пространства, включая те, куда вызывающий не вступал. Мульти-гостю — только открытые чаты, где он участник. Треды в списке не приходят никогда, для них есть [Список тредов](GET /threads). @@ -5535,41 +5989,90 @@ interface ChatOperations { @statusCode _: 404; @body body: ApiError; }; -} - -// ============================================================================ -// Chat Member Operations -// ============================================================================ -@tag("Members") -interface ChatMemberOperations { @extension("x-requirements", #{ - scope: "chat_members:read", + scope: "chats:mark_unread", }) @doc(""" -Список участников чата +Отметка чата непрочитанным -Кто состоит в беседе, канале или треде. Боты приходят наравне с сотрудниками, с `bot: true`. +Помечает чат непрочитанным для владельца токена, как «Отметить непрочитанным» в интерфейсе. Меняется только его собственный счётчик, остальные участники ничего не замечают. -Владелец пространства может получить состав участников любого чата пространства. Администраторы и боты получают состав только тех чатов, где состоят сами, и открытых чатов пространства. +Без `message_id` непрочитанным становится последнее сообщение чата, с `message_id` — это сообщение и все после него. Повторный запрос с тем же сообщением ничего не меняет, а в чате без сообщений метод отвечает успехом и ничего не делает. -В выдачу попадают только действующие сотрудники: приостановленные не приходят, хотя членство у них сохраняется. Роль участника в чате метод не отдаёт — параметр `role` работает только как фильтр. +Работает в беседах, каналах, личных чатах и тредах, где владелец токена состоит. Скрытый личный чат снова появляется в списке. На чат, где владельца токена нет, и на сообщение из другого чата метод отвечает `404`. """) - @extension("x-paginated", true) - @route("/chats/{id}/members") - @get - listMembers( - @doc("Идентификатор чата") + @route("/{id}/unread") + @put + @opExample(#{ + parameters: #{ + id: 334, + request: #{ + message_id: 1194275, + }, + }, + returnType: #{ + _: 204, + }, + }) + markChatUnread( + @doc("Идентификатор чата или треда") @extension("example", 334) @path id: int32, - @doc("Роль в чате") - @extension("example", "all") - @query role?: ChatMemberRoleFilter = ChatMemberRoleFilter.all, - @doc("Количество возвращаемых сущностей за один запрос") - @query - @extension("example", 1) - @minValue(1) - @maxValue(50) + @body request?: MarkChatUnreadRequest + ): { + @statusCode _: 204; + } | { + @statusCode _: 400; + @body body: ApiError; + } | { + @statusCode _: 401; + @body body: OAuthError; + } | { + @statusCode _: 403; + @body body: ApiError | OAuthError; + } | { + @statusCode _: 404; + @body body: ApiError; + } | { + @statusCode _: 402; + @body body: ApiError; + }; +} + +// ============================================================================ +// Chat Member Operations +// ============================================================================ + +@tag("Members") +interface ChatMemberOperations { + @extension("x-requirements", #{ + scope: "chat_members:read", + }) + @doc(""" +Список участников чата + +Кто состоит в беседе, канале или треде. Боты приходят наравне с сотрудниками, с `bot: true`. + +Владелец пространства может получить состав участников любого чата пространства. Администраторы и боты получают состав только тех чатов, где состоят сами, и открытых чатов пространства. + +В выдачу попадают только действующие сотрудники: приостановленные не приходят, хотя членство у них сохраняется. Роль участника в чате метод не отдаёт — параметр `role` работает только как фильтр. +""") + @extension("x-paginated", true) + @route("/chats/{id}/members") + @get + listMembers( + @doc("Идентификатор чата") + @extension("example", 334) + @path id: int32, + @doc("Роль в чате") + @extension("example", "all") + @query role?: ChatMemberRoleFilter = ChatMemberRoleFilter.all, + @doc("Количество возвращаемых сущностей за один запрос") + @query + @extension("example", 1) + @minValue(1) + @maxValue(50) limit?: int32 = 50, @doc("Курсор для пагинации (из `meta.paginate.next_page` или `meta.paginate.prev_page`)") @extension("example", "eyJpZCI6MTAsImRpciI6ImFzYyJ9") @@ -5606,6 +6109,8 @@ interface ChatMemberOperations { Тех, кто уже состоит в чате, метод пропускает молча и ошибкой это не считает. А вот неизвестный или неактивный идентификатор останавливает весь запрос: метод отвечает `404` и перечисляет такие значения, никто при этом не добавляется. +Бота добавляет только тот, кому это разрешает настройка бота «Кто может добавлять бота в чаты» — подробнее в разделе [Настройки бота](/guides/bots/settings#kto-mozhet-dobavlyat-bota-v-chaty). Если в `member_ids` есть бот, которого вам добавлять нельзя, метод не добавляет никого и отвечает `403` с кодом `bot_add_denied` и идентификаторами таких ботов в `value`. Если в том же запросе есть и неизвестный идентификатор, ответ — `404` с обеими ошибками. + Добавить сразу целый отдел удобнее тегом — [Добавление тегов](POST /chats/{id}/group_tags): тогда состав чата поддерживается сам. """) @route("/chats/{id}/members") @@ -5624,7 +6129,7 @@ interface ChatMemberOperations { @body body: OAuthError; } | { @statusCode _: 403; - @body body: OAuthError; + @body body: ApiError | OAuthError; } | { @statusCode _: 404; @body body: ApiError; @@ -5921,7 +6426,7 @@ interface ThreadOperations { @doc(""" Информация о треде -Идентификаторы треда: его собственный `id`, `chat_id` для чтения и отправки сообщений и идентификаторы сообщения, под которым он висит. У самостоятельного треда `message_id` и `message_chat_id` приходят как `null`. +Идентификаторы треда и сообщения, под которым он висит. По `id` в тред пишут методом [Новое сообщение](POST /messages) с `entity_type: "thread"`, а по `chat_id` читают его сообщения. У самостоятельного треда `message_id` и `message_chat_id` приходят как `null`. В ответе только идентификаторы: названия и счётчика сообщений у треда нет, о чём он — видно по переписке внутри. Сообщения треда читаются методом [Список сообщений чата](GET /messages), а состав участников — методом [Список участников чата](GET /chats/{id}/members), оба по `chat_id` треда. @@ -6023,6 +6528,8 @@ interface MessageOperations { Личный чат для этого создавать не требуется: он появится сам, если между вами ещё не было переписки. Между двумя сотрудниками может быть только один личный чат. Со своим собственным идентификатором сообщение уйдёт в чат с самим собой — туда же, куда сотрудник пишет заметки себе. +Чтобы ответить на конкретное сообщение с цитатой, передайте его идентификатор в `parent_message_id`. Так отвечают в любом чате, в том числе в треде: ответ отправляют в тот же чат или тред, где лежит исходное сообщение. + Текст в поле `content` разбирается как markdown: жирный, курсив, зачёркнутый, строчный код, блок кода и ссылки. Списки и таблицы не разбираются — `-`, `1.` и `|` остаются как есть, у цитаты пропадает `>`, а строка с решёткой и пробелом становится жирной. Подробности — в разделе [Форматирование текста](/guides/markdown). `@all` упоминает всех участников чата, `@here` — тех, кто сейчас в сети, а `@` с названием тега без пробелов — сотрудников этого тега. В треде упоминание работает ещё и как приглашение: упомянутого сотрудника, которого в треде нет, Пачка туда добавляет, и он получает доступ к треду и родительскому сообщению. Чтобы этого не происходило, передайте `skip_invite_mentions: true`. В беседе и канале упоминание никого не добавляет, и этот параметр там ничего не меняет. @@ -6251,7 +6758,7 @@ interface ChatMessageOperations { Удалённые сообщения в список не попадают. -Сообщения треда отдаются по `chat_id` самого треда, а не по чату, где висит родительское сообщение. Идентификатор треда приходит в поле `thread` родительского сообщения. +Сообщения треда отдаются по `chat_id` самого треда, а не по чату, где висит родительское сообщение. Этот `chat_id` приходит в поле `thread.chat_id` родительского сообщения. """) @extension("x-paginated", true) @get @@ -6562,6 +7069,8 @@ interface SearchOperations { По почте метод ищет лишь тем, кому в пространстве видны персональные данные. По телефону он не ищет вовсе — для этого есть [Список сотрудников](GET /users) с параметром `query`. Удалённые сотрудники не находятся никогда, приостановленные — только когда задан текстовый запрос, и стоят в выдаче ниже остальных. Из ботов находятся лишь публичные. + +Слишком тяжёлый запрос может не уложиться по времени: тогда метод отвечает `504` с кодом `timeout`, и запрос стоит сузить. """) @extension("x-paginated", true) @route("/users") @@ -6607,6 +7116,9 @@ interface SearchOperations { } | { @statusCode _: 400; @body body: ApiError; + } | { + @statusCode _: 504; + @body body: ApiError; }; @extension("x-requirements", #{ @@ -6620,6 +7132,8 @@ interface SearchOperations { Личные переписки по умолчанию не ищутся. Передайте `personal=true`, и поиск пойдёт по имени собеседника, а не по названию чата. Метод ищет по названиям, а не по содержанию. Если нужно найти, где что-то обсуждали или о чём договорились, это [Поиск сообщений](GET /search/messages). + +Слишком тяжёлый запрос может не уложиться по времени: тогда метод отвечает `504` с кодом `timeout`, и запрос стоит сузить. """) @extension("x-paginated", true) @route("/chats") @@ -6668,6 +7182,9 @@ interface SearchOperations { } | { @statusCode _: 400; @body body: ApiError; + } | { + @statusCode _: 504; + @body body: ApiError; }; @extension("x-requirements", #{ @@ -6681,6 +7198,8 @@ interface SearchOperations { Слова запроса ищутся по словоформам и по части слова, опечатки при этом не исправляются. Запрос в кавычках ищется строгой фразой, поиск по части слова в нём не работает. По умолчанию сообщения приходят от новых к старым. `sort=relevance` переключает выдачу на соответствие запросу, где свежие сообщения всё равно ценятся выше. + +Слишком тяжёлый запрос может не уложиться по времени: тогда метод отвечает `504` с кодом `timeout`, и запрос стоит сузить. """) @extension("x-paginated", true) @route("/messages") @@ -6732,6 +7251,9 @@ interface SearchOperations { } | { @statusCode _: 400; @body body: ApiError; + } | { + @statusCode _: 504; + @body body: ApiError; }; } @@ -6802,7 +7324,7 @@ interface TaskOperations { @doc("Фильтр по состоянию. Если параметр не указан, возвращаются напоминания в любом состоянии.") @extension("example", "undone") @query status?: TaskStatus, - @doc("Фильтр по чатам, к которым привязаны напоминания. Доступными считаются чаты, где вы состоите участником, открытые беседы и каналы пространства, а также треды, доступные вам по родительскому чату. Остальные переданные идентификаторы игнорируются без ошибки. Не более 100 идентификаторов.") + @doc("Фильтр по чатам, к которым привязаны напоминания. Доступными считаются чаты, где вы состоите участником, открытые беседы и каналы пространства, а также треды, доступные вам по родительскому чату. Мульти-гостю открытые беседы и каналы доступны, только если он в них участник. Остальные переданные идентификаторы игнорируются без ошибки. Не более 100 идентификаторов.") @extension("example", #[198, 334]) @maxItems(100) @query chat_ids?: int32[], @@ -7289,7 +7811,7 @@ interface BotOperations { Боты, которых вызывающий вправе настраивать: созданные им самим и те, чьи настройки открывают ему доступ к редактированию. -Параметр `query` отбирает ботов по части имени, без опечаток. Токены ботов в списке не приходят — их показывают один раз при создании и при ротации. +Параметр `query` отбирает ботов по части имени, без опечаток. Токены ботов в списке не приходят: значение токена показывают один раз, а сами токены бота отдаёт [Список токенов бота](GET /bots/{id}/tokens). Перечень всех ботов пространства, включая чужих, доступен владельцу на тарифе «Корпорация» — [Список ботов пространства](GET /company/bots). Там чужие боты приходят с одними лишь именем и ником, остальные настройки скрыты. """) @@ -7303,6 +7825,13 @@ interface BotOperations { data: #[ #{ id: 1738816, + name: "Бот задач", + nickname: "tasks_bot", + avatar_url: null, + creator_id: 12, + created_at: utcDateTime.fromISO("2025-05-15T14:30:00.000Z"), + authorized_users_count: 3, + last_used_at: utcDateTime.fromISO("2025-05-20T09:15:00.000Z"), webhook: #{ name: "Бот задач", nickname: "tasks_bot", @@ -7320,6 +7849,28 @@ interface BotOperations { single_chat: false, can_edit: #[BotCanEdit.admin], who_can_add: BotWhoCanAdd.creator, + + kind: BotWebhookKind.simple, + unfurl_domains: #[], + last_request_at: utcDateTime.fromISO("2025-05-20T09:15:00.000Z"), + }, + oauth_client_enabled: true, + oauth_client: #{ + client_id: "aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY", + client_secret_preview: "dGhpc19p...ZWNy", + confidential: true, + redirect_uris: #["https://example.com/oauth/callback"], + scopes: #["messages:read", "messages:create"], + }, + promo: #{ + description: "Собирает сводку по задачам и присылает её в чат", + published: true, + promo_images: #[], + }, + permissions: #{ + update_oauth_client: true, + recreate_token: true, + destroy: true, }, } ], @@ -7364,13 +7915,17 @@ interface BotOperations { @doc(""" Новый бот -Создаёт бота в пространстве и сразу отдаёт его `access_token`. Сохраните токен при создании: тот же самый повторно не показывают, останется перевыпустить его методом [Ротация токена бота](POST /bots/{id}/recreate_token). +Создаёт бота в пространстве. По умолчанию бот получает входящий вебхук в своём формате и сразу отдаёт свой `access_token`. Сохраните токен при создании: тот же самый повторно не показывают, останется перевыпустить его методом [Ротация токена бота](POST /bots/{id}/recreate_token). + +С `empty: true` создаётся пустой бот, как в интерфейсе: только имя и ник, без токена и без входящего вебхука. Токены ему выпускают методом [Новый токен бота](POST /bots/{id}/tokens), а входящий вебхук включают полем `kind` в объекте `webhook`. Созданный бот ещё никуда не пишет. В беседу и канал он пишет только как участник, а добавляют его как сотрудника — методом [Добавление пользователей](POST /chats/{id}/members), передав `id` бота. В канале бот получает роль редактора. Личные сообщения и треды в открытых чатах членства не требуют. Входящий вебхук бота отправляет сообщение сразу во все беседы и каналы, где бот состоит, поэтому набор его чатов и решает, куда оно попадёт. Токен для этого не нужен, достаточно адреса вебхука. Чтобы написать в один конкретный чат, берите метод [Новое сообщение](POST /messages) — вот там токен уже нужен. -Ник обязан заканчиваться на `_bot` и быть свободным в пространстве. Ограничение `single_chat` задаётся только здесь: при редактировании бота оно уже не меняется. +Авторизацию от имени сотрудника можно включить сразу, передав `oauth_client`, а страницу в витрине заполнить в `promo`. У серверного клиента секрет приходит в `client_secret` один раз. Подробнее — в разделе [Настройка авторизации](/guides/oauth/setup). + +Ник обязан заканчиваться на `_bot` и быть свободным в пространстве. """) @route("/bots") @post @@ -7386,6 +7941,11 @@ interface BotOperations { commands: #["/task"], scopes: #["messages:create"], }, + oauth_client: #{ + confidential: true, + redirect_uris: #["https://example.com/oauth/callback"], + scopes: #["messages:read", "messages:create"], + }, }, }, returnType: #{ @@ -7393,6 +7953,13 @@ interface BotOperations { body: #{ data: #{ id: 1738816, + name: "Бот задач", + nickname: "tasks_bot", + avatar_url: null, + creator_id: 12, + created_at: utcDateTime.fromISO("2025-05-15T14:30:00.000Z"), + authorized_users_count: 0, + last_used_at: null, webhook: #{ name: "Бот задач", nickname: "tasks_bot", @@ -7410,7 +7977,30 @@ interface BotOperations { single_chat: false, can_edit: #[BotCanEdit.admin], who_can_add: BotWhoCanAdd.creator, + + kind: BotWebhookKind.simple, + unfurl_domains: #[], + last_request_at: null, + }, + oauth_client_enabled: true, + oauth_client: #{ + client_id: "aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY", + client_secret_preview: "dGhpc19p...ZWNy", + confidential: true, + redirect_uris: #["https://example.com/oauth/callback"], + scopes: #["messages:read", "messages:create"], }, + promo: #{ + description: null, + published: false, + promo_images: #[], + }, + permissions: #{ + update_oauth_client: true, + recreate_token: true, + destroy: true, + }, + client_secret: "dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA", access_token: "bm90X2FfcmVhbF90b2tlbg", }, }, @@ -7439,9 +8029,9 @@ interface BotOperations { @doc(""" Информация о боте -Настройки бота. Токен в ответе не приходит — его показывают один раз при создании бота и при вызове метода [Ротация токена бота](POST /bots/{id}/recreate_token). +Настройки бота. Токен в ответе не приходит — его показывают один раз при создании бота и при вызове метода [Ротация токена бота](POST /bots/{id}/recreate_token). Токены бота отдаёт [Список токенов бота](GET /bots/{id}/tokens). -Метод отдаёт только тех ботов, которых вызывающий вправе настраивать: своих, а также чужих, если настройки бота открывают доступ администратору пространства или владельцу чата, где бот состоит. На остальных метод ответит `403`. +Метод отдаёт только тех ботов, которых вызывающий вправе настраивать: своих, а также чужих, если настройки бота открывают доступ администраторам пространства или руководителям чатов, где бот состоит. На остальных метод ответит `403`. Перечень всех ботов пространства, включая чужих, доступен владельцу на тарифе «Корпорация» — [Список ботов пространства](GET /company/bots). """) @@ -7456,6 +8046,13 @@ interface BotOperations { body: #{ data: #{ id: 1738816, + name: "Бот задач", + nickname: "tasks_bot", + avatar_url: null, + creator_id: 12, + created_at: utcDateTime.fromISO("2025-05-15T14:30:00.000Z"), + authorized_users_count: 3, + last_used_at: utcDateTime.fromISO("2025-05-20T09:15:00.000Z"), webhook: #{ name: "Бот задач", nickname: "tasks_bot", @@ -7473,6 +8070,28 @@ interface BotOperations { single_chat: false, can_edit: #[BotCanEdit.admin], who_can_add: BotWhoCanAdd.creator, + + kind: BotWebhookKind.simple, + unfurl_domains: #[], + last_request_at: utcDateTime.fromISO("2025-05-20T09:15:00.000Z"), + }, + oauth_client_enabled: true, + oauth_client: #{ + client_id: "aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY", + client_secret_preview: "dGhpc19p...ZWNy", + confidential: true, + redirect_uris: #["https://example.com/oauth/callback"], + scopes: #["messages:read", "messages:create"], + }, + promo: #{ + description: "Собирает сводку по задачам и присылает её в чат", + published: true, + promo_images: #[], + }, + permissions: #{ + update_oauth_client: true, + recreate_token: true, + destroy: true, }, }, }, @@ -7507,11 +8126,13 @@ interface BotOperations { Меняет настройки бота: перезаписываются только переданные поля. -Поле `single_chat` принимается только при создании бота. В этом методе оно молча игнорируется: ответ приходит успешный, а режим бота не меняется. +Ник обязан заканчиваться на `_bot` и быть свободным в пространстве, иначе метод отвечает ошибкой валидации. Команды и скоупы заменяются переданным списком целиком. Скоупы относятся к основному токену бота — тому, что без имени, а если такого нет, к самому старому — и применяются к нему сразу, перевыпускать его не нужно. Права отдельного токена меняет [Изменение токена бота](PUT /bots/{id}/tokens/{token_id}). + +Объект `oauth_client` включает авторизацию от имени сотрудника или меняет её настройки, а `null` её выключает: авторизации, выданные сотрудниками, отзываются, страница в витрине удаляется, собственные токены бота продолжают работать. Когда клиент становится серверным, его секрет приходит в `client_secret` один раз. Страницу в витрине задаёт `promo`, пока авторизация включена. -Ник обязан заканчиваться на `_bot` и быть свободным в пространстве, иначе метод отвечает ошибкой валидации. Команды и скоупы заменяются переданным списком целиком, а новый набор скоупов сразу применяется к действующему токену бота — перевыпускать его не нужно. +Включать событие `message_link_shared`, а у бота с ним менять домены, адрес вебхука и историю событий может только администратор или владелец пространства. -Вы не можете редактировать бота, настройки которого вам недоступны (поле «Кто может редактировать настройки бота» находится во вкладке «Основное» в настройках бота). +Имя бота, авторизацию от имени сотрудника и страницу в витрине меняют только его создатель и администратор пространства, если настройки бота открывают администраторам доступ к редактированию. Остальные настройки нельзя менять у бота, настройки которого вам недоступны (поле «Кто может редактировать настройки бота» находится во вкладке «Основное» в настройках бота). """) @route("/bots/{id}") @put @@ -7528,7 +8149,7 @@ interface BotOperations { @body body: OAuthError; } | { @statusCode _: 403; - @body body: OAuthError; + @body body: ApiError | OAuthError; } | { @statusCode _: 404; @body body: ApiError; @@ -7549,7 +8170,7 @@ interface BotOperations { @doc(""" Удаление бота -Убирает бота из пространства насовсем. Прежний `access_token` бота сразу инвалидируется, бот исключается из всех чатов, его исходящий вебхук удаляется. +Убирает бота из пространства насовсем. Все токены бота сразу перестают работать, как и авторизации, выданные ему сотрудниками. Бот исключается из всех чатов, его вебхуки удаляются, страница в витрине тоже. Удаление доступно создателю бота, а также администратору пространства, если настройки бота открывают администраторам доступ к редактированию. Владельцы и администраторы чатов удалять бота не могут, даже если им разрешено его редактировать. """) @@ -7598,6 +8219,13 @@ interface BotOperations { body: #{ data: #{ id: 1738816, + oauth_client: #{ + client_id: "aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY", + client_secret_preview: "dGhpc19p...ZWNy", + confidential: true, + redirect_uris: #["https://example.com/oauth/callback"], + scopes: #["messages:read", "messages:create"], + }, webhook: #{ name: "Бот задач", nickname: "tasks_bot", @@ -7622,7 +8250,7 @@ interface BotOperations { }) selfUpdateBotWebhook(@body request: BotWebhookSelfUpdateRequest): { @statusCode _: 200; - @body body: DataResponse; + @body body: DataResponse; } | { @statusCode _: 400; @body body: ApiError; @@ -7648,8 +8276,9 @@ interface BotOperations { Метод генерирует боту новый `access_token` и сразу инвалидирует прежний. Используйте его при компрометации токена или плановой ротации секрета в `CI`. -Новый токен возвращается в ответе только один раз — сохраните его сразу. Права у него те же: скоупы переносятся с прежнего токена. +Перевыпускается основной токен бота — тот, что без имени, а если такого нет, самый старый. Отдельный токен перевыпускает [Перевыпуск токена бота](POST /bots/{id}/tokens/{token_id}/reissue). +Новый токен возвращается в ответе только один раз — сохраните его сразу. Права у него те же: скоупы переносятся с прежнего токена. Ротация доступна создателю бота, а также администратору пространства, если настройки бота открывают администраторам доступ к редактированию. Владелец чата, где состоит бот, ротировать токен не может, даже когда остальные настройки бота ему открыты. """) @@ -7664,6 +8293,13 @@ interface BotOperations { body: #{ data: #{ id: 1738816, + name: "Бот задач", + nickname: "tasks_bot", + avatar_url: null, + creator_id: 12, + created_at: utcDateTime.fromISO("2025-05-15T14:30:00.000Z"), + authorized_users_count: 3, + last_used_at: utcDateTime.fromISO("2025-05-20T09:15:00.000Z"), webhook: #{ name: "Бот задач", nickname: "tasks_bot", @@ -7681,6 +8317,28 @@ interface BotOperations { single_chat: false, can_edit: #[BotCanEdit.admin], who_can_add: BotWhoCanAdd.creator, + + kind: BotWebhookKind.simple, + unfurl_domains: #[], + last_request_at: utcDateTime.fromISO("2025-05-20T09:15:00.000Z"), + }, + oauth_client_enabled: true, + oauth_client: #{ + client_id: "aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY", + client_secret_preview: "dGhpc19p...ZWNy", + confidential: true, + redirect_uris: #["https://example.com/oauth/callback"], + scopes: #["messages:read", "messages:create"], + }, + promo: #{ + description: "Собирает сводку по задачам и присылает её в чат", + published: true, + promo_images: #[], + }, + permissions: #{ + update_oauth_client: true, + recreate_token: true, + destroy: true, }, access_token: "bm90X2FfcmVhbF90b2tlbg", }, @@ -7716,7 +8374,7 @@ interface BotOperations { Метод позволяет боту сгенерировать себе новый `access_token` своим же токеном — без участия администратора и без знания собственного `id`. -Ротируется тот самый токен, которым сделан запрос, и он инвалидируется сразу. +Перевыпускается основной токен бота — тот, что без имени, а если такого нет, самый старый, и он инвалидируется сразу. Если бот ходит отдельным токеном, этот токен остаётся прежним. Новый токен возвращается в ответе один раз — обязательно сохраните его, иначе бот потеряет доступ к API. Скоупы переносятся с прежнего токена. """) @@ -7728,6 +8386,13 @@ interface BotOperations { body: #{ data: #{ id: 1738816, + oauth_client: #{ + client_id: "aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY", + client_secret_preview: "dGhpc19p...ZWNy", + confidential: true, + redirect_uris: #["https://example.com/oauth/callback"], + scopes: #["messages:read", "messages:create"], + }, webhook: #{ name: "Бот задач", nickname: "tasks_bot", @@ -7753,13 +8418,485 @@ interface BotOperations { }) selfRecreateBotToken(): { @statusCode _: 200; - @body body: DataResponse; + @body body: DataResponse; + } | { + @statusCode _: 401; + @body body: OAuthError; + } | { + @statusCode _: 403; + @body body: OAuthError; + } | { + @statusCode _: 404; + @body body: ApiError; + } | { + @statusCode _: 402; + @body body: ApiError; + }; + + @extension("x-requirements", #{ + scope: "bots:read", + }) + @doc(""" +Список токенов бота + +Действующие токены бота: основной, выпущенный вместе с ботом, и отдельные — со своим именем и правами. Значение токена здесь замаскировано: полностью его показывают один раз, при выпуске и перевыпуске. + +Работать с токенами бота могут только его создатель и администратор пространства, если настройки бота открывают администраторам доступ к редактированию. Владельцу чата с ботом метод отвечает `403`, даже когда остальные настройки бота ему открыты. +""") + @extension("x-paginated", true) + @route("/bots/{id}/tokens") + @get + @opExample(#{ + parameters: #{ + id: 1738816, + }, + returnType: #{ + _: 200, + body: #{ + data: #[ + #{ + id: 4827, + token: "cH5kR9mN...x7Qp", + name: "Сервер уведомлений", + user_id: 1738816, + scopes: #["messages:create", "chats:read"], + created_at: utcDateTime.fromISO("2025-01-15T10:30:00.000Z"), + revoked_at: null, + expires_in: null, + last_used_at: utcDateTime.fromISO("2025-02-24T14:20:00.000Z"), + authorized_at: null, + } + ], + meta: #{ + paginate: #{ + next_page: "eyJpZCI6NDgyN30", + }, + }, + }, + }, + }) + listBotTokens( + @doc("Идентификатор бота") + @extension("example", 1738816) + @path id: int32, + @doc("Количество возвращаемых сущностей за один запрос") + @query + @extension("example", 1) + @minValue(1) + @maxValue(50) + limit?: int32 = 50, + @doc("Курсор для пагинации (из `meta.paginate.next_page`)") + @extension("example", "eyJpZCI6NDgyN30") + @query cursor?: string + ): { + @statusCode _: 200; + @body body: PaginatedDataResponse; + } | { + @statusCode _: 400; + @body body: ApiError; + } | { + @statusCode _: 401; + @body body: OAuthError; + } | { + @statusCode _: 403; + @body body: ApiError | OAuthError; + } | { + @statusCode _: 404; + @body body: ApiError; + } | { + @statusCode _: 402; + @body body: ApiError; + }; + + @extension("x-requirements", #{ + scope: "bots:write", + }) + @doc(""" +Новый токен бота + +Выпускает боту ещё один токен со своим именем и правами. Токенов у бота может быть несколько: например, отдельный на каждый сервис, чтобы отзывать их по одному. + +Значение токена приходит в ответе один раз — сохраните его сразу. Токен бессрочный и работает, пока его не удалят. + +Права выбирают из тех, что можно выдать боту: их перечисляет [Каталог прав бота](GET /bots/{id}/scopes). На право не из каталога метод отвечает `400`. Без `scopes` токен выпускается без прав. + +Работать с токенами бота могут только его создатель и администратор пространства, если настройки бота открывают администраторам доступ к редактированию. Владельцу чата с ботом метод отвечает `403`, даже когда остальные настройки бота ему открыты. +""") + @route("/bots/{id}/tokens") + @post + @opExample(#{ + parameters: #{ + id: 1738816, + request: #{ + name: "Сервер уведомлений", + scopes: #["messages:create", "chats:read"], + }, + }, + returnType: #{ + _: 201, + body: #{ + data: #{ + id: 4827, + token: "bm90X2FfcmVhbF90b2tlbg", + name: "Сервер уведомлений", + user_id: 1738816, + scopes: #["messages:create", "chats:read"], + created_at: utcDateTime.fromISO("2025-01-15T10:30:00.000Z"), + revoked_at: null, + expires_in: null, + last_used_at: null, + authorized_at: null, + }, + }, + }, + }) + createBotToken( + @doc("Идентификатор бота") + @extension("example", 1738816) + @path id: int32, + @body request: BotTokenCreateRequest + ): { + @statusCode _: 201; + @body body: DataResponse; + } | { + @statusCode _: 400; + @body body: ApiError; + } | { + @statusCode _: 401; + @body body: OAuthError; + } | { + @statusCode _: 403; + @body body: ApiError | OAuthError; + } | { + @statusCode _: 404; + @body body: ApiError; + } | { + @statusCode _: 402; + @body body: ApiError; + }; + + @extension("x-requirements", #{ + scope: "bots:write", + }) + @doc(""" +Изменение токена бота + +Меняет имя или права токена. Новые права действуют сразу: перевыпускать токен не нужно, его значение остаётся прежним. Права заменяются переданным списком целиком. + +Работать с токенами бота могут только его создатель и администратор пространства, если настройки бота открывают администраторам доступ к редактированию. Владельцу чата с ботом метод отвечает `403`, даже когда остальные настройки бота ему открыты. +""") + @route("/bots/{id}/tokens/{token_id}") + @put + @opExample(#{ + parameters: #{ + id: 1738816, + token_id: 4827, + request: #{ + name: "Сервер уведомлений", + scopes: #["messages:create", "chats:read"], + }, + }, + returnType: #{ + _: 200, + body: #{ + data: #{ + id: 4827, + token: "cH5kR9mN...x7Qp", + name: "Сервер уведомлений", + user_id: 1738816, + scopes: #["messages:create", "chats:read"], + created_at: utcDateTime.fromISO("2025-01-15T10:30:00.000Z"), + revoked_at: null, + expires_in: null, + last_used_at: utcDateTime.fromISO("2025-02-24T14:20:00.000Z"), + authorized_at: null, + }, + }, + }, + }) + updateBotToken( + @doc("Идентификатор бота") + @extension("example", 1738816) + @path id: int32, + @doc("Идентификатор токена") + @extension("example", 4827) + @path token_id: int64, + @body request: BotTokenUpdateRequest + ): { + @statusCode _: 200; + @body body: DataResponse; + } | { + @statusCode _: 400; + @body body: ApiError; } | { @statusCode _: 401; @body body: OAuthError; } | { @statusCode _: 403; + @body body: ApiError | OAuthError; + } | { + @statusCode _: 404; + @body body: ApiError; + } | { + @statusCode _: 402; + @body body: ApiError; + }; + + @extension("x-requirements", #{ + scope: "bots:write", + }) + @doc(""" +Перевыпуск токена бота + +Заменяет значение токена новым: прежнее сразу перестаёт работать, имя и права остаются. Новое значение приходит в ответе один раз — сохраните его сразу. + +Метод нужен, когда токен утёк или его меняют по плану. Основной токен бота перевыпускает и [Ротация токена бота](POST /bots/{id}/recreate_token). + +Работать с токенами бота могут только его создатель и администратор пространства, если настройки бота открывают администраторам доступ к редактированию. Владельцу чата с ботом метод отвечает `403`, даже когда остальные настройки бота ему открыты. +""") + @route("/bots/{id}/tokens/{token_id}/reissue") + @post + @opExample(#{ + parameters: #{ + id: 1738816, + token_id: 4827, + }, + returnType: #{ + _: 200, + body: #{ + data: #{ + id: 4827, + token: "bm90X2FfcmVhbF90b2tlbg", + name: "Сервер уведомлений", + user_id: 1738816, + scopes: #["messages:create", "chats:read"], + created_at: utcDateTime.fromISO("2025-01-15T10:30:00.000Z"), + revoked_at: null, + expires_in: null, + last_used_at: utcDateTime.fromISO("2025-02-24T14:20:00.000Z"), + authorized_at: null, + }, + }, + }, + }) + reissueBotToken( + @doc("Идентификатор бота") + @extension("example", 1738816) + @path id: int32, + @doc("Идентификатор токена") + @extension("example", 4827) + @path token_id: int64 + ): { + @statusCode _: 200; + @body body: DataResponse; + } | { + @statusCode _: 401; + @body body: OAuthError; + } | { + @statusCode _: 403; + @body body: ApiError | OAuthError; + } | { + @statusCode _: 404; + @body body: ApiError; + } | { + @statusCode _: 402; + @body body: ApiError; + }; + + @extension("x-requirements", #{ + scope: "bots:write", + }) + @doc(""" +Удаление токена бота + +Удаляет токен: запросы с ним сразу перестают проходить. Остальные токены бота продолжают работать. + +Работать с токенами бота могут только его создатель и администратор пространства, если настройки бота открывают администраторам доступ к редактированию. Владельцу чата с ботом метод отвечает `403`, даже когда остальные настройки бота ему открыты. +""") + @route("/bots/{id}/tokens/{token_id}") + @delete + deleteBotToken( + @doc("Идентификатор бота") + @extension("example", 1738816) + @path id: int32, + @doc("Идентификатор токена") + @extension("example", 4827) + @path token_id: int64 + ): { + @statusCode _: 204; + } | { + @statusCode _: 401; @body body: OAuthError; + } | { + @statusCode _: 403; + @body body: ApiError | OAuthError; + } | { + @statusCode _: 404; + @body body: ApiError; + } | { + @statusCode _: 402; + @body body: ApiError; + }; + + @extension("x-requirements", #{ + scope: "bots:read", + }) + @doc(""" +Каталог прав бота + +Права, которые можно выдать этому боту: его токенам и авторизации от имени сотрудника. У каждого права есть описание, категория и готовые наборы, в которые оно входит, как при выборе прав в интерфейсе. + +Каталог доступен тем же, кто видит токены бота: создателю бота, а также администратору пространства, если настройки бота открывают администраторам доступ к редактированию. +""") + @route("/bots/{id}/scopes") + @get + @opExample(#{ + parameters: #{ + id: 1738816, + }, + returnType: #{ + _: 200, + body: #{ + scopes: #[ + #{ + id: "messages:create", + title: "Отправка сообщений", + group: "messages", + preset: #["admin"], + } + ], + groups: #[ + #{ + id: "messages", + title: "Сообщения", + description: "Работа с сообщениями", + } + ], + presets: #[ + #{ + id: "read-only", + title: "Только чтение", + }, + #{ + id: "admin", + title: "Администратор", + } + ], + }, + }, + }) + getBotScopes( + @doc("Идентификатор бота") + @extension("example", 1738816) + @path id: int32 + ): { + @statusCode _: 200; + @body body: BotScopeCatalog; + } | { + @statusCode _: 401; + @body body: OAuthError; + } | { + @statusCode _: 403; + @body body: ApiError | OAuthError; + } | { + @statusCode _: 404; + @body body: ApiError; + } | { + @statusCode _: 402; + @body body: ApiError; + }; + + @extension("x-requirements", #{ + scope: "bots:write", + }) + @doc(""" +Ротация секрета клиента + +Выпускает новый `client_secret` для авторизации от имени сотрудника. Прежний секрет перестаёт работать сразу, поэтому сначала подготовьте бота к замене. Уже выданные авторизации и полученные токены продолжают работать. + +Новый секрет приходит в `client_secret` один раз. Метод работает только у бота с включённой авторизацией и серверным клиентом (`confidential: true`), иначе отвечает `400`. + +Ротация доступна создателю бота, а также администратору пространства, если настройки бота открывают администраторам доступ к редактированию. +""") + @route("/bots/{id}/rotate_client_secret") + @post + @opExample(#{ + parameters: #{ + id: 1738816, + }, + returnType: #{ + _: 200, + body: #{ + data: #{ + id: 1738816, + name: "Бот задач", + nickname: "tasks_bot", + avatar_url: null, + creator_id: 12, + created_at: utcDateTime.fromISO("2025-05-15T14:30:00.000Z"), + authorized_users_count: 3, + last_used_at: utcDateTime.fromISO("2025-05-20T09:15:00.000Z"), + webhook: #{ + name: "Бот задач", + nickname: "tasks_bot", + outgoing_url: "https://www.website.com/tasks/new", + events: #[BotEventName.message_new], + trigger_on: BotTriggerOn.commands, + commands: #["/task"], + scopes: #["messages:create"], + template: "Заказ от {{ client }} на сумму {{ amount }} ₽", + template_engine: BotTemplateEngine.liquid, + challenge_key: "challenge", + link_preview_enabled: true, + ignore_self_messages: false, + events_history_enabled: false, + single_chat: false, + can_edit: #[BotCanEdit.admin], + who_can_add: BotWhoCanAdd.creator, + + kind: BotWebhookKind.simple, + unfurl_domains: #[], + last_request_at: utcDateTime.fromISO("2025-05-20T09:15:00.000Z"), + }, + oauth_client_enabled: true, + oauth_client: #{ + client_id: "aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY", + client_secret_preview: "dGhpc19p...ZWNy", + confidential: true, + redirect_uris: #["https://example.com/oauth/callback"], + scopes: #["messages:read", "messages:create"], + }, + promo: #{ + description: "Собирает сводку по задачам и присылает её в чат", + published: true, + promo_images: #[], + }, + permissions: #{ + update_oauth_client: true, + recreate_token: true, + destroy: true, + }, + client_secret: "dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldA", + }, + }, + }, + }) + rotateBotClientSecret( + @doc("Идентификатор бота") + @extension("example", 1738816) + @path id: int32 + ): { + @statusCode _: 200; + @body body: DataResponse; + } | { + @statusCode _: 400; + @body body: ApiError; + } | { + @statusCode _: 401; + @body body: OAuthError; + } | { + @statusCode _: 403; + @body body: ApiError | OAuthError; } | { @statusCode _: 404; @body body: ApiError; @@ -7776,7 +8913,7 @@ interface BotOperations { Журнал событий бота: то же самое, что уходит в исходящий вебхук, но забирается запросом. Метод нужен, когда принимать вебхуки на свой адрес нельзя — обработчик недоступен из интернета, поднимается не всегда или пишется прямо сейчас. -Журнал ведётся, только когда в настройках бота включён пункт «Сохранять историю событий» во вкладке «Исходящий webhook». Адрес вебхука при этом можно не указывать вовсе, а если он указан, событие и уедет на него, и ляжет в журнал. +Журнал ведётся, только когда в настройках бота включён пункт «Сохранять историю событий» на вкладке «Исходящий вебхук». Адрес вебхука при этом можно не указывать вовсе, а если он указан, событие и уедет на него, и ляжет в журнал. Метод работает только с токеном бота: у личного токена своего журнала нет. События отдаются от новых к старым, идентификатор события — строка, а не число. @@ -7874,6 +9011,13 @@ interface CompanyBotOperations { data: #[ #{ id: 1738816, + oauth_client: #{ + client_id: "aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xY", + client_secret_preview: "dGhpc19p...ZWNy", + confidential: true, + redirect_uris: #["https://example.com/oauth/callback"], + scopes: #["messages:read", "messages:create"], + }, webhook: #{ name: "Бот задач", nickname: "tasks_bot", @@ -7895,6 +9039,7 @@ interface CompanyBotOperations { }, #{ id: 1738817, + oauth_client: null, webhook: #{ name: "Бот релизов", nickname: "release_bot", diff --git a/packages/spec/workflows.ts b/packages/spec/workflows.ts index d34581fa8..61c5511be 100644 --- a/packages/spec/workflows.ts +++ b/packages/spec/workflows.ts @@ -884,9 +884,9 @@ export const WORKFLOWS: Record = { }, ], notes: - 'Создавать ботов можно только пользовательским токеном — токеном бота нельзя. `access_token` отдаётся один раз при создании, дальше его можно посмотреть и скопировать в интерфейсе.', + 'Создавать ботов можно только пользовательским токеном — токеном бота нельзя. `access_token` отдаётся один раз при создании, увидеть его снова нельзя, только перевыпустить. С флагом `--empty` бот создаётся без токена и входящего вебхука, как в интерфейсе, а токены ему выпускает `pachca bots create-token`.', notesEn: - 'Bots can only be created with a user token, not a bot token. The `access_token` is returned once at creation; afterwards it can be viewed and copied in the interface.', + 'Bots can only be created with a user token, not a bot token. The `access_token` is returned once at creation; it cannot be viewed again, only reissued. With `--empty` the bot is created without a token and an incoming webhook, as in the interface, and tokens are then issued with `pachca bots create-token`.', }, { title: 'Настроить бота с исходящим вебхуком', @@ -966,22 +966,31 @@ export const WORKFLOWS: Record = { steps: [ { description: - 'Пользовательским токеном (администратор, владелец компании или создатель бота) — перевыпусти токен по `id` бота. Прежний токен инвалидируется сразу', + 'Пользовательским токеном (создатель бота или администратор, если бот открыт администраторам) — перевыпусти основной токен по `id` бота: тот, что без имени, а если такого нет, самый старый. Прежнее значение инвалидируется сразу', descriptionEn: - 'With a user token (admin, company owner or bot creator) — rotate the token by bot `id`. The previous token is invalidated immediately', + 'With a user token (the bot creator, or an admin if the bot is open to admins) — rotate the main token by bot `id`: the one without a name, or the oldest one if there is none. The previous value is invalidated immediately', command: 'pachca bots recreate-token ', apiMethod: 'POST', apiPath: '/bots/{id}/recreate_token', }, { description: - 'Или: бот перевыпускает собственный токен своим же токеном (скоуп `bot_self:write`). Токен, которым выполнен запрос, инвалидируется сразу — обязательно сохрани новый `access_token` из ответа, иначе бот потеряет доступ к API', + 'Или: бот перевыпускает свой основной токен сам (скоуп `bot_self:write`). Если запрос сделан основным токеном, он инвалидируется сразу — обязательно сохрани новый `access_token` из ответа, иначе бот потеряет доступ к API', descriptionEn: - 'Or: the bot rotates its own token with its own token (scope `bot_self:write`). The token used for the request is invalidated immediately — be sure to save the new `access_token` from the response, otherwise the bot loses API access', + 'Or: the bot rotates its own main token itself (scope `bot_self:write`). If the request is made with the main token, it is invalidated immediately — be sure to save the new `access_token` from the response, otherwise the bot loses API access', command: 'pachca bots recreate-token-self', apiMethod: 'POST', apiPath: '/bot/recreate_token', }, + { + description: + 'Отдельный токен бота перевыпускай по его `id` из `pachca bots list-tokens`: значение меняется, имя и права остаются', + descriptionEn: + 'Reissue an additional bot token by its `id` from `pachca bots list-tokens`: the value changes, the name and scopes stay', + command: 'pachca bots reissue-token ', + apiMethod: 'POST', + apiPath: '/bots/{id}/tokens/{token_id}/reissue', + }, { description: 'Сохрани новый `access_token` из ответа — он возвращается единственный раз. Обнови секрет в CI или хранилище секретов', @@ -990,9 +999,83 @@ export const WORKFLOWS: Record = { }, ], notes: - 'Новый токен возвращается один раз. Self-путь (`POST /bot/recreate_token`) инвалидирует именно тот токен, которым выполнен запрос, — захвати новый токен из ответа в той же операции.', + 'Новое значение возвращается один раз. Self-путь (`POST /bot/recreate_token`) перевыпускает основной токен бота — если бот ходит им, захвати новый токен из ответа в той же операции.', + notesEn: + 'The new value is returned once. The self path (`POST /bot/recreate_token`) rotates the bot main token — if the bot works with it, capture the new token from the response in the same operation.', + }, + { + title: 'Выпустить боту отдельный токен', + titleEn: 'Issue an additional bot token', + related: ['Ротация токена бота', 'Создать бота через API и получить токен'], + relatedEn: ['Rotate a bot token', 'Create a bot via API and get its token'], + steps: [ + { + description: + 'Пользовательским токеном (создатель бота или администратор, если бот открыт администраторам) получи каталог прав, которые можно выдать этому боту', + descriptionEn: + 'With a user token (the bot creator, or an admin if the bot is open to admins) get the catalog of scopes that can be granted to this bot', + command: 'pachca bots list-scopes ', + apiMethod: 'GET', + apiPath: '/bots/{id}/scopes', + }, + { + description: + 'Выпусти токен с именем и правами из каталога. Без `--scopes` токен выпускается без прав, право не из каталога отклоняется с `400`', + descriptionEn: + 'Issue a token with a name and scopes from the catalog. Without `--scopes` the token has no scopes, and a scope outside the catalog is rejected with `400`', + command: + 'pachca bots create-token --name="Сервер уведомлений" --scopes=\'["messages:create"]\'', + apiMethod: 'POST', + apiPath: '/bots/{id}/tokens', + }, + { + description: + 'Сохрани `token` из ответа — полное значение возвращается единственный раз. Дальше в списке `pachca bots list-tokens` он приходит замаскированным', + descriptionEn: + 'Save `token` from the response — the full value is returned only once. Afterwards `pachca bots list-tokens` returns it masked', + }, + ], + notes: + 'Отдельный токен удобен на каждый сервис, который работает от имени бота: его отзывают командой `pachca bots delete-token`, не трогая остальные. Права меняет `pachca bots update-token` — они действуют сразу, перевыпускать токен не нужно.', + notesEn: + 'A separate token is handy for each service that works on behalf of the bot: it is revoked with `pachca bots delete-token` without touching the others. Scopes are changed with `pachca bots update-token` — they take effect immediately, no reissue needed.', + }, + { + title: 'Включить боту авторизацию от имени сотрудника', + titleEn: 'Enable authorization on behalf of an employee for a bot', + related: ['Создать бота через API и получить токен', 'Выпустить боту отдельный токен'], + relatedEn: ['Create a bot via API and get its token', 'Issue an additional bot token'], + steps: [ + { + description: + 'Пользовательским токеном (создатель бота или администратор, если бот открыт администраторам) включи авторизацию: где хранится секрет, адреса возврата и права, которые бот попросит у сотрудника. Права бери из `pachca bots list-scopes`', + descriptionEn: + 'With a user token (the bot creator, or an admin if the bot is open to admins) enable authorization: where the secret is stored, redirect URIs and the scopes the bot will request from an employee. Take the scopes from `pachca bots list-scopes`', + command: + 'pachca bots update --oauth-client=\'{"confidential":true,"redirect_uris":["https://example.com/oauth/callback"],"scopes":["messages:read","messages:create"]}\'', + apiMethod: 'PUT', + apiPath: '/bots/{id}', + }, + { + description: + 'Сохрани `client_secret` из ответа серверного клиента — он возвращается единственный раз. `client_id` приходит в `oauth_client` и не секретный', + descriptionEn: + 'Save `client_secret` from the server-side client response — it is returned only once. `client_id` comes in `oauth_client` and is not secret', + }, + { + description: + 'Чтобы бот появился в витрине, добавь описание и опубликуй страницу', + descriptionEn: 'To list the bot in the catalog, add a description and publish the page', + command: + 'pachca bots update --promo=\'{"description":"Собирает сводку по задачам","published":true}\'', + apiMethod: 'PUT', + apiPath: '/bots/{id}', + }, + ], + notes: + 'Включена ли авторизация, показывает `oauth_client_enabled`: `oauth_client` может прийти и у бота с выключенной авторизацией. `--oauth-client=null` выключает её и отзывает выданные сотрудниками авторизации, новый секрет выпускает `pachca bots rotate-client-secret`.', notesEn: - 'The new token is returned once. The self path (`POST /bot/recreate_token`) invalidates the very token used for the request — capture the new token from the response in the same operation.', + 'Whether authorization is enabled is shown by `oauth_client_enabled`: `oauth_client` can come even for a bot with authorization disabled. `--oauth-client=null` disables it and revokes the authorizations granted by employees, and `pachca bots rotate-client-secret` issues a new secret.', }, { title: 'Найти и удалить бота', @@ -1011,9 +1094,9 @@ export const WORKFLOWS: Record = { }, { description: - 'Возьми `id` нужного бота из списка и удали его (скоуп `bots:write`). Доступно администратору, владельцу компании или создателю бота — владельцы чатов удалять бота не могут. Прежний токен инвалидируется сразу, бот исключается из всех чатов, его исходящий вебхук удаляется', + 'Возьми `id` нужного бота из списка и удали его (скоуп `bots:write`). Доступно создателю бота и администратору, если бот открыт администраторам, — владельцы чатов удалять бота не могут. Все токены бота инвалидируются сразу, бот исключается из всех чатов, его вебхуки удаляются', descriptionEn: - 'Take the target bot `id` from the list and delete it (scope `bots:write`). Available to an admin, the company owner or the bot creator — chat owners cannot delete a bot. The previous token is invalidated immediately, the bot is removed from all chats, and its outgoing webhook is deleted', + 'Take the target bot `id` from the list and delete it (scope `bots:write`). Available to the bot creator, and to an admin if the bot is open to admins — chat owners cannot delete a bot. All bot tokens are invalidated immediately, the bot is removed from all chats, and its webhooks are deleted', command: 'pachca bots delete ', apiMethod: 'DELETE', apiPath: '/bots/{id}', @@ -1075,8 +1158,10 @@ export const WORKFLOWS: Record = { inline: false, steps: [ { - description: 'Создай специального Unfurl-бота и укажи отслеживаемые домены', - descriptionEn: 'Create a special Unfurl bot and specify tracked domains', + description: + 'В карточке бота на вкладке «Исходящий вебхук» включи событие «Отправка ссылок в сообщении (unfurl)» и укажи до 5 доменов — это может только администратор или владелец пространства', + descriptionEn: + 'On the Outgoing webhook tab of the bot, enable the "Links shared in messages (unfurl)" event and list up to 5 domains — only a workspace admin or owner can do this', }, { description: @@ -1097,9 +1182,9 @@ export const WORKFLOWS: Record = { }, ], notes: - 'Эндпоинт привязан к конкретному сообщению. Необходим специальный Unfurl-бот с указанными доменами.', + 'Эндпоинт привязан к конкретному сообщению. Боту нужно событие разворачивания ссылок с доменами: ссылки приходят из всех чатов пространства, добавлять бота в чаты не нужно.', notesEn: - 'Endpoint is bound to a specific message. Requires a special Unfurl bot with specified domains.', + 'Endpoint is bound to a specific message. The bot needs the link unfurling event with its domains: links arrive from every chat of the workspace, no need to add the bot to chats.', }, { title: 'Обработать нажатие кнопки (callback)', @@ -1206,8 +1291,12 @@ export const WORKFLOWS: Record = { steps: [ { description: - 'В настройках бота включи «Сохранять историю событий». Webhook URL указывать не обязательно.', - descriptionEn: 'In bot settings enable "Save event history". Webhook URL is optional.', + 'Включи историю событий флагом `--events-history-enabled` (Webhook URL для этого не нужен) или настройкой «Сохранять историю событий» на вкладке «Исходящий вебхук» — в интерфейсе она появляется после включения вебхука', + descriptionEn: + 'Enable the event history with `--events-history-enabled` (no Webhook URL needed) or with "Save event history" on the Outgoing webhook tab — in the UI it appears once the webhook is enabled', + command: 'pachca bots update --events-history-enabled', + apiMethod: 'PUT', + apiPath: '/bots/{id}', }, { description: 'Получи накопленные события', diff --git a/sdk/csharp/generated/Client.cs b/sdk/csharp/generated/Client.cs index dd6a80d56..c74eda8a1 100644 --- a/sdk/csharp/generated/Client.cs +++ b/sdk/csharp/generated/Client.cs @@ -155,6 +155,28 @@ public virtual async System.Threading.Tasks.Task GetBotAsync(int id throw new NotImplementedException("Bots.getBot is not implemented"); } + public virtual async System.Threading.Tasks.Task GetBotScopesAsync(int id, CancellationToken cancellationToken = default) + { + throw new NotImplementedException("Bots.getBotScopes is not implemented"); + } + + public virtual async System.Threading.Tasks.Task ListBotTokensAsync( + int id, + int? limit = null, + string? cursor = null, + CancellationToken cancellationToken = default) + { + throw new NotImplementedException("Bots.listBotTokens is not implemented"); + } + + public virtual async System.Threading.Tasks.Task> ListBotTokensAllAsync( + int id, + int? limit = null, + CancellationToken cancellationToken = default) + { + throw new NotImplementedException("Bots.listBotTokensAll is not implemented"); + } + public virtual async System.Threading.Tasks.Task ListCompanyBotsAsync( string? query = null, int? limit = null, @@ -255,7 +277,7 @@ public virtual async IAsyncEnumerable PollWebhookPayloadsAsync SelfRecreateBotTokenAsync(CancellationToken cancellationToken = default) + public virtual async System.Threading.Tasks.Task SelfRecreateBotTokenAsync(CancellationToken cancellationToken = default) { throw new NotImplementedException("Bots.selfRecreateBotToken is not implemented"); } @@ -270,7 +292,28 @@ public virtual async System.Threading.Tasks.Task RecreateBotT throw new NotImplementedException("Bots.recreateBotToken is not implemented"); } - public virtual async System.Threading.Tasks.Task SelfUpdateBotWebhookAsync(BotWebhookSelfUpdateRequest request, CancellationToken cancellationToken = default) + public virtual async System.Threading.Tasks.Task RotateBotClientSecretAsync(int id, CancellationToken cancellationToken = default) + { + throw new NotImplementedException("Bots.rotateBotClientSecret is not implemented"); + } + + public virtual async System.Threading.Tasks.Task CreateBotTokenAsync( + int id, + BotTokenCreateRequest request, + CancellationToken cancellationToken = default) + { + throw new NotImplementedException("Bots.createBotToken is not implemented"); + } + + public virtual async System.Threading.Tasks.Task ReissueBotTokenAsync( + int id, + long tokenId, + CancellationToken cancellationToken = default) + { + throw new NotImplementedException("Bots.reissueBotToken is not implemented"); + } + + public virtual async System.Threading.Tasks.Task SelfUpdateBotWebhookAsync(BotWebhookSelfUpdateRequest request, CancellationToken cancellationToken = default) { throw new NotImplementedException("Bots.selfUpdateBotWebhook is not implemented"); } @@ -283,11 +326,28 @@ public virtual async System.Threading.Tasks.Task UpdateBotAsync( throw new NotImplementedException("Bots.updateBot is not implemented"); } + public virtual async System.Threading.Tasks.Task UpdateBotTokenAsync( + int id, + long tokenId, + BotTokenUpdateRequest request, + CancellationToken cancellationToken = default) + { + throw new NotImplementedException("Bots.updateBotToken is not implemented"); + } + public virtual async System.Threading.Tasks.Task DeleteBotAsync(int id, CancellationToken cancellationToken = default) { throw new NotImplementedException("Bots.deleteBot is not implemented"); } + public virtual async System.Threading.Tasks.Task DeleteBotTokenAsync( + int id, + long tokenId, + CancellationToken cancellationToken = default) + { + throw new NotImplementedException("Bots.deleteBotToken is not implemented"); + } + public virtual async System.Threading.Tasks.Task DeleteWebhookEventAsync(string id, CancellationToken cancellationToken = default) { throw new NotImplementedException("Bots.deleteWebhookEvent is not implemented"); @@ -369,6 +429,68 @@ public override async System.Threading.Tasks.Task GetBotAsync(int i } } + public override async System.Threading.Tasks.Task GetBotScopesAsync(int id, CancellationToken cancellationToken = default) + { + var url = $"{_baseUrl}/bots/{id}/scopes"; + using var request = new HttpRequestMessage(HttpMethod.Get, url); + using var response = await PachcaUtils.SendWithRetryAsync(_client, request, cancellationToken).ConfigureAwait(false); + var json = await response.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); + switch ((int)response.StatusCode) + { + case 200: + return PachcaUtils.Deserialize(json); + case 401: + throw PachcaUtils.Deserialize(json); + default: + throw PachcaUtils.Deserialize(json); + } + } + + public override async System.Threading.Tasks.Task ListBotTokensAsync( + int id, + int? limit = null, + string? cursor = null, + CancellationToken cancellationToken = default) + { + var queryParts = new List(); + if (limit != null) + queryParts.Add($"limit={Uri.EscapeDataString(limit.Value.ToString()!)}"); + if (cursor != null) + queryParts.Add($"cursor={Uri.EscapeDataString(cursor)}"); + var url = $"{_baseUrl}/bots/{id}/tokens" + (queryParts.Count > 0 ? "?" + string.Join("&", queryParts) : ""); + using var request = new HttpRequestMessage(HttpMethod.Get, url); + using var response = await PachcaUtils.SendWithRetryAsync(_client, request, cancellationToken).ConfigureAwait(false); + var json = await response.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); + switch ((int)response.StatusCode) + { + case 200: + return PachcaUtils.Deserialize(json); + case 401: + throw PachcaUtils.Deserialize(json); + default: + throw PachcaUtils.Deserialize(json); + } + } + + public override async System.Threading.Tasks.Task> ListBotTokensAllAsync( + int id, + int? limit = null, + CancellationToken cancellationToken = default) + { + var items = new List(); + string? cursor = null; + var hasNext = true; + while (hasNext) + { + var response = await ListBotTokensAsync(id, limit: limit, cursor: cursor, cancellationToken: cancellationToken).ConfigureAwait(false); + items.AddRange(response.Data); + if (response.Data.Count == 0) break; + cursor = response.Meta.Paginate.NextPage; + hasNext = response.Meta.Paginate.HasNext ?? true; + } + return items; + } + public override async System.Threading.Tasks.Task ListCompanyBotsAsync( string? query = null, int? limit = null, @@ -459,7 +581,7 @@ public override async System.Threading.Tasks.Task> GetWebhook return items; } - public override async System.Threading.Tasks.Task SelfRecreateBotTokenAsync(CancellationToken cancellationToken = default) + public override async System.Threading.Tasks.Task SelfRecreateBotTokenAsync(CancellationToken cancellationToken = default) { var url = $"{_baseUrl}/bot/recreate_token"; using var request = new HttpRequestMessage(HttpMethod.Post, url); @@ -468,7 +590,7 @@ public override async System.Threading.Tasks.Task SelfRecreat switch ((int)response.StatusCode) { case 200: - return PachcaUtils.Deserialize(json).Data; + return PachcaUtils.Deserialize(json).Data; case 401: throw PachcaUtils.Deserialize(json); default: @@ -511,7 +633,65 @@ public override async System.Threading.Tasks.Task RecreateBot } } - public override async System.Threading.Tasks.Task SelfUpdateBotWebhookAsync(BotWebhookSelfUpdateRequest request, CancellationToken cancellationToken = default) + public override async System.Threading.Tasks.Task RotateBotClientSecretAsync(int id, CancellationToken cancellationToken = default) + { + var url = $"{_baseUrl}/bots/{id}/rotate_client_secret"; + using var request = new HttpRequestMessage(HttpMethod.Post, url); + using var response = await PachcaUtils.SendWithRetryAsync(_client, request, cancellationToken).ConfigureAwait(false); + var json = await response.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); + switch ((int)response.StatusCode) + { + case 200: + return PachcaUtils.Deserialize(json).Data; + case 401: + throw PachcaUtils.Deserialize(json); + default: + throw PachcaUtils.Deserialize(json); + } + } + + public override async System.Threading.Tasks.Task CreateBotTokenAsync( + int id, + BotTokenCreateRequest request, + CancellationToken cancellationToken = default) + { + var url = $"{_baseUrl}/bots/{id}/tokens"; + using var httpRequest = new HttpRequestMessage(HttpMethod.Post, url); + httpRequest.Content = new StringContent(PachcaUtils.Serialize(request), Encoding.UTF8, "application/json"); + using var response = await PachcaUtils.SendWithRetryAsync(_client, httpRequest, cancellationToken).ConfigureAwait(false); + var json = await response.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); + switch ((int)response.StatusCode) + { + case 201: + return PachcaUtils.Deserialize(json).Data; + case 401: + throw PachcaUtils.Deserialize(json); + default: + throw PachcaUtils.Deserialize(json); + } + } + + public override async System.Threading.Tasks.Task ReissueBotTokenAsync( + int id, + long tokenId, + CancellationToken cancellationToken = default) + { + var url = $"{_baseUrl}/bots/{id}/tokens/{tokenId}/reissue"; + using var request = new HttpRequestMessage(HttpMethod.Post, url); + using var response = await PachcaUtils.SendWithRetryAsync(_client, request, cancellationToken).ConfigureAwait(false); + var json = await response.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); + switch ((int)response.StatusCode) + { + case 200: + return PachcaUtils.Deserialize(json).Data; + case 401: + throw PachcaUtils.Deserialize(json); + default: + throw PachcaUtils.Deserialize(json); + } + } + + public override async System.Threading.Tasks.Task SelfUpdateBotWebhookAsync(BotWebhookSelfUpdateRequest request, CancellationToken cancellationToken = default) { var url = $"{_baseUrl}/bot/webhook"; using var httpRequest = new HttpRequestMessage(HttpMethod.Put, url); @@ -521,7 +701,7 @@ public override async System.Threading.Tasks.Task SelfUpdateBotWebh switch ((int)response.StatusCode) { case 200: - return PachcaUtils.Deserialize(json).Data; + return PachcaUtils.Deserialize(json).Data; case 401: throw PachcaUtils.Deserialize(json); default: @@ -550,6 +730,28 @@ public override async System.Threading.Tasks.Task UpdateBotAsync( } } + public override async System.Threading.Tasks.Task UpdateBotTokenAsync( + int id, + long tokenId, + BotTokenUpdateRequest request, + CancellationToken cancellationToken = default) + { + var url = $"{_baseUrl}/bots/{id}/tokens/{tokenId}"; + using var httpRequest = new HttpRequestMessage(HttpMethod.Put, url); + httpRequest.Content = new StringContent(PachcaUtils.Serialize(request), Encoding.UTF8, "application/json"); + using var response = await PachcaUtils.SendWithRetryAsync(_client, httpRequest, cancellationToken).ConfigureAwait(false); + var json = await response.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); + switch ((int)response.StatusCode) + { + case 200: + return PachcaUtils.Deserialize(json).Data; + case 401: + throw PachcaUtils.Deserialize(json); + default: + throw PachcaUtils.Deserialize(json); + } + } + public override async System.Threading.Tasks.Task DeleteBotAsync(int id, CancellationToken cancellationToken = default) { var url = $"{_baseUrl}/bots/{id}"; @@ -567,6 +769,26 @@ public override async System.Threading.Tasks.Task DeleteBotAsync(int id, Cancell } } + public override async System.Threading.Tasks.Task DeleteBotTokenAsync( + int id, + long tokenId, + CancellationToken cancellationToken = default) + { + var url = $"{_baseUrl}/bots/{id}/tokens/{tokenId}"; + using var request = new HttpRequestMessage(HttpMethod.Delete, url); + using var response = await PachcaUtils.SendWithRetryAsync(_client, request, cancellationToken).ConfigureAwait(false); + var json = await response.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); + switch ((int)response.StatusCode) + { + case 204: + return; + case 401: + throw PachcaUtils.Deserialize(json); + default: + throw PachcaUtils.Deserialize(json); + } + } + public override async System.Threading.Tasks.Task DeleteWebhookEventAsync(string id, CancellationToken cancellationToken = default) { var url = $"{_baseUrl}/webhooks/events/{id}"; @@ -671,6 +893,14 @@ public virtual async System.Threading.Tasks.Task UnarchiveChatAsync(int id, Canc { throw new NotImplementedException("Chats.unarchiveChat is not implemented"); } + + public virtual async System.Threading.Tasks.Task MarkChatUnreadAsync( + int id, + MarkChatUnreadRequest request, + CancellationToken cancellationToken = default) + { + throw new NotImplementedException("Chats.markChatUnread is not implemented"); + } } public sealed class ChatsServiceImpl : ChatsService @@ -927,6 +1157,27 @@ public override async System.Threading.Tasks.Task UnarchiveChatAsync(int id, Can throw PachcaUtils.Deserialize(json); } } + + public override async System.Threading.Tasks.Task MarkChatUnreadAsync( + int id, + MarkChatUnreadRequest request, + CancellationToken cancellationToken = default) + { + var url = $"{_baseUrl}/chats/{id}/unread"; + using var httpRequest = new HttpRequestMessage(HttpMethod.Put, url); + httpRequest.Content = new StringContent(PachcaUtils.Serialize(request), Encoding.UTF8, "application/json"); + using var response = await PachcaUtils.SendWithRetryAsync(_client, httpRequest, cancellationToken).ConfigureAwait(false); + var json = await response.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); + switch ((int)response.StatusCode) + { + case 204: + return; + case 401: + throw PachcaUtils.Deserialize(json); + default: + throw PachcaUtils.Deserialize(json); + } + } } public class MembersService diff --git a/sdk/csharp/generated/Models.cs b/sdk/csharp/generated/Models.cs index 5881f8495..5e4a0e527 100644 --- a/sdk/csharp/generated/Models.cs +++ b/sdk/csharp/generated/Models.cs @@ -98,6 +98,16 @@ public enum AuditEventKey BotDeleted, /// Изменены параметры OAuth-клиента бота BotOauthClientUpdated, + /// У бота выключена авторизация от имени сотрудника + BotOauthClientDisabled, + /// Обновлён секрет OAuth-клиента бота + BotOauthClientSecretRotated, + /// Выпущен токен бота + BotTokenCreated, + /// Изменены имя или скоупы токена бота + BotTokenUpdated, + /// Отдельный токен бота перевыпущен + BotTokenReissued, /// Пользователь выдал OAuth-клиенту доступ к своим данным OauthAuthorizationGranted, /// Доступ OAuth-клиента к данным пользователя отозван @@ -166,6 +176,11 @@ public override AuditEventKey Read(ref Utf8JsonReader reader, Type typeToConvert "bot_token_recreated" => AuditEventKey.BotTokenRecreated, "bot_deleted" => AuditEventKey.BotDeleted, "bot_oauth_client_updated" => AuditEventKey.BotOauthClientUpdated, + "bot_oauth_client_disabled" => AuditEventKey.BotOauthClientDisabled, + "bot_oauth_client_secret_rotated" => AuditEventKey.BotOauthClientSecretRotated, + "bot_token_created" => AuditEventKey.BotTokenCreated, + "bot_token_updated" => AuditEventKey.BotTokenUpdated, + "bot_token_reissued" => AuditEventKey.BotTokenReissued, "oauth_authorization_granted" => AuditEventKey.OauthAuthorizationGranted, "oauth_authorization_revoked" => AuditEventKey.OauthAuthorizationRevoked, "oauth_device_authorization_approved" => AuditEventKey.OauthDeviceAuthorizationApproved, @@ -225,6 +240,11 @@ public override void Write(Utf8JsonWriter writer, AuditEventKey value, JsonSeria AuditEventKey.BotTokenRecreated => "bot_token_recreated", AuditEventKey.BotDeleted => "bot_deleted", AuditEventKey.BotOauthClientUpdated => "bot_oauth_client_updated", + AuditEventKey.BotOauthClientDisabled => "bot_oauth_client_disabled", + AuditEventKey.BotOauthClientSecretRotated => "bot_oauth_client_secret_rotated", + AuditEventKey.BotTokenCreated => "bot_token_created", + AuditEventKey.BotTokenUpdated => "bot_token_updated", + AuditEventKey.BotTokenReissued => "bot_token_reissued", AuditEventKey.OauthAuthorizationGranted => "oauth_authorization_granted", AuditEventKey.OauthAuthorizationRevoked => "oauth_authorization_revoked", AuditEventKey.OauthDeviceAuthorizationApproved => "oauth_device_authorization_approved", @@ -447,6 +467,45 @@ public override void Write(Utf8JsonWriter writer, BotTriggerOn value, JsonSerial } } +/// Источник входящего вебхука бота +[JsonConverter(typeof(BotWebhookKindConverter))] +public enum BotWebhookKind +{ + /// Свой формат: сообщение собирается из тела запроса по шаблону бота + Simple, + /// GitLab: Пачка сама разбирает запрос и собирает сообщение + Gitlab, + /// Grafana: Пачка сама разбирает запрос и собирает сообщение + Grafana, +} + +internal class BotWebhookKindConverter : JsonConverter +{ + public override BotWebhookKind Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + var value = reader.GetString(); + return value switch + { + "simple" => BotWebhookKind.Simple, + "gitlab" => BotWebhookKind.Gitlab, + "grafana" => BotWebhookKind.Grafana, + _ => throw new JsonException($"Unknown BotWebhookKind value: {value}"), + }; + } + + public override void Write(Utf8JsonWriter writer, BotWebhookKind value, JsonSerializerOptions options) + { + var str = value switch + { + BotWebhookKind.Simple => "simple", + BotWebhookKind.Gitlab => "gitlab", + BotWebhookKind.Grafana => "grafana", + _ => value.ToString(), + }; + writer.WriteStringValue(str); + } +} + /// Кто может добавлять бота в чаты [JsonConverter(typeof(BotWhoCanAddConverter))] public enum BotWhoCanAdd @@ -457,7 +516,7 @@ public enum BotWhoCanAdd CreatorAdmin, /// Создатель, администраторы и участники компании CreatorAdminUser, - /// Любой пользователь, в том числе гости + /// Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей Anyone, } @@ -1135,6 +1194,8 @@ public enum OAuthScope ChatsCreate, /// Изменение настроек чата ChatsUpdate, + /// Отметка чатов непрочитанными + ChatsMarkUnread, /// Архивация и разархивация чатов ChatsArchive, /// Выход из чатов @@ -1255,6 +1316,7 @@ public override OAuthScope Read(ref Utf8JsonReader reader, Type typeToConvert, J "chats:read" => OAuthScope.ChatsRead, "chats:create" => OAuthScope.ChatsCreate, "chats:update" => OAuthScope.ChatsUpdate, + "chats:mark_unread" => OAuthScope.ChatsMarkUnread, "chats:archive" => OAuthScope.ChatsArchive, "chats:leave" => OAuthScope.ChatsLeave, "chat_members:read" => OAuthScope.ChatMembersRead, @@ -1320,6 +1382,7 @@ public override void Write(Utf8JsonWriter writer, OAuthScope value, JsonSerializ OAuthScope.ChatsRead => "chats:read", OAuthScope.ChatsCreate => "chats:create", OAuthScope.ChatsUpdate => "chats:update", + OAuthScope.ChatsMarkUnread => "chats:mark_unread", OAuthScope.ChatsArchive => "chats:archive", OAuthScope.ChatsLeave => "chats:leave", OAuthScope.ChatMembersRead => "chat_members:read", @@ -1856,6 +1919,10 @@ public enum ValidationErrorCode ConfidentialDownloadDenied, /// Не удалось расшифровать файл DecryptionFailed, + /// Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value` + BotAddDenied, + /// Поиск не уложился по времени: сузьте запрос и повторите + Timeout, /// Недостаточно прав для выполнения действия (пояснения вы получите в поле message) Forbidden, /// Доступ запрещён (недостаточно прав) @@ -1932,6 +1999,8 @@ public override ValidationErrorCode Read(ref Utf8JsonReader reader, Type typeToC "draft_type_change_forbidden" => ValidationErrorCode.DraftTypeChangeForbidden, "confidential_download_denied" => ValidationErrorCode.ConfidentialDownloadDenied, "decryption_failed" => ValidationErrorCode.DecryptionFailed, + "bot_add_denied" => ValidationErrorCode.BotAddDenied, + "timeout" => ValidationErrorCode.Timeout, "forbidden" => ValidationErrorCode.Forbidden, "permission_denied" => ValidationErrorCode.PermissionDenied, "access_denied" => ValidationErrorCode.AccessDenied, @@ -1991,6 +2060,8 @@ public override void Write(Utf8JsonWriter writer, ValidationErrorCode value, Jso ValidationErrorCode.DraftTypeChangeForbidden => "draft_type_change_forbidden", ValidationErrorCode.ConfidentialDownloadDenied => "confidential_download_denied", ValidationErrorCode.DecryptionFailed => "decryption_failed", + ValidationErrorCode.BotAddDenied => "bot_add_denied", + ValidationErrorCode.Timeout => "timeout", ValidationErrorCode.Forbidden => "forbidden", ValidationErrorCode.PermissionDenied => "permission_denied", ValidationErrorCode.AccessDenied => "access_denied", @@ -2118,9 +2189,9 @@ private static readonly (Type Type, HashSet Keys)[] Shapes = (typeof(AuditDetailsDlp), new HashSet { "dlp_rule_id", "dlp_rule_name", "message_id", "chat_id", "user_id", "action_message", "conditions_matched" }), (typeof(AuditDetailsSearch), new HashSet { "search_type", "query_present", "cursor_present", "limit", "filters" }), (typeof(AuditDetailsBot), new HashSet { "bot_id", "actor_id" }), - (typeof(AuditDetailsBotScopes), new HashSet { "added_scopes", "removed_scopes" }), - (typeof(AuditDetailsBotWebhookSettings), new HashSet { "changes" }), - (typeof(AuditDetailsBotOAuthClient), new HashSet { "client_id", "changes" }), + (typeof(AuditDetailsBotScopes), new HashSet { "bot_id", "actor_id", "added_scopes", "removed_scopes" }), + (typeof(AuditDetailsBotWebhookSettings), new HashSet { "bot_id", "actor_id", "changes" }), + (typeof(AuditDetailsBotOAuthClient), new HashSet { "bot_id", "actor_id", "client_id", "changes" }), (typeof(AuditDetailsOAuthAuthorizationGranted), new HashSet { "client_id", "scopes" }), (typeof(AuditDetailsOAuthAuthorizationRevoked), new HashSet { "client_id", "revoked_tokens_count" }), (typeof(AuditDetailsDeviceAuthorizationApproved), new HashSet { "client_id", "scopes" }), @@ -2128,6 +2199,8 @@ private static readonly (Type Type, HashSet Keys)[] Shapes = (typeof(AuditDetailsVideoCallStarted), new HashSet { "chat_id", "started_message_id" }), (typeof(AuditDetailsVideoCallFinished), new HashSet { "chat_id", "started_message_id", "duration", "max_members_count" }), (typeof(AuditDetailsVideoCallRecording), new HashSet { "chat_id", "started_message_id", "recording_id", "file_id", "duration", "size" }), + (typeof(AuditDetailsBotOAuthClientSecretRotated), new HashSet { "bot_id", "actor_id", "client_id" }), + (typeof(AuditDetailsBotOAuthClientDisabled), new HashSet { "bot_id", "actor_id", "client_id", "deleted_access_tokens_count", "deleted_access_grants_count" }), }; public override AuditEventDetailsUnion Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) @@ -2298,6 +2371,10 @@ public class AuditDetailsBot : AuditEventDetailsUnion public class AuditDetailsBotScopes : AuditEventDetailsUnion { + [JsonPropertyName("bot_id")] + public int BotId { get; set; } = default!; + [JsonPropertyName("actor_id")] + public int? ActorId { get; set; } [JsonPropertyName("added_scopes")] public List AddedScopes { get; set; } = default!; [JsonPropertyName("removed_scopes")] @@ -2306,12 +2383,20 @@ public class AuditDetailsBotScopes : AuditEventDetailsUnion public class AuditDetailsBotWebhookSettings : AuditEventDetailsUnion { + [JsonPropertyName("bot_id")] + public int BotId { get; set; } = default!; + [JsonPropertyName("actor_id")] + public int? ActorId { get; set; } [JsonPropertyName("changes")] public Dictionary Changes { get; set; } = default!; } public class AuditDetailsBotOAuthClient : AuditEventDetailsUnion { + [JsonPropertyName("bot_id")] + public int BotId { get; set; } = default!; + [JsonPropertyName("actor_id")] + public int? ActorId { get; set; } [JsonPropertyName("client_id")] public string ClientId { get; set; } = default!; [JsonPropertyName("changes")] @@ -2386,6 +2471,30 @@ public class AuditDetailsVideoCallRecording : AuditEventDetailsUnion public long Size { get; set; } = default!; } +public class AuditDetailsBotOAuthClientSecretRotated : AuditEventDetailsUnion +{ + [JsonPropertyName("bot_id")] + public int BotId { get; set; } = default!; + [JsonPropertyName("actor_id")] + public int? ActorId { get; set; } + [JsonPropertyName("client_id")] + public string ClientId { get; set; } = default!; +} + +public class AuditDetailsBotOAuthClientDisabled : AuditEventDetailsUnion +{ + [JsonPropertyName("bot_id")] + public int BotId { get; set; } = default!; + [JsonPropertyName("actor_id")] + public int? ActorId { get; set; } + [JsonPropertyName("client_id")] + public string ClientId { get; set; } = default!; + [JsonPropertyName("deleted_access_tokens_count")] + public int DeletedAccessTokensCount { get; set; } = default!; + [JsonPropertyName("deleted_access_grants_count")] + public int DeletedAccessGrantsCount { get; set; } = default!; +} + [JsonPolymorphic(TypeDiscriminatorPropertyName = "type")] [JsonDerivedType(typeof(ViewBlockHeader), "header")] [JsonDerivedType(typeof(ViewBlockPlainText), "plain_text")] @@ -2736,6 +2845,12 @@ public class LinkSharedWebhookPayload : WebhookPayloadUnion public List Links { get; set; } = default!; [JsonPropertyName("user_id")] public int UserId { get; set; } = default!; + [JsonPropertyName("entity_type")] + public MessageEntityType EntityType { get; set; } = default!; + [JsonPropertyName("entity_id")] + public int? EntityId { get; set; } + [JsonPropertyName("thread")] + public WebhookMessageThread? Thread { get; set; } [JsonPropertyName("created_at")] public DateTimeOffset CreatedAt { get; set; } = default!; [JsonPropertyName("webhook_timestamp")] @@ -2867,6 +2982,30 @@ public class AvatarData public string ImageUrl { get; set; } = default!; } +public class BotAccessToken +{ + [JsonPropertyName("id")] + public long Id { get; set; } = default!; + [JsonPropertyName("token")] + public string Token { get; set; } = default!; + [JsonPropertyName("name")] + public string? Name { get; set; } + [JsonPropertyName("user_id")] + public long UserId { get; set; } = default!; + [JsonPropertyName("scopes")] + public List Scopes { get; set; } = default!; + [JsonPropertyName("created_at")] + public DateTimeOffset CreatedAt { get; set; } = default!; + [JsonPropertyName("revoked_at")] + public DateTimeOffset? RevokedAt { get; set; } + [JsonPropertyName("expires_in")] + public int? ExpiresIn { get; set; } + [JsonPropertyName("last_used_at")] + public DateTimeOffset? LastUsedAt { get; set; } + [JsonPropertyName("authorized_at")] + public DateTimeOffset? AuthorizedAt { get; set; } +} + public class BotCreateRequestWebhook { [JsonPropertyName("name")] @@ -2901,30 +3040,264 @@ public class BotCreateRequestWebhook public List? CanEdit { get; set; } [JsonPropertyName("single_chat")] public bool? SingleChat { get; set; } + [JsonPropertyName("kind")] + public BotWebhookKind? Kind { get; set; } + [JsonPropertyName("unfurl_domains")] + public List? UnfurlDomains { get; set; } } public class BotCreateRequest { + [JsonPropertyName("empty")] + public bool? Empty { get; set; } [JsonPropertyName("webhook")] public BotCreateRequestWebhook Webhook { get; set; } = default!; + [JsonPropertyName("oauth_client")] + public BotOAuthClientRequest? OauthClient { get; set; } + [JsonPropertyName("promo")] + public BotPromoRequest? Promo { get; set; } } public class BotCreateResponse { [JsonPropertyName("id")] public int Id { get; set; } = default!; + [JsonPropertyName("name")] + public string Name { get; set; } = default!; + [JsonPropertyName("nickname")] + public string Nickname { get; set; } = default!; + [JsonPropertyName("avatar_url")] + public string? AvatarUrl { get; set; } + [JsonPropertyName("creator_id")] + public int? CreatorId { get; set; } + [JsonPropertyName("created_at")] + public DateTimeOffset CreatedAt { get; set; } = default!; + [JsonPropertyName("authorized_users_count")] + public int AuthorizedUsersCount { get; set; } = default!; + [JsonPropertyName("last_used_at")] + public DateTimeOffset? LastUsedAt { get; set; } [JsonPropertyName("webhook")] public BotWebhook Webhook { get; set; } = default!; + [JsonPropertyName("oauth_client_enabled")] + public bool OauthClientEnabled { get; set; } = default!; + [JsonPropertyName("oauth_client")] + public BotOAuthClient? OauthClient { get; set; } + [JsonPropertyName("promo")] + public BotPromo? Promo { get; set; } + [JsonPropertyName("permissions")] + public BotPermissions Permissions { get; set; } = default!; + [JsonPropertyName("client_secret")] + public string? ClientSecret { get; set; } [JsonPropertyName("access_token")] - public string AccessToken { get; set; } = default!; + public string? AccessToken { get; set; } +} + +public class BotOAuthClient +{ + [JsonPropertyName("client_id")] + public string ClientId { get; set; } = default!; + [JsonPropertyName("client_secret_preview")] + public string ClientSecretPreview { get; set; } = default!; + [JsonPropertyName("confidential")] + public bool Confidential { get; set; } = default!; + [JsonPropertyName("redirect_uris")] + public List RedirectUris { get; set; } = default!; + [JsonPropertyName("scopes")] + public List Scopes { get; set; } = default!; +} + +public class BotOAuthClientRequest +{ + [JsonPropertyName("confidential")] + public bool? Confidential { get; set; } + [JsonPropertyName("redirect_uris")] + public List? RedirectUris { get; set; } + [JsonPropertyName("scopes")] + public List? Scopes { get; set; } +} + +public class BotPermissions +{ + [JsonPropertyName("update_oauth_client")] + public bool UpdateOauthClient { get; set; } = default!; + [JsonPropertyName("recreate_token")] + public bool RecreateToken { get; set; } = default!; + [JsonPropertyName("destroy")] + public bool Destroy { get; set; } = default!; +} + +public class BotPromo +{ + [JsonPropertyName("description")] + public string? Description { get; set; } + [JsonPropertyName("published")] + public bool Published { get; set; } = default!; + [JsonPropertyName("promo_images")] + public List PromoImages { get; set; } = default!; +} + +public class BotPromoImage +{ + [JsonPropertyName("key")] + public string Key { get; set; } = default!; + [JsonPropertyName("url")] + public string Url { get; set; } = default!; +} + +public class BotPromoRequest +{ + [JsonPropertyName("description")] + public string? Description { get; set; } + [JsonPropertyName("published")] + public bool? Published { get; set; } + [JsonPropertyName("promo_images")] + public List? PromoImages { get; set; } } public class BotResponse { [JsonPropertyName("id")] public int Id { get; set; } = default!; + [JsonPropertyName("name")] + public string Name { get; set; } = default!; + [JsonPropertyName("nickname")] + public string Nickname { get; set; } = default!; + [JsonPropertyName("avatar_url")] + public string? AvatarUrl { get; set; } + [JsonPropertyName("creator_id")] + public int? CreatorId { get; set; } + [JsonPropertyName("created_at")] + public DateTimeOffset CreatedAt { get; set; } = default!; + [JsonPropertyName("authorized_users_count")] + public int AuthorizedUsersCount { get; set; } = default!; + [JsonPropertyName("last_used_at")] + public DateTimeOffset? LastUsedAt { get; set; } [JsonPropertyName("webhook")] public BotWebhook Webhook { get; set; } = default!; + [JsonPropertyName("oauth_client_enabled")] + public bool OauthClientEnabled { get; set; } = default!; + [JsonPropertyName("oauth_client")] + public BotOAuthClient? OauthClient { get; set; } + [JsonPropertyName("promo")] + public BotPromo? Promo { get; set; } + [JsonPropertyName("permissions")] + public BotPermissions Permissions { get; set; } = default!; + [JsonPropertyName("client_secret")] + public string? ClientSecret { get; set; } +} + +public class BotScopeCatalog +{ + [JsonPropertyName("scopes")] + public List Scopes { get; set; } = default!; + [JsonPropertyName("groups")] + public List Groups { get; set; } = default!; + [JsonPropertyName("presets")] + public List Presets { get; set; } = default!; +} + +public class BotScopeCatalogGroup +{ + [JsonPropertyName("id")] + public string Id { get; set; } = default!; + [JsonPropertyName("title")] + public string Title { get; set; } = default!; + [JsonPropertyName("description")] + public string Description { get; set; } = default!; +} + +public class BotScopeCatalogItem +{ + [JsonPropertyName("id")] + public string Id { get; set; } = default!; + [JsonPropertyName("title")] + public string Title { get; set; } = default!; + [JsonPropertyName("group")] + public string Group { get; set; } = default!; + [JsonPropertyName("preset")] + public List Preset { get; set; } = default!; +} + +public class BotScopeCatalogPreset +{ + [JsonPropertyName("id")] + public string Id { get; set; } = default!; + [JsonPropertyName("title")] + public string Title { get; set; } = default!; +} + +public class BotSelfResponse +{ + [JsonPropertyName("id")] + public int Id { get; set; } = default!; + [JsonPropertyName("oauth_client")] + public BotOAuthClient? OauthClient { get; set; } + [JsonPropertyName("webhook")] + public BotSelfWebhook Webhook { get; set; } = default!; +} + +public class BotSelfTokenResponse +{ + [JsonPropertyName("id")] + public int Id { get; set; } = default!; + [JsonPropertyName("oauth_client")] + public BotOAuthClient? OauthClient { get; set; } + [JsonPropertyName("webhook")] + public BotSelfWebhook Webhook { get; set; } = default!; + [JsonPropertyName("access_token")] + public string AccessToken { get; set; } = default!; +} + +public class BotSelfWebhook +{ + [JsonPropertyName("name")] + public string Name { get; set; } = default!; + [JsonPropertyName("nickname")] + public string Nickname { get; set; } = default!; + [JsonPropertyName("outgoing_url")] + public string? OutgoingUrl { get; set; } + [JsonPropertyName("events")] + public List Events { get; set; } = default!; + [JsonPropertyName("trigger_on")] + public BotTriggerOn TriggerOn { get; set; } = default!; + [JsonPropertyName("commands")] + public List Commands { get; set; } = default!; + [JsonPropertyName("scopes")] + public List Scopes { get; set; } = default!; + [JsonPropertyName("template")] + public string? Template { get; set; } + [JsonPropertyName("template_engine")] + public BotTemplateEngine TemplateEngine { get; set; } = default!; + [JsonPropertyName("challenge_key")] + public string? ChallengeKey { get; set; } + [JsonPropertyName("link_preview_enabled")] + public bool LinkPreviewEnabled { get; set; } = default!; + [JsonPropertyName("ignore_self_messages")] + public bool IgnoreSelfMessages { get; set; } = default!; + [JsonPropertyName("events_history_enabled")] + public bool EventsHistoryEnabled { get; set; } = default!; + [JsonPropertyName("single_chat")] + public bool SingleChat { get; set; } = default!; + [JsonPropertyName("can_edit")] + public List CanEdit { get; set; } = default!; + [JsonPropertyName("who_can_add")] + public BotWhoCanAdd WhoCanAdd { get; set; } = default!; +} + +public class BotTokenCreateRequest +{ + [JsonPropertyName("name")] + public string Name { get; set; } = default!; + [JsonPropertyName("scopes")] + public List? Scopes { get; set; } +} + +public class BotTokenUpdateRequest +{ + [JsonPropertyName("name")] + public string? Name { get; set; } + [JsonPropertyName("scopes")] + public List? Scopes { get; set; } } public class BotUpdateRequestWebhook @@ -2959,12 +3332,22 @@ public class BotUpdateRequestWebhook public BotWhoCanAdd? WhoCanAdd { get; set; } [JsonPropertyName("can_edit")] public List? CanEdit { get; set; } + [JsonPropertyName("single_chat")] + public bool? SingleChat { get; set; } + [JsonPropertyName("kind")] + public BotWebhookKind? Kind { get; set; } + [JsonPropertyName("unfurl_domains")] + public List? UnfurlDomains { get; set; } } public class BotUpdateRequest { [JsonPropertyName("webhook")] - public BotUpdateRequestWebhook Webhook { get; set; } = default!; + public BotUpdateRequestWebhook? Webhook { get; set; } + [JsonPropertyName("oauth_client")] + public BotOAuthClientRequest? OauthClient { get; set; } + [JsonPropertyName("promo")] + public BotPromoRequest? Promo { get; set; } } public class BotWebhook @@ -3001,6 +3384,12 @@ public class BotWebhook public List CanEdit { get; set; } = default!; [JsonPropertyName("who_can_add")] public BotWhoCanAdd WhoCanAdd { get; set; } = default!; + [JsonPropertyName("kind")] + public BotWebhookKind? Kind { get; set; } + [JsonPropertyName("unfurl_domains")] + public List UnfurlDomains { get; set; } = default!; + [JsonPropertyName("last_request_at")] + public DateTimeOffset? LastRequestAt { get; set; } } public class BotWebhookSelfUpdateRequestWebhook @@ -3091,6 +3480,8 @@ public class CompanyBotResponse { [JsonPropertyName("id")] public int Id { get; set; } = default!; + [JsonPropertyName("oauth_client")] + public BotOAuthClient? OauthClient { get; set; } [JsonPropertyName("webhook")] public CompanyBotWebhook Webhook { get; set; } = default!; } @@ -3407,6 +3798,12 @@ public class LinkPreviewsRequest public Dictionary LinkPreviews { get; set; } = default!; } +public class MarkChatUnreadRequest +{ + [JsonPropertyName("message_id")] + public int? MessageId { get; set; } +} + public class MessageThread { [JsonPropertyName("id")] @@ -4099,6 +4496,14 @@ public class ListBotsResponse public PaginationMeta Meta { get; set; } = default!; } +public class ListBotTokensResponse +{ + [JsonPropertyName("data")] + public List Data { get; set; } = new(); + [JsonPropertyName("meta")] + public PaginationMeta Meta { get; set; } = default!; +} + public class ListChatsResponse { [JsonPropertyName("data")] @@ -4239,12 +4644,30 @@ public class BotResponseDataWrapper public BotResponse Data { get; set; } = default!; } +public class BotSelfTokenResponseDataWrapper +{ + [JsonPropertyName("data")] + public BotSelfTokenResponse Data { get; set; } = default!; +} + public class BotCreateResponseDataWrapper { [JsonPropertyName("data")] public BotCreateResponse Data { get; set; } = default!; } +public class BotAccessTokenDataWrapper +{ + [JsonPropertyName("data")] + public BotAccessToken Data { get; set; } = default!; +} + +public class BotSelfResponseDataWrapper +{ + [JsonPropertyName("data")] + public BotSelfResponse Data { get; set; } = default!; +} + public class ChatDataWrapper { [JsonPropertyName("data")] diff --git a/sdk/csharp/generated/examples.json b/sdk/csharp/generated/examples.json index a76cc1217..5b40c1c16 100644 --- a/sdk/csharp/generated/examples.json +++ b/sdk/csharp/generated/examples.json @@ -18,7 +18,15 @@ }, "BotOperations_getBot": { "usage": "var response = await client.Bots.GetBotAsync(1738816);", - "output": "BotResponse(Id: int, Webhook: BotWebhook(Name: string, Nickname: string, OutgoingUrl: string?, Events: List, TriggerOn: BotTriggerOn, Commands: List, Scopes: List, Template: string?, TemplateEngine: BotTemplateEngine, ChallengeKey: string?, LinkPreviewEnabled: bool, IgnoreSelfMessages: bool, EventsHistoryEnabled: bool, SingleChat: bool, CanEdit: List, WhoCanAdd: BotWhoCanAdd))" + "output": "BotResponse(Id: int, Name: string, Nickname: string, AvatarUrl: string?, CreatorId: int?, CreatedAt: DateTimeOffset, AuthorizedUsersCount: int, LastUsedAt: DateTimeOffset?, Webhook: BotWebhook(Name: string, Nickname: string, OutgoingUrl: string?, Events: List, TriggerOn: BotTriggerOn, Commands: List, Scopes: List, Template: string?, TemplateEngine: BotTemplateEngine, ChallengeKey: string?, LinkPreviewEnabled: bool, IgnoreSelfMessages: bool, EventsHistoryEnabled: bool, SingleChat: bool, CanEdit: List, WhoCanAdd: BotWhoCanAdd, Kind: BotWebhookKind?, UnfurlDomains: List, LastRequestAt: DateTimeOffset?), OauthClientEnabled: bool, OauthClient: BotOAuthClient(ClientId: string, ClientSecretPreview: string, Confidential: bool, RedirectUris: List, Scopes: List)?, Promo: BotPromo(Description: string?, Published: bool, PromoImages: List)?, Permissions: BotPermissions(UpdateOauthClient: bool, RecreateToken: bool, Destroy: bool), ClientSecret: string?)" + }, + "BotOperations_getBotScopes": { + "usage": "var response = await client.Bots.GetBotScopesAsync(1738816);", + "output": "BotScopeCatalog(Scopes: List)>, Groups: List, Presets: List)" + }, + "BotOperations_listBotTokens": { + "usage": "var response = await client.Bots.ListBotTokensAsync(1738816, 1, \"eyJpZCI6NDgyN30\");", + "output": "ListBotTokensResponse(Data: List, Meta: PaginationMeta)" }, "CompanyBotOperations_listCompanyBots": { "usage": "var response = await client.Bots.ListCompanyBotsAsync(\"задач\", 1, \"eyJpZCI6MTczODgxNn0\");", @@ -39,49 +47,80 @@ }, "BotOperations_selfRecreateBotToken": { "usage": "var response = await client.Bots.SelfRecreateBotTokenAsync();", - "output": "BotCreateResponse(Id: int, Webhook: BotWebhook(Name: string, Nickname: string, OutgoingUrl: string?, Events: List, TriggerOn: BotTriggerOn, Commands: List, Scopes: List, Template: string?, TemplateEngine: BotTemplateEngine, ChallengeKey: string?, LinkPreviewEnabled: bool, IgnoreSelfMessages: bool, EventsHistoryEnabled: bool, SingleChat: bool, CanEdit: List, WhoCanAdd: BotWhoCanAdd), AccessToken: string)" + "output": "BotSelfTokenResponse(Id: int, OauthClient: BotOAuthClient(ClientId: string, ClientSecretPreview: string, Confidential: bool, RedirectUris: List, Scopes: List)?, Webhook: BotSelfWebhook(Name: string, Nickname: string, OutgoingUrl: string?, Events: List, TriggerOn: BotTriggerOn, Commands: List, Scopes: List, Template: string?, TemplateEngine: BotTemplateEngine, ChallengeKey: string?, LinkPreviewEnabled: bool, IgnoreSelfMessages: bool, EventsHistoryEnabled: bool, SingleChat: bool, CanEdit: List, WhoCanAdd: BotWhoCanAdd), AccessToken: string)" }, "BotOperations_createBot": { - "usage": "var request = new BotCreateRequest\n{\n Webhook = new BotCreateRequestWebhook\n {\n Name = \"Бот задач\",\n Nickname = \"tasks_bot\",\n OutgoingUrl = \"https://www.website.com/tasks/new\",\n Events = new List { BotEventName.MessageNew },\n TriggerOn = BotTriggerOn.Commands,\n Commands = new List { \"example\" },\n Scopes = new List { \"example\" },\n Template = \"Заказ от {{ client }} на сумму {{ amount }} ₽\",\n TemplateEngine = BotTemplateEngine.Liquid,\n ChallengeKey = \"challenge\",\n LinkPreviewEnabled = true,\n IgnoreSelfMessages = false,\n EventsHistoryEnabled = false,\n WhoCanAdd = BotWhoCanAdd.Creator,\n CanEdit = new List { BotCanEdit.Admin },\n SingleChat = false\n }\n};\nvar response = await client.Bots.CreateBotAsync(request);", - "output": "BotCreateResponse(Id: int, Webhook: BotWebhook(Name: string, Nickname: string, OutgoingUrl: string?, Events: List, TriggerOn: BotTriggerOn, Commands: List, Scopes: List, Template: string?, TemplateEngine: BotTemplateEngine, ChallengeKey: string?, LinkPreviewEnabled: bool, IgnoreSelfMessages: bool, EventsHistoryEnabled: bool, SingleChat: bool, CanEdit: List, WhoCanAdd: BotWhoCanAdd), AccessToken: string)", + "usage": "var request = new BotCreateRequest\n{\n Empty = false,\n Webhook = new BotCreateRequestWebhook\n {\n Name = \"Бот задач\",\n Nickname = \"tasks_bot\",\n OutgoingUrl = \"https://www.website.com/tasks/new\",\n Events = new List { BotEventName.MessageNew },\n TriggerOn = BotTriggerOn.Commands,\n Commands = new List { \"example\" },\n Scopes = new List { \"example\" },\n Template = \"Заказ от {{ client }} на сумму {{ amount }} ₽\",\n TemplateEngine = BotTemplateEngine.Liquid,\n ChallengeKey = \"challenge\",\n LinkPreviewEnabled = true,\n IgnoreSelfMessages = false,\n EventsHistoryEnabled = false,\n WhoCanAdd = BotWhoCanAdd.Creator,\n CanEdit = new List { BotCanEdit.Admin },\n SingleChat = false,\n Kind = BotWebhookKind.Simple,\n UnfurlDomains = new List { \"example\" }\n },\n OauthClient = new BotOAuthClientRequest\n {\n Confidential = true,\n RedirectUris = new List { \"example\" },\n Scopes = new List { \"example\" }\n },\n Promo = new BotPromoRequest\n {\n Description = \"Собирает сводку по задачам Jira и присылает её в чат\",\n Published = true,\n PromoImages = new List { \"example\" }\n }\n};\nvar response = await client.Bots.CreateBotAsync(request);", + "output": "BotCreateResponse(Id: int, Name: string, Nickname: string, AvatarUrl: string?, CreatorId: int?, CreatedAt: DateTimeOffset, AuthorizedUsersCount: int, LastUsedAt: DateTimeOffset?, Webhook: BotWebhook(Name: string, Nickname: string, OutgoingUrl: string?, Events: List, TriggerOn: BotTriggerOn, Commands: List, Scopes: List, Template: string?, TemplateEngine: BotTemplateEngine, ChallengeKey: string?, LinkPreviewEnabled: bool, IgnoreSelfMessages: bool, EventsHistoryEnabled: bool, SingleChat: bool, CanEdit: List, WhoCanAdd: BotWhoCanAdd, Kind: BotWebhookKind?, UnfurlDomains: List, LastRequestAt: DateTimeOffset?), OauthClientEnabled: bool, OauthClient: BotOAuthClient(ClientId: string, ClientSecretPreview: string, Confidential: bool, RedirectUris: List, Scopes: List)?, Promo: BotPromo(Description: string?, Published: bool, PromoImages: List)?, Permissions: BotPermissions(UpdateOauthClient: bool, RecreateToken: bool, Destroy: bool), ClientSecret: string?, AccessToken: string?)", "imports": [ "BotCanEdit", "BotCreateRequest", "BotCreateRequestWebhook", "BotEventName", + "BotOAuthClientRequest", + "BotPromoRequest", "BotTemplateEngine", "BotTriggerOn", + "BotWebhookKind", "BotWhoCanAdd" ] }, "BotOperations_recreateBotToken": { "usage": "var response = await client.Bots.RecreateBotTokenAsync(1738816);", - "output": "BotCreateResponse(Id: int, Webhook: BotWebhook(Name: string, Nickname: string, OutgoingUrl: string?, Events: List, TriggerOn: BotTriggerOn, Commands: List, Scopes: List, Template: string?, TemplateEngine: BotTemplateEngine, ChallengeKey: string?, LinkPreviewEnabled: bool, IgnoreSelfMessages: bool, EventsHistoryEnabled: bool, SingleChat: bool, CanEdit: List, WhoCanAdd: BotWhoCanAdd), AccessToken: string)" + "output": "BotCreateResponse(Id: int, Name: string, Nickname: string, AvatarUrl: string?, CreatorId: int?, CreatedAt: DateTimeOffset, AuthorizedUsersCount: int, LastUsedAt: DateTimeOffset?, Webhook: BotWebhook(Name: string, Nickname: string, OutgoingUrl: string?, Events: List, TriggerOn: BotTriggerOn, Commands: List, Scopes: List, Template: string?, TemplateEngine: BotTemplateEngine, ChallengeKey: string?, LinkPreviewEnabled: bool, IgnoreSelfMessages: bool, EventsHistoryEnabled: bool, SingleChat: bool, CanEdit: List, WhoCanAdd: BotWhoCanAdd, Kind: BotWebhookKind?, UnfurlDomains: List, LastRequestAt: DateTimeOffset?), OauthClientEnabled: bool, OauthClient: BotOAuthClient(ClientId: string, ClientSecretPreview: string, Confidential: bool, RedirectUris: List, Scopes: List)?, Promo: BotPromo(Description: string?, Published: bool, PromoImages: List)?, Permissions: BotPermissions(UpdateOauthClient: bool, RecreateToken: bool, Destroy: bool), ClientSecret: string?, AccessToken: string?)" + }, + "BotOperations_rotateBotClientSecret": { + "usage": "var response = await client.Bots.RotateBotClientSecretAsync(1738816);", + "output": "BotResponse(Id: int, Name: string, Nickname: string, AvatarUrl: string?, CreatorId: int?, CreatedAt: DateTimeOffset, AuthorizedUsersCount: int, LastUsedAt: DateTimeOffset?, Webhook: BotWebhook(Name: string, Nickname: string, OutgoingUrl: string?, Events: List, TriggerOn: BotTriggerOn, Commands: List, Scopes: List, Template: string?, TemplateEngine: BotTemplateEngine, ChallengeKey: string?, LinkPreviewEnabled: bool, IgnoreSelfMessages: bool, EventsHistoryEnabled: bool, SingleChat: bool, CanEdit: List, WhoCanAdd: BotWhoCanAdd, Kind: BotWebhookKind?, UnfurlDomains: List, LastRequestAt: DateTimeOffset?), OauthClientEnabled: bool, OauthClient: BotOAuthClient(ClientId: string, ClientSecretPreview: string, Confidential: bool, RedirectUris: List, Scopes: List)?, Promo: BotPromo(Description: string?, Published: bool, PromoImages: List)?, Permissions: BotPermissions(UpdateOauthClient: bool, RecreateToken: bool, Destroy: bool), ClientSecret: string?)" + }, + "BotOperations_createBotToken": { + "usage": "var request = new BotTokenCreateRequest { Name = \"Сервер уведомлений\", Scopes = new List { \"example\" } };\nvar response = await client.Bots.CreateBotTokenAsync(1738816, request);", + "output": "BotAccessToken(Id: long, Token: string, Name: string?, UserId: long, Scopes: List, CreatedAt: DateTimeOffset, RevokedAt: DateTimeOffset?, ExpiresIn: int?, LastUsedAt: DateTimeOffset?, AuthorizedAt: DateTimeOffset?)", + "imports": [ + "BotTokenCreateRequest" + ] + }, + "BotOperations_reissueBotToken": { + "usage": "var response = await client.Bots.ReissueBotTokenAsync(1738816, 4827L);", + "output": "BotAccessToken(Id: long, Token: string, Name: string?, UserId: long, Scopes: List, CreatedAt: DateTimeOffset, RevokedAt: DateTimeOffset?, ExpiresIn: int?, LastUsedAt: DateTimeOffset?, AuthorizedAt: DateTimeOffset?)" }, "BotOperations_selfUpdateBotWebhook": { "usage": "var request = new BotWebhookSelfUpdateRequest { Webhook = new BotWebhookSelfUpdateRequestWebhook { OutgoingUrl = \"https://www.website.com/tasks/new\" } };\nvar response = await client.Bots.SelfUpdateBotWebhookAsync(request);", - "output": "BotResponse(Id: int, Webhook: BotWebhook(Name: string, Nickname: string, OutgoingUrl: string?, Events: List, TriggerOn: BotTriggerOn, Commands: List, Scopes: List, Template: string?, TemplateEngine: BotTemplateEngine, ChallengeKey: string?, LinkPreviewEnabled: bool, IgnoreSelfMessages: bool, EventsHistoryEnabled: bool, SingleChat: bool, CanEdit: List, WhoCanAdd: BotWhoCanAdd))", + "output": "BotSelfResponse(Id: int, OauthClient: BotOAuthClient(ClientId: string, ClientSecretPreview: string, Confidential: bool, RedirectUris: List, Scopes: List)?, Webhook: BotSelfWebhook(Name: string, Nickname: string, OutgoingUrl: string?, Events: List, TriggerOn: BotTriggerOn, Commands: List, Scopes: List, Template: string?, TemplateEngine: BotTemplateEngine, ChallengeKey: string?, LinkPreviewEnabled: bool, IgnoreSelfMessages: bool, EventsHistoryEnabled: bool, SingleChat: bool, CanEdit: List, WhoCanAdd: BotWhoCanAdd))", "imports": [ "BotWebhookSelfUpdateRequest", "BotWebhookSelfUpdateRequestWebhook" ] }, "BotOperations_updateBot": { - "usage": "var request = new BotUpdateRequest\n{\n Webhook = new BotUpdateRequestWebhook\n {\n Name = \"Бот задач\",\n Nickname = \"tasks_bot\",\n OutgoingUrl = \"https://www.website.com/tasks/new\",\n Events = new List { BotEventName.MessageNew },\n TriggerOn = BotTriggerOn.Commands,\n Commands = new List { \"example\" },\n Scopes = new List { \"example\" },\n Template = \"Заказ от {{ client }} на сумму {{ amount }} ₽\",\n TemplateEngine = BotTemplateEngine.Liquid,\n ChallengeKey = \"challenge\",\n LinkPreviewEnabled = true,\n IgnoreSelfMessages = false,\n EventsHistoryEnabled = false,\n WhoCanAdd = BotWhoCanAdd.Creator,\n CanEdit = new List { BotCanEdit.Admin }\n }\n};\nvar response = await client.Bots.UpdateBotAsync(1738816, request);", - "output": "BotResponse(Id: int, Webhook: BotWebhook(Name: string, Nickname: string, OutgoingUrl: string?, Events: List, TriggerOn: BotTriggerOn, Commands: List, Scopes: List, Template: string?, TemplateEngine: BotTemplateEngine, ChallengeKey: string?, LinkPreviewEnabled: bool, IgnoreSelfMessages: bool, EventsHistoryEnabled: bool, SingleChat: bool, CanEdit: List, WhoCanAdd: BotWhoCanAdd))", + "usage": "var request = new BotUpdateRequest\n{\n Webhook = new BotUpdateRequestWebhook\n {\n Name = \"Бот задач\",\n Nickname = \"tasks_bot\",\n OutgoingUrl = \"https://www.website.com/tasks/new\",\n Events = new List { BotEventName.MessageNew },\n TriggerOn = BotTriggerOn.Commands,\n Commands = new List { \"example\" },\n Scopes = new List { \"example\" },\n Template = \"Заказ от {{ client }} на сумму {{ amount }} ₽\",\n TemplateEngine = BotTemplateEngine.Liquid,\n ChallengeKey = \"challenge\",\n LinkPreviewEnabled = true,\n IgnoreSelfMessages = false,\n EventsHistoryEnabled = false,\n WhoCanAdd = BotWhoCanAdd.Creator,\n CanEdit = new List { BotCanEdit.Admin },\n SingleChat = false,\n Kind = BotWebhookKind.Simple,\n UnfurlDomains = new List { \"example\" }\n },\n OauthClient = new BotOAuthClientRequest\n {\n Confidential = true,\n RedirectUris = new List { \"example\" },\n Scopes = new List { \"example\" }\n },\n Promo = new BotPromoRequest\n {\n Description = \"Собирает сводку по задачам Jira и присылает её в чат\",\n Published = true,\n PromoImages = new List { \"example\" }\n }\n};\nvar response = await client.Bots.UpdateBotAsync(1738816, request);", + "output": "BotResponse(Id: int, Name: string, Nickname: string, AvatarUrl: string?, CreatorId: int?, CreatedAt: DateTimeOffset, AuthorizedUsersCount: int, LastUsedAt: DateTimeOffset?, Webhook: BotWebhook(Name: string, Nickname: string, OutgoingUrl: string?, Events: List, TriggerOn: BotTriggerOn, Commands: List, Scopes: List, Template: string?, TemplateEngine: BotTemplateEngine, ChallengeKey: string?, LinkPreviewEnabled: bool, IgnoreSelfMessages: bool, EventsHistoryEnabled: bool, SingleChat: bool, CanEdit: List, WhoCanAdd: BotWhoCanAdd, Kind: BotWebhookKind?, UnfurlDomains: List, LastRequestAt: DateTimeOffset?), OauthClientEnabled: bool, OauthClient: BotOAuthClient(ClientId: string, ClientSecretPreview: string, Confidential: bool, RedirectUris: List, Scopes: List)?, Promo: BotPromo(Description: string?, Published: bool, PromoImages: List)?, Permissions: BotPermissions(UpdateOauthClient: bool, RecreateToken: bool, Destroy: bool), ClientSecret: string?)", "imports": [ "BotCanEdit", "BotEventName", + "BotOAuthClientRequest", + "BotPromoRequest", "BotTemplateEngine", "BotTriggerOn", "BotUpdateRequest", "BotUpdateRequestWebhook", + "BotWebhookKind", "BotWhoCanAdd" ] }, + "BotOperations_updateBotToken": { + "usage": "var request = new BotTokenUpdateRequest { Name = \"Сервер уведомлений\", Scopes = new List { \"example\" } };\nvar response = await client.Bots.UpdateBotTokenAsync(1738816, 4827L, request);", + "output": "BotAccessToken(Id: long, Token: string, Name: string?, UserId: long, Scopes: List, CreatedAt: DateTimeOffset, RevokedAt: DateTimeOffset?, ExpiresIn: int?, LastUsedAt: DateTimeOffset?, AuthorizedAt: DateTimeOffset?)", + "imports": [ + "BotTokenUpdateRequest" + ] + }, "BotOperations_deleteBot": { "usage": "await client.Bots.DeleteBotAsync(1738816);" }, + "BotOperations_deleteBotToken": { + "usage": "await client.Bots.DeleteBotTokenAsync(1738816, 4827L);" + }, "BotOperations_deleteWebhookEvent": { "usage": "await client.Bots.DeleteWebhookEventAsync(\"01KAJZ2XDSS2S3DSW9EXJZ0TBV\");" }, @@ -137,6 +176,12 @@ "ChatOperations_unarchiveChat": { "usage": "await client.Chats.UnarchiveChatAsync(334);" }, + "ChatOperations_markChatUnread": { + "usage": "var request = new MarkChatUnreadRequest { MessageId = 1194275 };\nawait client.Chats.MarkChatUnreadAsync(334, request);", + "imports": [ + "MarkChatUnreadRequest" + ] + }, "ChatMemberOperations_listMembers": { "usage": "var response = await client.Members.ListMembersAsync(334, ChatMemberRoleFilter.All, 1, \"eyJpZCI6MTAsImRpciI6ImFzYyJ9\");", "output": "ListMembersResponse(Data: List, Meta: PaginationMeta)", diff --git a/sdk/go/generated/client.go b/sdk/go/generated/client.go index 71f57046a..07d5b6baf 100644 --- a/sdk/go/generated/client.go +++ b/sdk/go/generated/client.go @@ -138,18 +138,26 @@ type BotsService interface { ListBots(ctx context.Context, params *ListBotsParams) (*ListBotsResponse, error) ListBotsAll(ctx context.Context, params *ListBotsParams) ([]BotResponse, error) GetBot(ctx context.Context, id int32) (*BotResponse, error) + GetBotScopes(ctx context.Context, id int32) (*BotScopeCatalog, error) + ListBotTokens(ctx context.Context, id int32, params *ListBotTokensParams) (*ListBotTokensResponse, error) + ListBotTokensAll(ctx context.Context, id int32, params *ListBotTokensParams) ([]BotAccessToken, error) ListCompanyBots(ctx context.Context, params *ListCompanyBotsParams) (*ListCompanyBotsResponse, error) ListCompanyBotsAll(ctx context.Context, params *ListCompanyBotsParams) ([]CompanyBotResponse, error) GetWebhookEvents(ctx context.Context, params *GetWebhookEventsParams) (*GetWebhookEventsResponse, error) GetWebhookEventsAll(ctx context.Context, params *GetWebhookEventsParams) ([]WebhookEvent, error) PollWebhookEvents(ctx context.Context, options *PollWebhookEventsOptions, handler func(WebhookEvent) error) error PollWebhookPayloads(ctx context.Context, options *PollWebhookEventsOptions, handler func(WebhookPayloadUnion) error) error - SelfRecreateBotToken(ctx context.Context) (*BotCreateResponse, error) + SelfRecreateBotToken(ctx context.Context) (*BotSelfTokenResponse, error) CreateBot(ctx context.Context, request BotCreateRequest) (*BotCreateResponse, error) RecreateBotToken(ctx context.Context, id int32) (*BotCreateResponse, error) - SelfUpdateBotWebhook(ctx context.Context, request BotWebhookSelfUpdateRequest) (*BotResponse, error) + RotateBotClientSecret(ctx context.Context, id int32) (*BotResponse, error) + CreateBotToken(ctx context.Context, id int32, request BotTokenCreateRequest) (*BotAccessToken, error) + ReissueBotToken(ctx context.Context, id int32, tokenId int64) (*BotAccessToken, error) + SelfUpdateBotWebhook(ctx context.Context, request BotWebhookSelfUpdateRequest) (*BotSelfResponse, error) UpdateBot(ctx context.Context, id int32, request BotUpdateRequest) (*BotResponse, error) + UpdateBotToken(ctx context.Context, id int32, tokenId int64, request BotTokenUpdateRequest) (*BotAccessToken, error) DeleteBot(ctx context.Context, id int32) error + DeleteBotToken(ctx context.Context, id int32, tokenId int64) error DeleteWebhookEvent(ctx context.Context, id string) error } @@ -174,6 +182,18 @@ func (s *BotsServiceStub) GetBot(ctx context.Context, id int32) (*BotResponse, e return nil, NotImplementedError{Method: "Bots.getBot"} } +func (s *BotsServiceStub) GetBotScopes(ctx context.Context, id int32) (*BotScopeCatalog, error) { + return nil, NotImplementedError{Method: "Bots.getBotScopes"} +} + +func (s *BotsServiceStub) ListBotTokens(ctx context.Context, id int32, params *ListBotTokensParams) (*ListBotTokensResponse, error) { + return nil, NotImplementedError{Method: "Bots.listBotTokens"} +} + +func (s *BotsServiceStub) ListBotTokensAll(ctx context.Context, id int32, params *ListBotTokensParams) ([]BotAccessToken, error) { + return nil, NotImplementedError{Method: "Bots.listBotTokensAll"} +} + func (s *BotsServiceStub) ListCompanyBots(ctx context.Context, params *ListCompanyBotsParams) (*ListCompanyBotsResponse, error) { return nil, NotImplementedError{Method: "Bots.listCompanyBots"} } @@ -198,7 +218,7 @@ func (s *BotsServiceStub) PollWebhookPayloads(ctx context.Context, options *Poll return NotImplementedError{Method: "Bots.pollWebhookPayloads"} } -func (s *BotsServiceStub) SelfRecreateBotToken(ctx context.Context) (*BotCreateResponse, error) { +func (s *BotsServiceStub) SelfRecreateBotToken(ctx context.Context) (*BotSelfTokenResponse, error) { return nil, NotImplementedError{Method: "Bots.selfRecreateBotToken"} } @@ -210,7 +230,19 @@ func (s *BotsServiceStub) RecreateBotToken(ctx context.Context, id int32) (*BotC return nil, NotImplementedError{Method: "Bots.recreateBotToken"} } -func (s *BotsServiceStub) SelfUpdateBotWebhook(ctx context.Context, request BotWebhookSelfUpdateRequest) (*BotResponse, error) { +func (s *BotsServiceStub) RotateBotClientSecret(ctx context.Context, id int32) (*BotResponse, error) { + return nil, NotImplementedError{Method: "Bots.rotateBotClientSecret"} +} + +func (s *BotsServiceStub) CreateBotToken(ctx context.Context, id int32, request BotTokenCreateRequest) (*BotAccessToken, error) { + return nil, NotImplementedError{Method: "Bots.createBotToken"} +} + +func (s *BotsServiceStub) ReissueBotToken(ctx context.Context, id int32, tokenId int64) (*BotAccessToken, error) { + return nil, NotImplementedError{Method: "Bots.reissueBotToken"} +} + +func (s *BotsServiceStub) SelfUpdateBotWebhook(ctx context.Context, request BotWebhookSelfUpdateRequest) (*BotSelfResponse, error) { return nil, NotImplementedError{Method: "Bots.selfUpdateBotWebhook"} } @@ -218,10 +250,18 @@ func (s *BotsServiceStub) UpdateBot(ctx context.Context, id int32, request BotUp return nil, NotImplementedError{Method: "Bots.updateBot"} } +func (s *BotsServiceStub) UpdateBotToken(ctx context.Context, id int32, tokenId int64, request BotTokenUpdateRequest) (*BotAccessToken, error) { + return nil, NotImplementedError{Method: "Bots.updateBotToken"} +} + func (s *BotsServiceStub) DeleteBot(ctx context.Context, id int32) error { return NotImplementedError{Method: "Bots.deleteBot"} } +func (s *BotsServiceStub) DeleteBotToken(ctx context.Context, id int32, tokenId int64) error { + return NotImplementedError{Method: "Bots.deleteBotToken"} +} + func (s *BotsServiceStub) DeleteWebhookEvent(ctx context.Context, id string) error { return NotImplementedError{Method: "Bots.deleteWebhookEvent"} } @@ -338,6 +378,108 @@ func (s *BotsServiceImpl) GetBot(ctx context.Context, id int32) (*BotResponse, e } } +func (s *BotsServiceImpl) GetBotScopes(ctx context.Context, id int32) (*BotScopeCatalog, error) { + req, err := http.NewRequestWithContext(ctx, "GET", fmt.Sprintf("%s/bots/%v/scopes", s.baseURL, id), nil) + if err != nil { + return nil, err + } + resp, err := doWithRetry(s.client, req) + if err != nil { + return nil, err + } + defer resp.Body.Close() + switch resp.StatusCode { + case http.StatusOK: + var result BotScopeCatalog + if err := json.NewDecoder(resp.Body).Decode(&result); err != nil { + return nil, err + } + return &result, nil + case http.StatusUnauthorized: + var e OAuthError + if err := json.NewDecoder(resp.Body).Decode(&e); err != nil { + e.Err = fmt.Sprintf("HTTP 401: %v", err) + } + return nil, &e + default: + var e ApiError + if err := json.NewDecoder(resp.Body).Decode(&e); err != nil { + return nil, fmt.Errorf("HTTP %d: %w", resp.StatusCode, err) + } + return nil, &e + } +} + +func (s *BotsServiceImpl) ListBotTokens(ctx context.Context, id int32, params *ListBotTokensParams) (*ListBotTokensResponse, error) { + u, err := url.Parse(fmt.Sprintf("%s/bots/%v/tokens", s.baseURL, id)) + if err != nil { + return nil, err + } + q := u.Query() + if params != nil && params.Limit != nil { + q.Set("limit", fmt.Sprintf("%v", *params.Limit)) + } + if params != nil && params.Cursor != nil { + q.Set("cursor", fmt.Sprintf("%v", *params.Cursor)) + } + u.RawQuery = q.Encode() + req, err := http.NewRequestWithContext(ctx, "GET", u.String(), nil) + if err != nil { + return nil, err + } + resp, err := doWithRetry(s.client, req) + if err != nil { + return nil, err + } + defer resp.Body.Close() + switch resp.StatusCode { + case http.StatusOK: + var result ListBotTokensResponse + if err := json.NewDecoder(resp.Body).Decode(&result); err != nil { + return nil, err + } + return &result, nil + case http.StatusUnauthorized: + var e OAuthError + if err := json.NewDecoder(resp.Body).Decode(&e); err != nil { + e.Err = fmt.Sprintf("HTTP 401: %v", err) + } + return nil, &e + default: + var e ApiError + if err := json.NewDecoder(resp.Body).Decode(&e); err != nil { + return nil, fmt.Errorf("HTTP %d: %w", resp.StatusCode, err) + } + return nil, &e + } +} + +func (s *BotsServiceImpl) ListBotTokensAll(ctx context.Context, id int32, params *ListBotTokensParams) ([]BotAccessToken, error) { + if params == nil { + params = &ListBotTokensParams{} + } + var items []BotAccessToken + var cursor *string + hasNext := true + for hasNext { + params.Cursor = cursor + result, err := s.ListBotTokens(ctx, id, params) + if err != nil { + return nil, err + } + items = append(items, result.Data...) + if len(result.Data) == 0 { + return items, nil + } + nextPage := result.Meta.Paginate.NextPage + cursor = &nextPage + if result.Meta.Paginate.HasNext != nil { + hasNext = *result.Meta.Paginate.HasNext + } + } + return items, nil +} + func (s *BotsServiceImpl) ListCompanyBots(ctx context.Context, params *ListCompanyBotsParams) (*ListCompanyBotsResponse, error) { u, err := url.Parse(fmt.Sprintf("%s/company/bots", s.baseURL)) if err != nil { @@ -572,7 +714,7 @@ func (s *BotsServiceImpl) PollWebhookPayloads(ctx context.Context, options *Poll }) } -func (s *BotsServiceImpl) SelfRecreateBotToken(ctx context.Context) (*BotCreateResponse, error) { +func (s *BotsServiceImpl) SelfRecreateBotToken(ctx context.Context) (*BotSelfTokenResponse, error) { req, err := http.NewRequestWithContext(ctx, "POST", fmt.Sprintf("%s/bot/recreate_token", s.baseURL), nil) if err != nil { return nil, err @@ -585,7 +727,7 @@ func (s *BotsServiceImpl) SelfRecreateBotToken(ctx context.Context) (*BotCreateR switch resp.StatusCode { case http.StatusOK: var result struct { - Data BotCreateResponse `json:"data"` + Data BotSelfTokenResponse `json:"data"` } if err := json.NewDecoder(resp.Body).Decode(&result); err != nil { return nil, err @@ -679,7 +821,114 @@ func (s *BotsServiceImpl) RecreateBotToken(ctx context.Context, id int32) (*BotC } } -func (s *BotsServiceImpl) SelfUpdateBotWebhook(ctx context.Context, request BotWebhookSelfUpdateRequest) (*BotResponse, error) { +func (s *BotsServiceImpl) RotateBotClientSecret(ctx context.Context, id int32) (*BotResponse, error) { + req, err := http.NewRequestWithContext(ctx, "POST", fmt.Sprintf("%s/bots/%v/rotate_client_secret", s.baseURL, id), nil) + if err != nil { + return nil, err + } + resp, err := doWithRetry(s.client, req) + if err != nil { + return nil, err + } + defer resp.Body.Close() + switch resp.StatusCode { + case http.StatusOK: + var result struct { + Data BotResponse `json:"data"` + } + if err := json.NewDecoder(resp.Body).Decode(&result); err != nil { + return nil, err + } + return &result.Data, nil + case http.StatusUnauthorized: + var e OAuthError + if err := json.NewDecoder(resp.Body).Decode(&e); err != nil { + e.Err = fmt.Sprintf("HTTP 401: %v", err) + } + return nil, &e + default: + var e ApiError + if err := json.NewDecoder(resp.Body).Decode(&e); err != nil { + return nil, fmt.Errorf("HTTP %d: %w", resp.StatusCode, err) + } + return nil, &e + } +} + +func (s *BotsServiceImpl) CreateBotToken(ctx context.Context, id int32, request BotTokenCreateRequest) (*BotAccessToken, error) { + body, err := json.Marshal(request) + if err != nil { + return nil, err + } + req, err := http.NewRequestWithContext(ctx, "POST", fmt.Sprintf("%s/bots/%v/tokens", s.baseURL, id), bytes.NewReader(body)) + if err != nil { + return nil, err + } + req.Header.Set("Content-Type", "application/json") + resp, err := doWithRetry(s.client, req) + if err != nil { + return nil, err + } + defer resp.Body.Close() + switch resp.StatusCode { + case http.StatusCreated: + var result struct { + Data BotAccessToken `json:"data"` + } + if err := json.NewDecoder(resp.Body).Decode(&result); err != nil { + return nil, err + } + return &result.Data, nil + case http.StatusUnauthorized: + var e OAuthError + if err := json.NewDecoder(resp.Body).Decode(&e); err != nil { + e.Err = fmt.Sprintf("HTTP 401: %v", err) + } + return nil, &e + default: + var e ApiError + if err := json.NewDecoder(resp.Body).Decode(&e); err != nil { + return nil, fmt.Errorf("HTTP %d: %w", resp.StatusCode, err) + } + return nil, &e + } +} + +func (s *BotsServiceImpl) ReissueBotToken(ctx context.Context, id int32, tokenId int64) (*BotAccessToken, error) { + req, err := http.NewRequestWithContext(ctx, "POST", fmt.Sprintf("%s/bots/%v/tokens/%v/reissue", s.baseURL, id, tokenId), nil) + if err != nil { + return nil, err + } + resp, err := doWithRetry(s.client, req) + if err != nil { + return nil, err + } + defer resp.Body.Close() + switch resp.StatusCode { + case http.StatusOK: + var result struct { + Data BotAccessToken `json:"data"` + } + if err := json.NewDecoder(resp.Body).Decode(&result); err != nil { + return nil, err + } + return &result.Data, nil + case http.StatusUnauthorized: + var e OAuthError + if err := json.NewDecoder(resp.Body).Decode(&e); err != nil { + e.Err = fmt.Sprintf("HTTP 401: %v", err) + } + return nil, &e + default: + var e ApiError + if err := json.NewDecoder(resp.Body).Decode(&e); err != nil { + return nil, fmt.Errorf("HTTP %d: %w", resp.StatusCode, err) + } + return nil, &e + } +} + +func (s *BotsServiceImpl) SelfUpdateBotWebhook(ctx context.Context, request BotWebhookSelfUpdateRequest) (*BotSelfResponse, error) { body, err := json.Marshal(request) if err != nil { return nil, err @@ -697,7 +946,7 @@ func (s *BotsServiceImpl) SelfUpdateBotWebhook(ctx context.Context, request BotW switch resp.StatusCode { case http.StatusOK: var result struct { - Data BotResponse `json:"data"` + Data BotSelfResponse `json:"data"` } if err := json.NewDecoder(resp.Body).Decode(&result); err != nil { return nil, err @@ -757,6 +1006,45 @@ func (s *BotsServiceImpl) UpdateBot(ctx context.Context, id int32, request BotUp } } +func (s *BotsServiceImpl) UpdateBotToken(ctx context.Context, id int32, tokenId int64, request BotTokenUpdateRequest) (*BotAccessToken, error) { + body, err := json.Marshal(request) + if err != nil { + return nil, err + } + req, err := http.NewRequestWithContext(ctx, "PUT", fmt.Sprintf("%s/bots/%v/tokens/%v", s.baseURL, id, tokenId), bytes.NewReader(body)) + if err != nil { + return nil, err + } + req.Header.Set("Content-Type", "application/json") + resp, err := doWithRetry(s.client, req) + if err != nil { + return nil, err + } + defer resp.Body.Close() + switch resp.StatusCode { + case http.StatusOK: + var result struct { + Data BotAccessToken `json:"data"` + } + if err := json.NewDecoder(resp.Body).Decode(&result); err != nil { + return nil, err + } + return &result.Data, nil + case http.StatusUnauthorized: + var e OAuthError + if err := json.NewDecoder(resp.Body).Decode(&e); err != nil { + e.Err = fmt.Sprintf("HTTP 401: %v", err) + } + return nil, &e + default: + var e ApiError + if err := json.NewDecoder(resp.Body).Decode(&e); err != nil { + return nil, fmt.Errorf("HTTP %d: %w", resp.StatusCode, err) + } + return nil, &e + } +} + func (s *BotsServiceImpl) DeleteBot(ctx context.Context, id int32) error { req, err := http.NewRequestWithContext(ctx, "DELETE", fmt.Sprintf("%s/bots/%v", s.baseURL, id), nil) if err != nil { @@ -785,6 +1073,34 @@ func (s *BotsServiceImpl) DeleteBot(ctx context.Context, id int32) error { } } +func (s *BotsServiceImpl) DeleteBotToken(ctx context.Context, id int32, tokenId int64) error { + req, err := http.NewRequestWithContext(ctx, "DELETE", fmt.Sprintf("%s/bots/%v/tokens/%v", s.baseURL, id, tokenId), nil) + if err != nil { + return err + } + resp, err := doWithRetry(s.client, req) + if err != nil { + return err + } + defer resp.Body.Close() + switch resp.StatusCode { + case http.StatusNoContent: + return nil + case http.StatusUnauthorized: + var e OAuthError + if err := json.NewDecoder(resp.Body).Decode(&e); err != nil { + e.Err = fmt.Sprintf("HTTP 401: %v", err) + } + return &e + default: + var e ApiError + if err := json.NewDecoder(resp.Body).Decode(&e); err != nil { + return fmt.Errorf("HTTP %d: %w", resp.StatusCode, err) + } + return &e + } +} + func (s *BotsServiceImpl) DeleteWebhookEvent(ctx context.Context, id string) error { req, err := http.NewRequestWithContext(ctx, "DELETE", fmt.Sprintf("%s/webhooks/events/%v", s.baseURL, id), nil) if err != nil { @@ -825,6 +1141,7 @@ type ChatsService interface { UpdateChat(ctx context.Context, id int32, request ChatUpdateRequest) (*Chat, error) ArchiveChat(ctx context.Context, id int32) error UnarchiveChat(ctx context.Context, id int32) error + MarkChatUnread(ctx context.Context, id int32, request MarkChatUnreadRequest) error } type ChatsServiceStub struct{} @@ -873,6 +1190,10 @@ func (s *ChatsServiceStub) UnarchiveChat(ctx context.Context, id int32) error { return NotImplementedError{Method: "Chats.unarchiveChat"} } +func (s *ChatsServiceStub) MarkChatUnread(ctx context.Context, id int32, request MarkChatUnreadRequest) error { + return NotImplementedError{Method: "Chats.markChatUnread"} +} + type ChatsServiceImpl struct { baseURL string client *http.Client @@ -1275,6 +1596,39 @@ func (s *ChatsServiceImpl) UnarchiveChat(ctx context.Context, id int32) error { } } +func (s *ChatsServiceImpl) MarkChatUnread(ctx context.Context, id int32, request MarkChatUnreadRequest) error { + body, err := json.Marshal(request) + if err != nil { + return err + } + req, err := http.NewRequestWithContext(ctx, "PUT", fmt.Sprintf("%s/chats/%v/unread", s.baseURL, id), bytes.NewReader(body)) + if err != nil { + return err + } + req.Header.Set("Content-Type", "application/json") + resp, err := doWithRetry(s.client, req) + if err != nil { + return err + } + defer resp.Body.Close() + switch resp.StatusCode { + case http.StatusNoContent: + return nil + case http.StatusUnauthorized: + var e OAuthError + if err := json.NewDecoder(resp.Body).Decode(&e); err != nil { + e.Err = fmt.Sprintf("HTTP 401: %v", err) + } + return &e + default: + var e ApiError + if err := json.NewDecoder(resp.Body).Decode(&e); err != nil { + return fmt.Errorf("HTTP %d: %w", resp.StatusCode, err) + } + return &e + } +} + type MembersService interface { ListMembers(ctx context.Context, id int32, params *ListMembersParams) (*ListMembersResponse, error) ListMembersAll(ctx context.Context, id int32, params *ListMembersParams) ([]User, error) diff --git a/sdk/go/generated/examples.json b/sdk/go/generated/examples.json index 8dc445ece..370eed064 100644 --- a/sdk/go/generated/examples.json +++ b/sdk/go/generated/examples.json @@ -22,7 +22,18 @@ }, "BotOperations_getBot": { "usage": "response, err := client.Bots.GetBot(ctx, int32(1738816))", - "output": "BotResponse{ID: int32, Webhook: BotWebhook{Name: string, Nickname: string, OutgoingURL: *string, Events: []BotEventName, TriggerOn: BotTriggerOn, Commands: []string, Scopes: []string, Template: *string, TemplateEngine: BotTemplateEngine, ChallengeKey: *string, LinkPreviewEnabled: bool, IgnoreSelfMessages: bool, EventsHistoryEnabled: bool, SingleChat: bool, CanEdit: []BotCanEdit, WhoCanAdd: BotWhoCanAdd}}" + "output": "BotResponse{ID: int32, Name: string, Nickname: string, AvatarURL: *string, CreatorID: *int32, CreatedAt: string, AuthorizedUsersCount: int32, LastUsedAt: *string, Webhook: BotWebhook{Name: string, Nickname: string, OutgoingURL: *string, Events: []BotEventName, TriggerOn: BotTriggerOn, Commands: []string, Scopes: []string, Template: *string, TemplateEngine: BotTemplateEngine, ChallengeKey: *string, LinkPreviewEnabled: bool, IgnoreSelfMessages: bool, EventsHistoryEnabled: bool, SingleChat: bool, CanEdit: []BotCanEdit, WhoCanAdd: BotWhoCanAdd, Kind: *BotWebhookKind, UnfurlDomains: []string, LastRequestAt: *string}, OAuthClientEnabled: bool, OAuthClient: *BotOAuthClient{ClientID: string, ClientSecretPreview: string, Confidential: bool, RedirectUris: []string, Scopes: []string}, Promo: *BotPromo{Description: *string, Published: bool, PromoImages: []BotPromoImage{Key: string, URL: string}}, Permissions: BotPermissions{UpdateOAuthClient: bool, RecreateToken: bool, Destroy: bool}, ClientSecret: *string}" + }, + "BotOperations_getBotScopes": { + "usage": "response, err := client.Bots.GetBotScopes(ctx, int32(1738816))", + "output": "BotScopeCatalog{Scopes: []BotScopeCatalogItem{ID: string, Title: string, Group: string, Preset: []string}, Groups: []BotScopeCatalogGroup{ID: string, Title: string, Description: string}, Presets: []BotScopeCatalogPreset{ID: string, Title: string}}" + }, + "BotOperations_listBotTokens": { + "usage": "params := &ListBotTokensParams{\n\tLimit: Ptr(int32(1)),\n\tCursor: Ptr(\"eyJpZCI6NDgyN30\"),\n}\nresponse, err := client.Bots.ListBotTokens(ctx, int32(1738816), params)", + "output": "ListBotTokensResponse{Data: []BotAccessToken, Meta: PaginationMeta}", + "imports": [ + "ListBotTokensParams" + ] }, "CompanyBotOperations_listCompanyBots": { "usage": "params := &ListCompanyBotsParams{\n\tQuery: Ptr(\"задач\"),\n\tLimit: Ptr(int32(1)),\n\tCursor: Ptr(\"eyJpZCI6MTczODgxNn0\"),\n}\nresponse, err := client.Bots.ListCompanyBots(ctx, params)", @@ -46,49 +57,80 @@ }, "BotOperations_selfRecreateBotToken": { "usage": "response, err := client.Bots.SelfRecreateBotToken(ctx)", - "output": "BotCreateResponse{ID: int32, Webhook: BotWebhook{Name: string, Nickname: string, OutgoingURL: *string, Events: []BotEventName, TriggerOn: BotTriggerOn, Commands: []string, Scopes: []string, Template: *string, TemplateEngine: BotTemplateEngine, ChallengeKey: *string, LinkPreviewEnabled: bool, IgnoreSelfMessages: bool, EventsHistoryEnabled: bool, SingleChat: bool, CanEdit: []BotCanEdit, WhoCanAdd: BotWhoCanAdd}, AccessToken: string}" + "output": "BotSelfTokenResponse{ID: int32, OAuthClient: *BotOAuthClient{ClientID: string, ClientSecretPreview: string, Confidential: bool, RedirectUris: []string, Scopes: []string}, Webhook: BotSelfWebhook{Name: string, Nickname: string, OutgoingURL: *string, Events: []BotEventName, TriggerOn: BotTriggerOn, Commands: []string, Scopes: []string, Template: *string, TemplateEngine: BotTemplateEngine, ChallengeKey: *string, LinkPreviewEnabled: bool, IgnoreSelfMessages: bool, EventsHistoryEnabled: bool, SingleChat: bool, CanEdit: []BotCanEdit, WhoCanAdd: BotWhoCanAdd}, AccessToken: string}" }, "BotOperations_createBot": { - "usage": "request := BotCreateRequest{\n\tWebhook: BotCreateRequestWebhook{\n\t\tName: \"Бот задач\",\n\t\tNickname: Ptr(\"tasks_bot\"),\n\t\tOutgoingURL: Ptr(\"https://www.website.com/tasks/new\"),\n\t\tEvents: []BotEventName{BotEventNameMessageNew},\n\t\tTriggerOn: Ptr(BotTriggerOnCommands),\n\t\tCommands: []string{\"example\"},\n\t\tScopes: []string{\"example\"},\n\t\tTemplate: Ptr(\"Заказ от {{ client }} на сумму {{ amount }} ₽\"),\n\t\tTemplateEngine: Ptr(BotTemplateEngineLiquid),\n\t\tChallengeKey: Ptr(\"challenge\"),\n\t\tLinkPreviewEnabled: Ptr(true),\n\t\tIgnoreSelfMessages: Ptr(false),\n\t\tEventsHistoryEnabled: Ptr(false),\n\t\tWhoCanAdd: Ptr(BotWhoCanAddCreator),\n\t\tCanEdit: []BotCanEdit{BotCanEditAdmin},\n\t\tSingleChat: Ptr(false),\n\t},\n}\nresponse, err := client.Bots.CreateBot(ctx, request)", - "output": "BotCreateResponse{ID: int32, Webhook: BotWebhook{Name: string, Nickname: string, OutgoingURL: *string, Events: []BotEventName, TriggerOn: BotTriggerOn, Commands: []string, Scopes: []string, Template: *string, TemplateEngine: BotTemplateEngine, ChallengeKey: *string, LinkPreviewEnabled: bool, IgnoreSelfMessages: bool, EventsHistoryEnabled: bool, SingleChat: bool, CanEdit: []BotCanEdit, WhoCanAdd: BotWhoCanAdd}, AccessToken: string}", + "usage": "request := BotCreateRequest{\n\tEmpty: Ptr(false),\n\tWebhook: BotCreateRequestWebhook{\n\t\tName: \"Бот задач\",\n\t\tNickname: Ptr(\"tasks_bot\"),\n\t\tOutgoingURL: Ptr(\"https://www.website.com/tasks/new\"),\n\t\tEvents: []BotEventName{BotEventNameMessageNew},\n\t\tTriggerOn: Ptr(BotTriggerOnCommands),\n\t\tCommands: []string{\"example\"},\n\t\tScopes: []string{\"example\"},\n\t\tTemplate: Ptr(\"Заказ от {{ client }} на сумму {{ amount }} ₽\"),\n\t\tTemplateEngine: Ptr(BotTemplateEngineLiquid),\n\t\tChallengeKey: Ptr(\"challenge\"),\n\t\tLinkPreviewEnabled: Ptr(true),\n\t\tIgnoreSelfMessages: Ptr(false),\n\t\tEventsHistoryEnabled: Ptr(false),\n\t\tWhoCanAdd: Ptr(BotWhoCanAddCreator),\n\t\tCanEdit: []BotCanEdit{BotCanEditAdmin},\n\t\tSingleChat: Ptr(false),\n\t\tKind: Ptr(BotWebhookKindSimple),\n\t\tUnfurlDomains: []string{\"example\"},\n\t},\n\tOAuthClient: Ptr(BotOAuthClientRequest{\n\t\tConfidential: Ptr(true),\n\t\tRedirectUris: []string{\"example\"},\n\t\tScopes: []string{\"example\"},\n\t}),\n\tPromo: Ptr(BotPromoRequest{\n\t\tDescription: Ptr(\"Собирает сводку по задачам Jira и присылает её в чат\"),\n\t\tPublished: Ptr(true),\n\t\tPromoImages: []string{\"example\"},\n\t}),\n}\nresponse, err := client.Bots.CreateBot(ctx, request)", + "output": "BotCreateResponse{ID: int32, Name: string, Nickname: string, AvatarURL: *string, CreatorID: *int32, CreatedAt: string, AuthorizedUsersCount: int32, LastUsedAt: *string, Webhook: BotWebhook{Name: string, Nickname: string, OutgoingURL: *string, Events: []BotEventName, TriggerOn: BotTriggerOn, Commands: []string, Scopes: []string, Template: *string, TemplateEngine: BotTemplateEngine, ChallengeKey: *string, LinkPreviewEnabled: bool, IgnoreSelfMessages: bool, EventsHistoryEnabled: bool, SingleChat: bool, CanEdit: []BotCanEdit, WhoCanAdd: BotWhoCanAdd, Kind: *BotWebhookKind, UnfurlDomains: []string, LastRequestAt: *string}, OAuthClientEnabled: bool, OAuthClient: *BotOAuthClient{ClientID: string, ClientSecretPreview: string, Confidential: bool, RedirectUris: []string, Scopes: []string}, Promo: *BotPromo{Description: *string, Published: bool, PromoImages: []BotPromoImage{Key: string, URL: string}}, Permissions: BotPermissions{UpdateOAuthClient: bool, RecreateToken: bool, Destroy: bool}, ClientSecret: *string, AccessToken: *string}", "imports": [ "BotCanEdit", "BotCreateRequest", "BotCreateRequestWebhook", "BotEventName", + "BotOAuthClientRequest", + "BotPromoRequest", "BotTemplateEngine", "BotTriggerOn", + "BotWebhookKind", "BotWhoCanAdd" ] }, "BotOperations_recreateBotToken": { "usage": "response, err := client.Bots.RecreateBotToken(ctx, int32(1738816))", - "output": "BotCreateResponse{ID: int32, Webhook: BotWebhook{Name: string, Nickname: string, OutgoingURL: *string, Events: []BotEventName, TriggerOn: BotTriggerOn, Commands: []string, Scopes: []string, Template: *string, TemplateEngine: BotTemplateEngine, ChallengeKey: *string, LinkPreviewEnabled: bool, IgnoreSelfMessages: bool, EventsHistoryEnabled: bool, SingleChat: bool, CanEdit: []BotCanEdit, WhoCanAdd: BotWhoCanAdd}, AccessToken: string}" + "output": "BotCreateResponse{ID: int32, Name: string, Nickname: string, AvatarURL: *string, CreatorID: *int32, CreatedAt: string, AuthorizedUsersCount: int32, LastUsedAt: *string, Webhook: BotWebhook{Name: string, Nickname: string, OutgoingURL: *string, Events: []BotEventName, TriggerOn: BotTriggerOn, Commands: []string, Scopes: []string, Template: *string, TemplateEngine: BotTemplateEngine, ChallengeKey: *string, LinkPreviewEnabled: bool, IgnoreSelfMessages: bool, EventsHistoryEnabled: bool, SingleChat: bool, CanEdit: []BotCanEdit, WhoCanAdd: BotWhoCanAdd, Kind: *BotWebhookKind, UnfurlDomains: []string, LastRequestAt: *string}, OAuthClientEnabled: bool, OAuthClient: *BotOAuthClient{ClientID: string, ClientSecretPreview: string, Confidential: bool, RedirectUris: []string, Scopes: []string}, Promo: *BotPromo{Description: *string, Published: bool, PromoImages: []BotPromoImage{Key: string, URL: string}}, Permissions: BotPermissions{UpdateOAuthClient: bool, RecreateToken: bool, Destroy: bool}, ClientSecret: *string, AccessToken: *string}" + }, + "BotOperations_rotateBotClientSecret": { + "usage": "response, err := client.Bots.RotateBotClientSecret(ctx, int32(1738816))", + "output": "BotResponse{ID: int32, Name: string, Nickname: string, AvatarURL: *string, CreatorID: *int32, CreatedAt: string, AuthorizedUsersCount: int32, LastUsedAt: *string, Webhook: BotWebhook{Name: string, Nickname: string, OutgoingURL: *string, Events: []BotEventName, TriggerOn: BotTriggerOn, Commands: []string, Scopes: []string, Template: *string, TemplateEngine: BotTemplateEngine, ChallengeKey: *string, LinkPreviewEnabled: bool, IgnoreSelfMessages: bool, EventsHistoryEnabled: bool, SingleChat: bool, CanEdit: []BotCanEdit, WhoCanAdd: BotWhoCanAdd, Kind: *BotWebhookKind, UnfurlDomains: []string, LastRequestAt: *string}, OAuthClientEnabled: bool, OAuthClient: *BotOAuthClient{ClientID: string, ClientSecretPreview: string, Confidential: bool, RedirectUris: []string, Scopes: []string}, Promo: *BotPromo{Description: *string, Published: bool, PromoImages: []BotPromoImage{Key: string, URL: string}}, Permissions: BotPermissions{UpdateOAuthClient: bool, RecreateToken: bool, Destroy: bool}, ClientSecret: *string}" + }, + "BotOperations_createBotToken": { + "usage": "request := BotTokenCreateRequest{\n\tName: \"Сервер уведомлений\",\n\tScopes: []string{\"example\"},\n}\nresponse, err := client.Bots.CreateBotToken(ctx, int32(1738816), request)", + "output": "BotAccessToken{ID: int64, Token: string, Name: *string, UserID: int64, Scopes: []string, CreatedAt: string, RevokedAt: *string, ExpiresIn: *int32, LastUsedAt: *string, AuthorizedAt: *string}", + "imports": [ + "BotTokenCreateRequest" + ] + }, + "BotOperations_reissueBotToken": { + "usage": "response, err := client.Bots.ReissueBotToken(ctx, int32(1738816), int64(4827))", + "output": "BotAccessToken{ID: int64, Token: string, Name: *string, UserID: int64, Scopes: []string, CreatedAt: string, RevokedAt: *string, ExpiresIn: *int32, LastUsedAt: *string, AuthorizedAt: *string}" }, "BotOperations_selfUpdateBotWebhook": { "usage": "request := BotWebhookSelfUpdateRequest{\n\tWebhook: BotWebhookSelfUpdateRequestWebhook{\n\t\tOutgoingURL: \"https://www.website.com/tasks/new\",\n\t},\n}\nresponse, err := client.Bots.SelfUpdateBotWebhook(ctx, request)", - "output": "BotResponse{ID: int32, Webhook: BotWebhook{Name: string, Nickname: string, OutgoingURL: *string, Events: []BotEventName, TriggerOn: BotTriggerOn, Commands: []string, Scopes: []string, Template: *string, TemplateEngine: BotTemplateEngine, ChallengeKey: *string, LinkPreviewEnabled: bool, IgnoreSelfMessages: bool, EventsHistoryEnabled: bool, SingleChat: bool, CanEdit: []BotCanEdit, WhoCanAdd: BotWhoCanAdd}}", + "output": "BotSelfResponse{ID: int32, OAuthClient: *BotOAuthClient{ClientID: string, ClientSecretPreview: string, Confidential: bool, RedirectUris: []string, Scopes: []string}, Webhook: BotSelfWebhook{Name: string, Nickname: string, OutgoingURL: *string, Events: []BotEventName, TriggerOn: BotTriggerOn, Commands: []string, Scopes: []string, Template: *string, TemplateEngine: BotTemplateEngine, ChallengeKey: *string, LinkPreviewEnabled: bool, IgnoreSelfMessages: bool, EventsHistoryEnabled: bool, SingleChat: bool, CanEdit: []BotCanEdit, WhoCanAdd: BotWhoCanAdd}}", "imports": [ "BotWebhookSelfUpdateRequest", "BotWebhookSelfUpdateRequestWebhook" ] }, "BotOperations_updateBot": { - "usage": "request := BotUpdateRequest{\n\tWebhook: BotUpdateRequestWebhook{\n\t\tName: Ptr(\"Бот задач\"),\n\t\tNickname: Ptr(\"tasks_bot\"),\n\t\tOutgoingURL: Ptr(\"https://www.website.com/tasks/new\"),\n\t\tEvents: []BotEventName{BotEventNameMessageNew},\n\t\tTriggerOn: Ptr(BotTriggerOnCommands),\n\t\tCommands: []string{\"example\"},\n\t\tScopes: []string{\"example\"},\n\t\tTemplate: Ptr(\"Заказ от {{ client }} на сумму {{ amount }} ₽\"),\n\t\tTemplateEngine: Ptr(BotTemplateEngineLiquid),\n\t\tChallengeKey: Ptr(\"challenge\"),\n\t\tLinkPreviewEnabled: Ptr(true),\n\t\tIgnoreSelfMessages: Ptr(false),\n\t\tEventsHistoryEnabled: Ptr(false),\n\t\tWhoCanAdd: Ptr(BotWhoCanAddCreator),\n\t\tCanEdit: []BotCanEdit{BotCanEditAdmin},\n\t},\n}\nresponse, err := client.Bots.UpdateBot(ctx, int32(1738816), request)", - "output": "BotResponse{ID: int32, Webhook: BotWebhook{Name: string, Nickname: string, OutgoingURL: *string, Events: []BotEventName, TriggerOn: BotTriggerOn, Commands: []string, Scopes: []string, Template: *string, TemplateEngine: BotTemplateEngine, ChallengeKey: *string, LinkPreviewEnabled: bool, IgnoreSelfMessages: bool, EventsHistoryEnabled: bool, SingleChat: bool, CanEdit: []BotCanEdit, WhoCanAdd: BotWhoCanAdd}}", + "usage": "request := BotUpdateRequest{\n\tWebhook: Ptr(BotUpdateRequestWebhook{\n\t\tName: Ptr(\"Бот задач\"),\n\t\tNickname: Ptr(\"tasks_bot\"),\n\t\tOutgoingURL: Ptr(\"https://www.website.com/tasks/new\"),\n\t\tEvents: []BotEventName{BotEventNameMessageNew},\n\t\tTriggerOn: Ptr(BotTriggerOnCommands),\n\t\tCommands: []string{\"example\"},\n\t\tScopes: []string{\"example\"},\n\t\tTemplate: Ptr(\"Заказ от {{ client }} на сумму {{ amount }} ₽\"),\n\t\tTemplateEngine: Ptr(BotTemplateEngineLiquid),\n\t\tChallengeKey: Ptr(\"challenge\"),\n\t\tLinkPreviewEnabled: Ptr(true),\n\t\tIgnoreSelfMessages: Ptr(false),\n\t\tEventsHistoryEnabled: Ptr(false),\n\t\tWhoCanAdd: Ptr(BotWhoCanAddCreator),\n\t\tCanEdit: []BotCanEdit{BotCanEditAdmin},\n\t\tSingleChat: Ptr(false),\n\t\tKind: Ptr(BotWebhookKindSimple),\n\t\tUnfurlDomains: []string{\"example\"},\n\t}),\n\tOAuthClient: Ptr(BotOAuthClientRequest{\n\t\tConfidential: Ptr(true),\n\t\tRedirectUris: []string{\"example\"},\n\t\tScopes: []string{\"example\"},\n\t}),\n\tPromo: Ptr(BotPromoRequest{\n\t\tDescription: Ptr(\"Собирает сводку по задачам Jira и присылает её в чат\"),\n\t\tPublished: Ptr(true),\n\t\tPromoImages: []string{\"example\"},\n\t}),\n}\nresponse, err := client.Bots.UpdateBot(ctx, int32(1738816), request)", + "output": "BotResponse{ID: int32, Name: string, Nickname: string, AvatarURL: *string, CreatorID: *int32, CreatedAt: string, AuthorizedUsersCount: int32, LastUsedAt: *string, Webhook: BotWebhook{Name: string, Nickname: string, OutgoingURL: *string, Events: []BotEventName, TriggerOn: BotTriggerOn, Commands: []string, Scopes: []string, Template: *string, TemplateEngine: BotTemplateEngine, ChallengeKey: *string, LinkPreviewEnabled: bool, IgnoreSelfMessages: bool, EventsHistoryEnabled: bool, SingleChat: bool, CanEdit: []BotCanEdit, WhoCanAdd: BotWhoCanAdd, Kind: *BotWebhookKind, UnfurlDomains: []string, LastRequestAt: *string}, OAuthClientEnabled: bool, OAuthClient: *BotOAuthClient{ClientID: string, ClientSecretPreview: string, Confidential: bool, RedirectUris: []string, Scopes: []string}, Promo: *BotPromo{Description: *string, Published: bool, PromoImages: []BotPromoImage{Key: string, URL: string}}, Permissions: BotPermissions{UpdateOAuthClient: bool, RecreateToken: bool, Destroy: bool}, ClientSecret: *string}", "imports": [ "BotCanEdit", "BotEventName", + "BotOAuthClientRequest", + "BotPromoRequest", "BotTemplateEngine", "BotTriggerOn", "BotUpdateRequest", "BotUpdateRequestWebhook", + "BotWebhookKind", "BotWhoCanAdd" ] }, + "BotOperations_updateBotToken": { + "usage": "request := BotTokenUpdateRequest{\n\tName: Ptr(\"Сервер уведомлений\"),\n\tScopes: []string{\"example\"},\n}\nresponse, err := client.Bots.UpdateBotToken(ctx, int32(1738816), int64(4827), request)", + "output": "BotAccessToken{ID: int64, Token: string, Name: *string, UserID: int64, Scopes: []string, CreatedAt: string, RevokedAt: *string, ExpiresIn: *int32, LastUsedAt: *string, AuthorizedAt: *string}", + "imports": [ + "BotTokenUpdateRequest" + ] + }, "BotOperations_deleteBot": { "usage": "client.Bots.DeleteBot(ctx, int32(1738816))" }, + "BotOperations_deleteBotToken": { + "usage": "client.Bots.DeleteBotToken(ctx, int32(1738816), int64(4827))" + }, "BotOperations_deleteWebhookEvent": { "usage": "client.Bots.DeleteWebhookEvent(ctx, \"01KAJZ2XDSS2S3DSW9EXJZ0TBV\")" }, @@ -146,6 +188,12 @@ "ChatOperations_unarchiveChat": { "usage": "client.Chats.UnarchiveChat(ctx, int32(334))" }, + "ChatOperations_markChatUnread": { + "usage": "request := MarkChatUnreadRequest{\n\tMessageID: Ptr(int32(1194275)),\n}\nclient.Chats.MarkChatUnread(ctx, int32(334), request)", + "imports": [ + "MarkChatUnreadRequest" + ] + }, "ChatMemberOperations_listMembers": { "usage": "params := &ListMembersParams{\n\tRole: Ptr(ChatMemberRoleFilterAll),\n\tLimit: Ptr(int32(1)),\n\tCursor: Ptr(\"eyJpZCI6MTAsImRpciI6ImFzYyJ9\"),\n}\nresponse, err := client.Members.ListMembers(ctx, int32(334), params)", "output": "ListMembersResponse{Data: []User, Meta: PaginationMeta}", diff --git a/sdk/go/generated/types.go b/sdk/go/generated/types.go index 096bc7ada..1b8378042 100644 --- a/sdk/go/generated/types.go +++ b/sdk/go/generated/types.go @@ -54,6 +54,11 @@ const ( AuditEventKeyBotTokenRecreated AuditEventKey = "bot_token_recreated" // Токен бота перевыпущен (ротация) AuditEventKeyBotDeleted AuditEventKey = "bot_deleted" // Бот удалён AuditEventKeyBotOAuthClientUpdated AuditEventKey = "bot_oauth_client_updated" // Изменены параметры OAuth-клиента бота + AuditEventKeyBotOAuthClientDisabled AuditEventKey = "bot_oauth_client_disabled" // У бота выключена авторизация от имени сотрудника + AuditEventKeyBotOAuthClientSecretRotated AuditEventKey = "bot_oauth_client_secret_rotated" // Обновлён секрет OAuth-клиента бота + AuditEventKeyBotTokenCreated AuditEventKey = "bot_token_created" // Выпущен токен бота + AuditEventKeyBotTokenUpdated AuditEventKey = "bot_token_updated" // Изменены имя или скоупы токена бота + AuditEventKeyBotTokenReissued AuditEventKey = "bot_token_reissued" // Отдельный токен бота перевыпущен AuditEventKeyOAuthAuthorizationGranted AuditEventKey = "oauth_authorization_granted" // Пользователь выдал OAuth-клиенту доступ к своим данным AuditEventKeyOAuthAuthorizationRevoked AuditEventKey = "oauth_authorization_revoked" // Доступ OAuth-клиента к данным пользователя отозван AuditEventKeyOAuthDeviceAuthorizationApproved AuditEventKey = "oauth_device_authorization_approved" // Сотрудник подтвердил вход приложения с устройства @@ -109,13 +114,21 @@ const ( BotTriggerOnUnfurl BotTriggerOn = "unfurl" // На развёртывание ссылок (link previews) ) +type BotWebhookKind string + +const ( + BotWebhookKindSimple BotWebhookKind = "simple" // Свой формат: сообщение собирается из тела запроса по шаблону бота + BotWebhookKindGitlab BotWebhookKind = "gitlab" // GitLab: Пачка сама разбирает запрос и собирает сообщение + BotWebhookKindGrafana BotWebhookKind = "grafana" // Grafana: Пачка сама разбирает запрос и собирает сообщение +) + type BotWhoCanAdd string const ( BotWhoCanAddCreator BotWhoCanAdd = "creator" // Только создатель бота BotWhoCanAddCreatorAdmin BotWhoCanAdd = "creator_admin" // Создатель и администраторы компании BotWhoCanAddCreatorAdminUser BotWhoCanAdd = "creator_admin_user" // Создатель, администраторы и участники компании - BotWhoCanAddAnyone BotWhoCanAdd = "anyone" // Любой пользователь, в том числе гости + BotWhoCanAddAnyone BotWhoCanAdd = "anyone" // Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей ) type ChatActivity string @@ -255,6 +268,7 @@ const ( OAuthScopeChatsRead OAuthScope = "chats:read" // Просмотр чатов и списка чатов OAuthScopeChatsCreate OAuthScope = "chats:create" // Создание новых чатов OAuthScopeChatsUpdate OAuthScope = "chats:update" // Изменение настроек чата + OAuthScopeChatsMarkUnread OAuthScope = "chats:mark_unread" // Отметка чатов непрочитанными OAuthScopeChatsArchive OAuthScope = "chats:archive" // Архивация и разархивация чатов OAuthScopeChatsLeave OAuthScope = "chats:leave" // Выход из чатов OAuthScopeChatMembersRead OAuthScope = "chat_members:read" // Просмотр участников чата @@ -432,6 +446,8 @@ const ( ValidationErrorCodeDraftTypeChangeForbidden ValidationErrorCode = "draft_type_change_forbidden" // Отложенное сообщение нельзя превратить обратно в черновик ValidationErrorCodeConfidentialDownloadDenied ValidationErrorCode = "confidential_download_denied" // Скачивание файла запрещено: нужен запрос из безопасного контура ValidationErrorCodeDecryptionFailed ValidationErrorCode = "decryption_failed" // Не удалось расшифровать файл + ValidationErrorCodeBotAddDenied ValidationErrorCode = "bot_add_denied" // Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value` + ValidationErrorCodeTimeout ValidationErrorCode = "timeout" // Поиск не уложился по времени: сузьте запрос и повторите ValidationErrorCodeForbidden ValidationErrorCode = "forbidden" // Недостаточно прав для выполнения действия (пояснения вы получите в поле message) ValidationErrorCodePermissionDenied ValidationErrorCode = "permission_denied" // Доступ запрещён (недостаточно прав) ValidationErrorCodeAccessDenied ValidationErrorCode = "access_denied" // Доступ запрещён @@ -519,17 +535,37 @@ type AuditDetailsBot struct { } type AuditDetailsBotOAuthClient struct { + BotID int32 `json:"bot_id"` ClientID string `json:"client_id"` Changes map[string]any `json:"changes"` + ActorID *int32 `json:"actor_id"` +} + +type AuditDetailsBotOAuthClientDisabled struct { + BotID int32 `json:"bot_id"` + ClientID string `json:"client_id"` + DeletedAccessTokensCount int32 `json:"deleted_access_tokens_count"` + DeletedAccessGrantsCount int32 `json:"deleted_access_grants_count"` + ActorID *int32 `json:"actor_id"` +} + +type AuditDetailsBotOAuthClientSecretRotated struct { + BotID int32 `json:"bot_id"` + ClientID string `json:"client_id"` + ActorID *int32 `json:"actor_id"` } type AuditDetailsBotScopes struct { + BotID int32 `json:"bot_id"` AddedScopes []string `json:"added_scopes"` RemovedScopes []string `json:"removed_scopes"` + ActorID *int32 `json:"actor_id"` } type AuditDetailsBotWebhookSettings struct { + BotID int32 `json:"bot_id"` Changes map[string]any `json:"changes"` + ActorID *int32 `json:"actor_id"` } type AuditDetailsChatId struct { @@ -662,6 +698,19 @@ type AvatarData struct { ImageURL string `json:"image_url"` } +type BotAccessToken struct { + ID int64 `json:"id"` + Token string `json:"token"` + UserID int64 `json:"user_id"` + Scopes []string `json:"scopes"` + CreatedAt time.Time `json:"created_at"` + Name *string `json:"name"` + RevokedAt *string `json:"revoked_at"` + ExpiresIn *int32 `json:"expires_in"` + LastUsedAt *string `json:"last_used_at"` + AuthorizedAt *string `json:"authorized_at"` +} + type BotCreateRequestWebhook struct { Name string `json:"name"` Nickname *string `json:"nickname,omitempty"` @@ -679,6 +728,8 @@ type BotCreateRequestWebhook struct { WhoCanAdd *BotWhoCanAdd `json:"who_can_add,omitempty"` CanEdit []BotCanEdit `json:"can_edit,omitempty"` SingleChat *bool `json:"single_chat,omitempty"` + Kind *BotWebhookKind `json:"kind,omitempty"` + UnfurlDomains []string `json:"unfurl_domains,omitempty"` } func (m BotCreateRequestWebhook) MarshalJSON() ([]byte, error) { @@ -703,22 +754,222 @@ func (m BotCreateRequestWebhook) MarshalJSON() ([]byte, error) { if m.CanEdit != nil { raw["can_edit"] = m.CanEdit } + if m.UnfurlDomains != nil { + raw["unfurl_domains"] = m.UnfurlDomains + } return json.Marshal(raw) } type BotCreateRequest struct { - Webhook BotCreateRequestWebhook `json:"webhook"` + Webhook BotCreateRequestWebhook `json:"webhook"` + Empty *bool `json:"empty,omitempty"` + OAuthClient *BotOAuthClientRequest `json:"oauth_client,omitempty"` + Promo *BotPromoRequest `json:"promo,omitempty"` } type BotCreateResponse struct { - ID int32 `json:"id"` - Webhook BotWebhook `json:"webhook"` - AccessToken string `json:"access_token"` + ID int32 `json:"id"` + Name string `json:"name"` + Nickname string `json:"nickname"` + CreatedAt time.Time `json:"created_at"` + AuthorizedUsersCount int32 `json:"authorized_users_count"` + Webhook BotWebhook `json:"webhook"` + OAuthClientEnabled bool `json:"oauth_client_enabled"` + Permissions BotPermissions `json:"permissions"` + AvatarURL *string `json:"avatar_url"` + CreatorID *int32 `json:"creator_id"` + LastUsedAt *string `json:"last_used_at"` + OAuthClient *BotOAuthClient `json:"oauth_client"` + Promo *BotPromo `json:"promo"` + ClientSecret *string `json:"client_secret,omitempty"` + AccessToken *string `json:"access_token,omitempty"` +} + +type BotOAuthClient struct { + ClientID string `json:"client_id"` + ClientSecretPreview string `json:"client_secret_preview"` + Confidential bool `json:"confidential"` + RedirectUris []string `json:"redirect_uris"` + Scopes []string `json:"scopes"` +} + +type BotOAuthClientRequest struct { + Confidential *bool `json:"confidential,omitempty"` + RedirectUris []string `json:"redirect_uris,omitempty"` + Scopes []string `json:"scopes,omitempty"` +} + +func (m BotOAuthClientRequest) MarshalJSON() ([]byte, error) { + type Alias BotOAuthClientRequest + data, err := json.Marshal(Alias(m)) + if err != nil { + return nil, err + } + var raw map[string]any + if err := json.Unmarshal(data, &raw); err != nil { + return nil, err + } + if m.RedirectUris != nil { + raw["redirect_uris"] = m.RedirectUris + } + if m.Scopes != nil { + raw["scopes"] = m.Scopes + } + return json.Marshal(raw) +} + +type BotPermissions struct { + UpdateOAuthClient bool `json:"update_oauth_client"` + RecreateToken bool `json:"recreate_token"` + Destroy bool `json:"destroy"` +} + +type BotPromo struct { + Published bool `json:"published"` + PromoImages []BotPromoImage `json:"promo_images"` + Description *string `json:"description"` +} + +type BotPromoImage struct { + Key string `json:"key"` + URL string `json:"url"` +} + +type BotPromoRequest struct { + Description *string `json:"description,omitempty"` + Published *bool `json:"published,omitempty"` + PromoImages []string `json:"promo_images,omitempty"` +} + +func (m BotPromoRequest) MarshalJSON() ([]byte, error) { + type Alias BotPromoRequest + data, err := json.Marshal(Alias(m)) + if err != nil { + return nil, err + } + var raw map[string]any + if err := json.Unmarshal(data, &raw); err != nil { + return nil, err + } + if m.PromoImages != nil { + raw["promo_images"] = m.PromoImages + } + return json.Marshal(raw) } type BotResponse struct { - ID int32 `json:"id"` - Webhook BotWebhook `json:"webhook"` + ID int32 `json:"id"` + Name string `json:"name"` + Nickname string `json:"nickname"` + CreatedAt time.Time `json:"created_at"` + AuthorizedUsersCount int32 `json:"authorized_users_count"` + Webhook BotWebhook `json:"webhook"` + OAuthClientEnabled bool `json:"oauth_client_enabled"` + Permissions BotPermissions `json:"permissions"` + AvatarURL *string `json:"avatar_url"` + CreatorID *int32 `json:"creator_id"` + LastUsedAt *string `json:"last_used_at"` + OAuthClient *BotOAuthClient `json:"oauth_client"` + Promo *BotPromo `json:"promo"` + ClientSecret *string `json:"client_secret,omitempty"` +} + +type BotScopeCatalog struct { + Scopes []BotScopeCatalogItem `json:"scopes"` + Groups []BotScopeCatalogGroup `json:"groups"` + Presets []BotScopeCatalogPreset `json:"presets"` +} + +type BotScopeCatalogGroup struct { + ID string `json:"id"` + Title string `json:"title"` + Description string `json:"description"` +} + +type BotScopeCatalogItem struct { + ID string `json:"id"` + Title string `json:"title"` + Group string `json:"group"` + Preset []string `json:"preset"` +} + +type BotScopeCatalogPreset struct { + ID string `json:"id"` + Title string `json:"title"` +} + +type BotSelfResponse struct { + ID int32 `json:"id"` + Webhook BotSelfWebhook `json:"webhook"` + OAuthClient *BotOAuthClient `json:"oauth_client"` +} + +type BotSelfTokenResponse struct { + ID int32 `json:"id"` + Webhook BotSelfWebhook `json:"webhook"` + AccessToken string `json:"access_token"` + OAuthClient *BotOAuthClient `json:"oauth_client"` +} + +type BotSelfWebhook struct { + Name string `json:"name"` + Nickname string `json:"nickname"` + Events []BotEventName `json:"events"` + TriggerOn BotTriggerOn `json:"trigger_on"` + Commands []string `json:"commands"` + Scopes []string `json:"scopes"` + TemplateEngine BotTemplateEngine `json:"template_engine"` + LinkPreviewEnabled bool `json:"link_preview_enabled"` + IgnoreSelfMessages bool `json:"ignore_self_messages"` + EventsHistoryEnabled bool `json:"events_history_enabled"` + SingleChat bool `json:"single_chat"` + CanEdit []BotCanEdit `json:"can_edit"` + WhoCanAdd BotWhoCanAdd `json:"who_can_add"` + OutgoingURL *string `json:"outgoing_url"` + Template *string `json:"template"` + ChallengeKey *string `json:"challenge_key"` +} + +type BotTokenCreateRequest struct { + Name string `json:"name"` + Scopes []string `json:"scopes,omitempty"` +} + +func (m BotTokenCreateRequest) MarshalJSON() ([]byte, error) { + type Alias BotTokenCreateRequest + data, err := json.Marshal(Alias(m)) + if err != nil { + return nil, err + } + var raw map[string]any + if err := json.Unmarshal(data, &raw); err != nil { + return nil, err + } + if m.Scopes != nil { + raw["scopes"] = m.Scopes + } + return json.Marshal(raw) +} + +type BotTokenUpdateRequest struct { + Name *string `json:"name,omitempty"` + Scopes []string `json:"scopes,omitempty"` +} + +func (m BotTokenUpdateRequest) MarshalJSON() ([]byte, error) { + type Alias BotTokenUpdateRequest + data, err := json.Marshal(Alias(m)) + if err != nil { + return nil, err + } + var raw map[string]any + if err := json.Unmarshal(data, &raw); err != nil { + return nil, err + } + if m.Scopes != nil { + raw["scopes"] = m.Scopes + } + return json.Marshal(raw) } type BotUpdateRequestWebhook struct { @@ -737,6 +988,9 @@ type BotUpdateRequestWebhook struct { EventsHistoryEnabled *bool `json:"events_history_enabled,omitempty"` WhoCanAdd *BotWhoCanAdd `json:"who_can_add,omitempty"` CanEdit []BotCanEdit `json:"can_edit,omitempty"` + SingleChat *bool `json:"single_chat,omitempty"` + Kind *BotWebhookKind `json:"kind,omitempty"` + UnfurlDomains []string `json:"unfurl_domains,omitempty"` } func (m BotUpdateRequestWebhook) MarshalJSON() ([]byte, error) { @@ -761,11 +1015,16 @@ func (m BotUpdateRequestWebhook) MarshalJSON() ([]byte, error) { if m.CanEdit != nil { raw["can_edit"] = m.CanEdit } + if m.UnfurlDomains != nil { + raw["unfurl_domains"] = m.UnfurlDomains + } return json.Marshal(raw) } type BotUpdateRequest struct { - Webhook BotUpdateRequestWebhook `json:"webhook"` + Webhook *BotUpdateRequestWebhook `json:"webhook,omitempty"` + OAuthClient *BotOAuthClientRequest `json:"oauth_client"` + Promo *BotPromoRequest `json:"promo,omitempty"` } type BotWebhook struct { @@ -782,9 +1041,12 @@ type BotWebhook struct { SingleChat bool `json:"single_chat"` CanEdit []BotCanEdit `json:"can_edit"` WhoCanAdd BotWhoCanAdd `json:"who_can_add"` + UnfurlDomains []string `json:"unfurl_domains"` OutgoingURL *string `json:"outgoing_url"` Template *string `json:"template"` ChallengeKey *string `json:"challenge_key"` + Kind *BotWebhookKind `json:"kind"` + LastRequestAt *string `json:"last_request_at"` } type BotWebhookSelfUpdateRequestWebhook struct { @@ -878,8 +1140,9 @@ type ChatUpdateRequest struct { } type CompanyBotResponse struct { - ID int32 `json:"id"` - Webhook CompanyBotWebhook `json:"webhook"` + ID int32 `json:"id"` + Webhook CompanyBotWebhook `json:"webhook"` + OAuthClient *BotOAuthClient `json:"oauth_client"` } type CompanyBotWebhook struct { @@ -1150,14 +1413,21 @@ type LinkPreviewsRequest struct { } type LinkSharedWebhookPayload struct { - Type string `json:"type"` // always "message" - Event string `json:"event"` // always "link_shared" - ChatID int32 `json:"chat_id"` - MessageID int32 `json:"message_id"` - Links []WebhookLink `json:"links"` - UserID int32 `json:"user_id"` - CreatedAt time.Time `json:"created_at"` - WebhookTimestamp int32 `json:"webhook_timestamp"` + Type string `json:"type"` // always "message" + Event string `json:"event"` // always "link_shared" + ChatID int32 `json:"chat_id"` + MessageID int32 `json:"message_id"` + Links []WebhookLink `json:"links"` + UserID int32 `json:"user_id"` + EntityType MessageEntityType `json:"entity_type"` + CreatedAt time.Time `json:"created_at"` + WebhookTimestamp int32 `json:"webhook_timestamp"` + EntityID *int32 `json:"entity_id"` + Thread *WebhookMessageThread `json:"thread"` +} + +type MarkChatUnreadRequest struct { + MessageID *int32 `json:"message_id,omitempty"` } type MessageThread struct { @@ -1929,6 +2199,8 @@ type AuditEventDetailsUnion struct { AuditDetailsVideoCallStarted *AuditDetailsVideoCallStarted AuditDetailsVideoCallFinished *AuditDetailsVideoCallFinished AuditDetailsVideoCallRecording *AuditDetailsVideoCallRecording + AuditDetailsBotOAuthClientSecretRotated *AuditDetailsBotOAuthClientSecretRotated + AuditDetailsBotOAuthClientDisabled *AuditDetailsBotOAuthClientDisabled Raw json.RawMessage } @@ -1948,9 +2220,9 @@ var auditEventDetailsUnionShapes = []unionMemberShape{ {keys: map[string]struct{}{"dlp_rule_id": {}, "dlp_rule_name": {}, "message_id": {}, "chat_id": {}, "user_id": {}, "action_message": {}, "conditions_matched": {}}}, {keys: map[string]struct{}{"search_type": {}, "query_present": {}, "cursor_present": {}, "limit": {}, "filters": {}}}, {keys: map[string]struct{}{"bot_id": {}, "actor_id": {}}}, - {keys: map[string]struct{}{"added_scopes": {}, "removed_scopes": {}}}, - {keys: map[string]struct{}{"changes": {}}}, - {keys: map[string]struct{}{"client_id": {}, "changes": {}}}, + {keys: map[string]struct{}{"bot_id": {}, "actor_id": {}, "added_scopes": {}, "removed_scopes": {}}}, + {keys: map[string]struct{}{"bot_id": {}, "actor_id": {}, "changes": {}}}, + {keys: map[string]struct{}{"bot_id": {}, "actor_id": {}, "client_id": {}, "changes": {}}}, {keys: map[string]struct{}{"client_id": {}, "scopes": {}}}, {keys: map[string]struct{}{"client_id": {}, "revoked_tokens_count": {}}}, {keys: map[string]struct{}{"client_id": {}, "scopes": {}}}, @@ -1958,6 +2230,8 @@ var auditEventDetailsUnionShapes = []unionMemberShape{ {keys: map[string]struct{}{"chat_id": {}, "started_message_id": {}}}, {keys: map[string]struct{}{"chat_id": {}, "started_message_id": {}, "duration": {}, "max_members_count": {}}}, {keys: map[string]struct{}{"chat_id": {}, "started_message_id": {}, "recording_id": {}, "file_id": {}, "duration": {}, "size": {}}}, + {keys: map[string]struct{}{"bot_id": {}, "actor_id": {}, "client_id": {}}}, + {keys: map[string]struct{}{"bot_id": {}, "actor_id": {}, "client_id": {}, "deleted_access_tokens_count": {}, "deleted_access_grants_count": {}}}, } // UnmarshalJSON decodes AuditEventDetailsUnion, which carries no discriminator field: @@ -2041,6 +2315,12 @@ func (u *AuditEventDetailsUnion) UnmarshalJSON(data []byte) error { case 24: u.AuditDetailsVideoCallRecording = &AuditDetailsVideoCallRecording{} return json.Unmarshal(data, u.AuditDetailsVideoCallRecording) + case 25: + u.AuditDetailsBotOAuthClientSecretRotated = &AuditDetailsBotOAuthClientSecretRotated{} + return json.Unmarshal(data, u.AuditDetailsBotOAuthClientSecretRotated) + case 26: + u.AuditDetailsBotOAuthClientDisabled = &AuditDetailsBotOAuthClientDisabled{} + return json.Unmarshal(data, u.AuditDetailsBotOAuthClientDisabled) } return nil } @@ -2121,6 +2401,12 @@ func (u AuditEventDetailsUnion) MarshalJSON() ([]byte, error) { if u.AuditDetailsVideoCallRecording != nil { return json.Marshal(u.AuditDetailsVideoCallRecording) } + if u.AuditDetailsBotOAuthClientSecretRotated != nil { + return json.Marshal(u.AuditDetailsBotOAuthClientSecretRotated) + } + if u.AuditDetailsBotOAuthClientDisabled != nil { + return json.Marshal(u.AuditDetailsBotOAuthClientDisabled) + } if len(u.Raw) > 0 { return u.Raw, nil } @@ -2319,6 +2605,11 @@ type ListBotsParams struct { Cursor *string } +type ListBotTokensParams struct { + Limit *int32 + Cursor *string +} + type ListChatsParams struct { Sort *ChatSortField Order *SortOrder @@ -2472,6 +2763,11 @@ type ListBotsResponse struct { Meta PaginationMeta `json:"meta"` } +type ListBotTokensResponse struct { + Data []BotAccessToken `json:"data"` + Meta PaginationMeta `json:"meta"` +} + type ListChatsResponse struct { Data []Chat `json:"data"` Meta PaginationMeta `json:"meta"` diff --git a/sdk/kotlin/generated/src/main/kotlin/com/pachca/Client.kt b/sdk/kotlin/generated/src/main/kotlin/com/pachca/Client.kt index f4c0c93ad..70ee55fc2 100644 --- a/sdk/kotlin/generated/src/main/kotlin/com/pachca/Client.kt +++ b/sdk/kotlin/generated/src/main/kotlin/com/pachca/Client.kt @@ -137,6 +137,22 @@ interface BotsService { throw NotImplementedError("Bots.getBot is not implemented") } + suspend fun getBotScopes(id: Int): BotScopeCatalog { + throw NotImplementedError("Bots.getBotScopes is not implemented") + } + + suspend fun listBotTokens( + id: Int, + limit: Int? = null, + cursor: String? = null, + ): ListBotTokensResponse { + throw NotImplementedError("Bots.listBotTokens is not implemented") + } + + suspend fun listBotTokensAll(id: Int, limit: Int? = null): List { + throw NotImplementedError("Bots.listBotTokensAll is not implemented") + } + suspend fun listCompanyBots( query: String? = null, limit: Int? = null, @@ -157,7 +173,7 @@ interface BotsService { throw NotImplementedError("Bots.getWebhookEventsAll is not implemented") } - suspend fun selfRecreateBotToken(): BotCreateResponse { + suspend fun selfRecreateBotToken(): BotSelfTokenResponse { throw NotImplementedError("Bots.selfRecreateBotToken is not implemented") } @@ -169,7 +185,19 @@ interface BotsService { throw NotImplementedError("Bots.recreateBotToken is not implemented") } - suspend fun selfUpdateBotWebhook(request: BotWebhookSelfUpdateRequest): BotResponse { + suspend fun rotateBotClientSecret(id: Int): BotResponse { + throw NotImplementedError("Bots.rotateBotClientSecret is not implemented") + } + + suspend fun createBotToken(id: Int, request: BotTokenCreateRequest): BotAccessToken { + throw NotImplementedError("Bots.createBotToken is not implemented") + } + + suspend fun reissueBotToken(id: Int, tokenId: Long): BotAccessToken { + throw NotImplementedError("Bots.reissueBotToken is not implemented") + } + + suspend fun selfUpdateBotWebhook(request: BotWebhookSelfUpdateRequest): BotSelfResponse { throw NotImplementedError("Bots.selfUpdateBotWebhook is not implemented") } @@ -177,10 +205,22 @@ interface BotsService { throw NotImplementedError("Bots.updateBot is not implemented") } + suspend fun updateBotToken( + id: Int, + tokenId: Long, + request: BotTokenUpdateRequest, + ): BotAccessToken { + throw NotImplementedError("Bots.updateBotToken is not implemented") + } + suspend fun deleteBot(id: Int) { throw NotImplementedError("Bots.deleteBot is not implemented") } + suspend fun deleteBotToken(id: Int, tokenId: Long) { + throw NotImplementedError("Bots.deleteBotToken is not implemented") + } + suspend fun deleteWebhookEvent(id: String) { throw NotImplementedError("Bots.deleteWebhookEvent is not implemented") } @@ -230,6 +270,45 @@ class BotsServiceImpl internal constructor( } } + override suspend fun getBotScopes(id: Int): BotScopeCatalog { + val response = client.get("$baseUrl/bots/$id/scopes") + return when (response.status.value) { + 200 -> response.body() + 401 -> throw response.body() + else -> throw response.body() + } + } + + override suspend fun listBotTokens( + id: Int, + limit: Int?, + cursor: String?, + ): ListBotTokensResponse { + val response = client.get("$baseUrl/bots/$id/tokens") { + limit?.let { parameter("limit", it) } + cursor?.let { parameter("cursor", it) } + } + return when (response.status.value) { + 200 -> response.body() + 401 -> throw response.body() + else -> throw response.body() + } + } + + override suspend fun listBotTokensAll(id: Int, limit: Int?): List { + val items = mutableListOf() + var cursor: String? = null + var hasNext = true + while (hasNext) { + val response = listBotTokens(id = id, limit = limit, cursor = cursor) + items.addAll(response.data) + if (response.data.isEmpty()) break + cursor = response.meta.paginate.nextPage + hasNext = response.meta.paginate.hasNext ?: true + } + return items + } + override suspend fun listCompanyBots( query: String?, limit: Int?, @@ -287,10 +366,10 @@ class BotsServiceImpl internal constructor( return items } - override suspend fun selfRecreateBotToken(): BotCreateResponse { + override suspend fun selfRecreateBotToken(): BotSelfTokenResponse { val response = client.post("$baseUrl/bot/recreate_token") return when (response.status.value) { - 200 -> response.body().data + 200 -> response.body().data 401 -> throw response.body() else -> throw response.body() } @@ -317,13 +396,43 @@ class BotsServiceImpl internal constructor( } } - override suspend fun selfUpdateBotWebhook(request: BotWebhookSelfUpdateRequest): BotResponse { + override suspend fun rotateBotClientSecret(id: Int): BotResponse { + val response = client.post("$baseUrl/bots/$id/rotate_client_secret") + return when (response.status.value) { + 200 -> response.body().data + 401 -> throw response.body() + else -> throw response.body() + } + } + + override suspend fun createBotToken(id: Int, request: BotTokenCreateRequest): BotAccessToken { + val response = client.post("$baseUrl/bots/$id/tokens") { + contentType(ContentType.Application.Json) + setBody(request) + } + return when (response.status.value) { + 201 -> response.body().data + 401 -> throw response.body() + else -> throw response.body() + } + } + + override suspend fun reissueBotToken(id: Int, tokenId: Long): BotAccessToken { + val response = client.post("$baseUrl/bots/$id/tokens/$tokenId/reissue") + return when (response.status.value) { + 200 -> response.body().data + 401 -> throw response.body() + else -> throw response.body() + } + } + + override suspend fun selfUpdateBotWebhook(request: BotWebhookSelfUpdateRequest): BotSelfResponse { val response = client.put("$baseUrl/bot/webhook") { contentType(ContentType.Application.Json) setBody(request) } return when (response.status.value) { - 200 -> response.body().data + 200 -> response.body().data 401 -> throw response.body() else -> throw response.body() } @@ -341,6 +450,22 @@ class BotsServiceImpl internal constructor( } } + override suspend fun updateBotToken( + id: Int, + tokenId: Long, + request: BotTokenUpdateRequest, + ): BotAccessToken { + val response = client.put("$baseUrl/bots/$id/tokens/$tokenId") { + contentType(ContentType.Application.Json) + setBody(request) + } + return when (response.status.value) { + 200 -> response.body().data + 401 -> throw response.body() + else -> throw response.body() + } + } + override suspend fun deleteBot(id: Int) { val response = client.delete("$baseUrl/bots/$id") when (response.status.value) { @@ -350,6 +475,15 @@ class BotsServiceImpl internal constructor( } } + override suspend fun deleteBotToken(id: Int, tokenId: Long) { + val response = client.delete("$baseUrl/bots/$id/tokens/$tokenId") + when (response.status.value) { + 204 -> return + 401 -> throw response.body() + else -> throw response.body() + } + } + override suspend fun deleteWebhookEvent(id: String) { val response = client.delete("$baseUrl/webhooks/events/$id") when (response.status.value) { @@ -478,6 +612,10 @@ interface ChatsService { suspend fun unarchiveChat(id: Int) { throw NotImplementedError("Chats.unarchiveChat is not implemented") } + + suspend fun markChatUnread(id: Int, request: MarkChatUnreadRequest) { + throw NotImplementedError("Chats.markChatUnread is not implemented") + } } class ChatsServiceImpl internal constructor( @@ -649,6 +787,18 @@ class ChatsServiceImpl internal constructor( else -> throw response.body() } } + + override suspend fun markChatUnread(id: Int, request: MarkChatUnreadRequest) { + val response = client.put("$baseUrl/chats/$id/unread") { + contentType(ContentType.Application.Json) + setBody(request) + } + when (response.status.value) { + 204 -> return + 401 -> throw response.body() + else -> throw response.body() + } + } } interface MembersService { diff --git a/sdk/kotlin/generated/src/main/kotlin/com/pachca/Models.kt b/sdk/kotlin/generated/src/main/kotlin/com/pachca/Models.kt index 005a65dbd..2dad6928a 100644 --- a/sdk/kotlin/generated/src/main/kotlin/com/pachca/Models.kt +++ b/sdk/kotlin/generated/src/main/kotlin/com/pachca/Models.kt @@ -115,6 +115,16 @@ enum class AuditEventKey(val value: String) { @SerialName("bot_deleted") BOT_DELETED("bot_deleted"), /** Изменены параметры OAuth-клиента бота */ @SerialName("bot_oauth_client_updated") BOT_OAUTH_CLIENT_UPDATED("bot_oauth_client_updated"), + /** У бота выключена авторизация от имени сотрудника */ + @SerialName("bot_oauth_client_disabled") BOT_OAUTH_CLIENT_DISABLED("bot_oauth_client_disabled"), + /** Обновлён секрет OAuth-клиента бота */ + @SerialName("bot_oauth_client_secret_rotated") BOT_OAUTH_CLIENT_SECRET_ROTATED("bot_oauth_client_secret_rotated"), + /** Выпущен токен бота */ + @SerialName("bot_token_created") BOT_TOKEN_CREATED("bot_token_created"), + /** Изменены имя или скоупы токена бота */ + @SerialName("bot_token_updated") BOT_TOKEN_UPDATED("bot_token_updated"), + /** Отдельный токен бота перевыпущен */ + @SerialName("bot_token_reissued") BOT_TOKEN_REISSUED("bot_token_reissued"), /** Пользователь выдал OAuth-клиенту доступ к своим данным */ @SerialName("oauth_authorization_granted") OAUTH_AUTHORIZATION_GRANTED("oauth_authorization_granted"), /** Доступ OAuth-клиента к данным пользователя отозван */ @@ -203,6 +213,17 @@ enum class BotTriggerOn(val value: String) { @SerialName("unfurl") UNFURL("unfurl"), } +/** Источник входящего вебхука бота */ +@Serializable +enum class BotWebhookKind(val value: String) { + /** Свой формат: сообщение собирается из тела запроса по шаблону бота */ + @SerialName("simple") SIMPLE("simple"), + /** GitLab: Пачка сама разбирает запрос и собирает сообщение */ + @SerialName("gitlab") GITLAB("gitlab"), + /** Grafana: Пачка сама разбирает запрос и собирает сообщение */ + @SerialName("grafana") GRAFANA("grafana"), +} + /** Кто может добавлять бота в чаты */ @Serializable enum class BotWhoCanAdd(val value: String) { @@ -212,7 +233,7 @@ enum class BotWhoCanAdd(val value: String) { @SerialName("creator_admin") CREATOR_ADMIN("creator_admin"), /** Создатель, администраторы и участники компании */ @SerialName("creator_admin_user") CREATOR_ADMIN_USER("creator_admin_user"), - /** Любой пользователь, в том числе гости */ + /** Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей */ @SerialName("anyone") ANYONE("anyone"), } @@ -406,6 +427,8 @@ enum class OAuthScope(val value: String) { @SerialName("chats:create") CHATS_CREATE("chats:create"), /** Изменение настроек чата */ @SerialName("chats:update") CHATS_UPDATE("chats:update"), + /** Отметка чатов непрочитанными */ + @SerialName("chats:mark_unread") CHATS_MARK_UNREAD("chats:mark_unread"), /** Архивация и разархивация чатов */ @SerialName("chats:archive") CHATS_ARCHIVE("chats:archive"), /** Выход из чатов */ @@ -705,6 +728,10 @@ enum class ValidationErrorCode(val value: String) { @SerialName("confidential_download_denied") CONFIDENTIAL_DOWNLOAD_DENIED("confidential_download_denied"), /** Не удалось расшифровать файл */ @SerialName("decryption_failed") DECRYPTION_FAILED("decryption_failed"), + /** Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value` */ + @SerialName("bot_add_denied") BOT_ADD_DENIED("bot_add_denied"), + /** Поиск не уложился по времени: сузьте запрос и повторите */ + @SerialName("timeout") TIMEOUT("timeout"), /** Недостаточно прав для выполнения действия (пояснения вы получите в поле message) */ @SerialName("forbidden") FORBIDDEN("forbidden"), /** Доступ запрещён (недостаточно прав) */ @@ -786,9 +813,9 @@ object AuditEventDetailsUnionSerializer : KSerializer { setOf("dlp_rule_id", "dlp_rule_name", "message_id", "chat_id", "user_id", "action_message", "conditions_matched") to { json, element -> json.decodeFromJsonElement(AuditDetailsDlp.serializer(), element) }, setOf("search_type", "query_present", "cursor_present", "limit", "filters") to { json, element -> json.decodeFromJsonElement(AuditDetailsSearch.serializer(), element) }, setOf("bot_id", "actor_id") to { json, element -> json.decodeFromJsonElement(AuditDetailsBot.serializer(), element) }, - setOf("added_scopes", "removed_scopes") to { json, element -> json.decodeFromJsonElement(AuditDetailsBotScopes.serializer(), element) }, - setOf("changes") to { json, element -> json.decodeFromJsonElement(AuditDetailsBotWebhookSettings.serializer(), element) }, - setOf("client_id", "changes") to { json, element -> json.decodeFromJsonElement(AuditDetailsBotOAuthClient.serializer(), element) }, + setOf("bot_id", "actor_id", "added_scopes", "removed_scopes") to { json, element -> json.decodeFromJsonElement(AuditDetailsBotScopes.serializer(), element) }, + setOf("bot_id", "actor_id", "changes") to { json, element -> json.decodeFromJsonElement(AuditDetailsBotWebhookSettings.serializer(), element) }, + setOf("bot_id", "actor_id", "client_id", "changes") to { json, element -> json.decodeFromJsonElement(AuditDetailsBotOAuthClient.serializer(), element) }, setOf("client_id", "scopes") to { json, element -> json.decodeFromJsonElement(AuditDetailsOAuthAuthorizationGranted.serializer(), element) }, setOf("client_id", "revoked_tokens_count") to { json, element -> json.decodeFromJsonElement(AuditDetailsOAuthAuthorizationRevoked.serializer(), element) }, setOf("client_id", "scopes") to { json, element -> json.decodeFromJsonElement(AuditDetailsDeviceAuthorizationApproved.serializer(), element) }, @@ -796,6 +823,8 @@ object AuditEventDetailsUnionSerializer : KSerializer { setOf("chat_id", "started_message_id") to { json, element -> json.decodeFromJsonElement(AuditDetailsVideoCallStarted.serializer(), element) }, setOf("chat_id", "started_message_id", "duration", "max_members_count") to { json, element -> json.decodeFromJsonElement(AuditDetailsVideoCallFinished.serializer(), element) }, setOf("chat_id", "started_message_id", "recording_id", "file_id", "duration", "size") to { json, element -> json.decodeFromJsonElement(AuditDetailsVideoCallRecording.serializer(), element) }, + setOf("bot_id", "actor_id", "client_id") to { json, element -> json.decodeFromJsonElement(AuditDetailsBotOAuthClientSecretRotated.serializer(), element) }, + setOf("bot_id", "actor_id", "client_id", "deleted_access_tokens_count", "deleted_access_grants_count") to { json, element -> json.decodeFromJsonElement(AuditDetailsBotOAuthClientDisabled.serializer(), element) }, ) override fun serialize(encoder: Encoder, value: AuditEventDetailsUnion) { @@ -826,6 +855,8 @@ object AuditEventDetailsUnionSerializer : KSerializer { is AuditDetailsVideoCallStarted -> jsonEncoder.encodeSerializableValue(AuditDetailsVideoCallStarted.serializer(), value) is AuditDetailsVideoCallFinished -> jsonEncoder.encodeSerializableValue(AuditDetailsVideoCallFinished.serializer(), value) is AuditDetailsVideoCallRecording -> jsonEncoder.encodeSerializableValue(AuditDetailsVideoCallRecording.serializer(), value) + is AuditDetailsBotOAuthClientSecretRotated -> jsonEncoder.encodeSerializableValue(AuditDetailsBotOAuthClientSecretRotated.serializer(), value) + is AuditDetailsBotOAuthClientDisabled -> jsonEncoder.encodeSerializableValue(AuditDetailsBotOAuthClientDisabled.serializer(), value) } } @@ -950,17 +981,23 @@ data class AuditDetailsBot( @Serializable data class AuditDetailsBotScopes( + @SerialName("bot_id") val botId: Int, + @SerialName("actor_id") val actorId: Int, @SerialName("added_scopes") val addedScopes: List, @SerialName("removed_scopes") val removedScopes: List, ) : AuditEventDetailsUnion @Serializable data class AuditDetailsBotWebhookSettings( + @SerialName("bot_id") val botId: Int, + @SerialName("actor_id") val actorId: Int, val changes: Map, ) : AuditEventDetailsUnion @Serializable data class AuditDetailsBotOAuthClient( + @SerialName("bot_id") val botId: Int, + @SerialName("actor_id") val actorId: Int, @SerialName("client_id") val clientId: String, val changes: Map, ) : AuditEventDetailsUnion @@ -1013,6 +1050,22 @@ data class AuditDetailsVideoCallRecording( val size: Long, ) : AuditEventDetailsUnion +@Serializable +data class AuditDetailsBotOAuthClientSecretRotated( + @SerialName("bot_id") val botId: Int, + @SerialName("actor_id") val actorId: Int, + @SerialName("client_id") val clientId: String, +) : AuditEventDetailsUnion + +@Serializable +data class AuditDetailsBotOAuthClientDisabled( + @SerialName("bot_id") val botId: Int, + @SerialName("actor_id") val actorId: Int, + @SerialName("client_id") val clientId: String, + @SerialName("deleted_access_tokens_count") val deletedAccessTokensCount: Int, + @SerialName("deleted_access_grants_count") val deletedAccessGrantsCount: Int, +) : AuditEventDetailsUnion + @Serializable sealed interface ViewBlockUnion { val type: String @@ -1261,6 +1314,9 @@ data class LinkSharedWebhookPayload( @SerialName("message_id") val messageId: Int, val links: List, @SerialName("user_id") val userId: Int, + @SerialName("entity_type") val entityType: MessageEntityType, + @SerialName("entity_id") val entityId: Int, + val thread: WebhookMessageThread, @Serializable(with = OffsetDateTimeSerializer::class) @SerialName("created_at") val createdAt: OffsetDateTime, @SerialName("webhook_timestamp") val webhookTimestamp: Int, ) : WebhookPayloadUnion { @@ -1352,6 +1408,20 @@ data class AvatarData( @SerialName("image_url") val imageUrl: String, ) +@Serializable +data class BotAccessToken( + val id: Long, + val token: String, + val name: String? = null, + @SerialName("user_id") val userId: Long, + val scopes: List, + @Serializable(with = OffsetDateTimeSerializer::class) @SerialName("created_at") val createdAt: OffsetDateTime, + @Serializable(with = OffsetDateTimeSerializer::class) @SerialName("revoked_at") val revokedAt: OffsetDateTime? = null, + @SerialName("expires_in") val expiresIn: Int? = null, + @Serializable(with = OffsetDateTimeSerializer::class) @SerialName("last_used_at") val lastUsedAt: OffsetDateTime? = null, + @Serializable(with = OffsetDateTimeSerializer::class) @SerialName("authorized_at") val authorizedAt: OffsetDateTime? = null, +) + @Serializable data class BotCreateRequestWebhook( val name: String, @@ -1370,24 +1440,171 @@ data class BotCreateRequestWebhook( @SerialName("who_can_add") val whoCanAdd: BotWhoCanAdd? = BotWhoCanAdd.CREATOR, @SerialName("can_edit") val canEdit: List? = null, @SerialName("single_chat") val singleChat: Boolean? = false, + val kind: BotWebhookKind? = null, + @SerialName("unfurl_domains") val unfurlDomains: List? = null, ) @Serializable data class BotCreateRequest( + val empty: Boolean? = false, val webhook: BotCreateRequestWebhook, + @SerialName("oauth_client") val oauthClient: BotOAuthClientRequest? = null, + val promo: BotPromoRequest? = null, ) @Serializable data class BotCreateResponse( val id: Int, + val name: String, + val nickname: String, + @SerialName("avatar_url") val avatarUrl: String? = null, + @SerialName("creator_id") val creatorId: Int? = null, + @Serializable(with = OffsetDateTimeSerializer::class) @SerialName("created_at") val createdAt: OffsetDateTime, + @SerialName("authorized_users_count") val authorizedUsersCount: Int, + @Serializable(with = OffsetDateTimeSerializer::class) @SerialName("last_used_at") val lastUsedAt: OffsetDateTime? = null, val webhook: BotWebhook, - @SerialName("access_token") val accessToken: String, + @SerialName("oauth_client_enabled") val oauthClientEnabled: Boolean, + @SerialName("oauth_client") val oauthClient: BotOAuthClient? = null, + val promo: BotPromo? = null, + val permissions: BotPermissions, + @SerialName("client_secret") val clientSecret: String? = null, + @SerialName("access_token") val accessToken: String? = null, +) + +@Serializable +data class BotOAuthClient( + @SerialName("client_id") val clientId: String, + @SerialName("client_secret_preview") val clientSecretPreview: String, + val confidential: Boolean, + @SerialName("redirect_uris") val redirectUris: List, + val scopes: List, +) + +@Serializable +data class BotOAuthClientRequest( + val confidential: Boolean? = null, + @SerialName("redirect_uris") val redirectUris: List? = null, + val scopes: List? = null, +) + +@Serializable +data class BotPermissions( + @SerialName("update_oauth_client") val updateOauthClient: Boolean, + @SerialName("recreate_token") val recreateToken: Boolean, + val destroy: Boolean, +) + +@Serializable +data class BotPromo( + val description: String? = null, + val published: Boolean, + @SerialName("promo_images") val promoImages: List, +) + +@Serializable +data class BotPromoImage( + val key: String, + val url: String, +) + +@Serializable +data class BotPromoRequest( + val description: String? = null, + val published: Boolean? = null, + @SerialName("promo_images") val promoImages: List? = null, ) @Serializable data class BotResponse( val id: Int, + val name: String, + val nickname: String, + @SerialName("avatar_url") val avatarUrl: String? = null, + @SerialName("creator_id") val creatorId: Int? = null, + @Serializable(with = OffsetDateTimeSerializer::class) @SerialName("created_at") val createdAt: OffsetDateTime, + @SerialName("authorized_users_count") val authorizedUsersCount: Int, + @Serializable(with = OffsetDateTimeSerializer::class) @SerialName("last_used_at") val lastUsedAt: OffsetDateTime? = null, val webhook: BotWebhook, + @SerialName("oauth_client_enabled") val oauthClientEnabled: Boolean, + @SerialName("oauth_client") val oauthClient: BotOAuthClient? = null, + val promo: BotPromo? = null, + val permissions: BotPermissions, + @SerialName("client_secret") val clientSecret: String? = null, +) + +@Serializable +data class BotScopeCatalog( + val scopes: List, + val groups: List, + val presets: List, +) + +@Serializable +data class BotScopeCatalogGroup( + val id: String, + val title: String, + val description: String, +) + +@Serializable +data class BotScopeCatalogItem( + val id: String, + val title: String, + val group: String, + val preset: List, +) + +@Serializable +data class BotScopeCatalogPreset( + val id: String, + val title: String, +) + +@Serializable +data class BotSelfResponse( + val id: Int, + @SerialName("oauth_client") val oauthClient: BotOAuthClient? = null, + val webhook: BotSelfWebhook, +) + +@Serializable +data class BotSelfTokenResponse( + val id: Int, + @SerialName("oauth_client") val oauthClient: BotOAuthClient? = null, + val webhook: BotSelfWebhook, + @SerialName("access_token") val accessToken: String, +) + +@Serializable +data class BotSelfWebhook( + val name: String, + val nickname: String, + @SerialName("outgoing_url") val outgoingUrl: String? = null, + val events: List, + @SerialName("trigger_on") val triggerOn: BotTriggerOn, + val commands: List, + val scopes: List, + val template: String? = null, + @SerialName("template_engine") val templateEngine: BotTemplateEngine, + @SerialName("challenge_key") val challengeKey: String? = null, + @SerialName("link_preview_enabled") val linkPreviewEnabled: Boolean, + @SerialName("ignore_self_messages") val ignoreSelfMessages: Boolean, + @SerialName("events_history_enabled") val eventsHistoryEnabled: Boolean, + @SerialName("single_chat") val singleChat: Boolean, + @SerialName("can_edit") val canEdit: List, + @SerialName("who_can_add") val whoCanAdd: BotWhoCanAdd, +) + +@Serializable +data class BotTokenCreateRequest( + val name: String, + val scopes: List? = null, +) + +@Serializable +data class BotTokenUpdateRequest( + val name: String? = null, + val scopes: List? = null, ) @Serializable @@ -1407,11 +1624,16 @@ data class BotUpdateRequestWebhook( @SerialName("events_history_enabled") val eventsHistoryEnabled: Boolean? = false, @SerialName("who_can_add") val whoCanAdd: BotWhoCanAdd? = BotWhoCanAdd.CREATOR, @SerialName("can_edit") val canEdit: List? = null, + @SerialName("single_chat") val singleChat: Boolean? = null, + val kind: BotWebhookKind? = null, + @SerialName("unfurl_domains") val unfurlDomains: List? = null, ) @Serializable data class BotUpdateRequest( - val webhook: BotUpdateRequestWebhook, + val webhook: BotUpdateRequestWebhook? = null, + @SerialName("oauth_client") val oauthClient: BotOAuthClientRequest? = null, + val promo: BotPromoRequest? = null, ) @Serializable @@ -1432,6 +1654,9 @@ data class BotWebhook( @SerialName("single_chat") val singleChat: Boolean, @SerialName("can_edit") val canEdit: List, @SerialName("who_can_add") val whoCanAdd: BotWhoCanAdd, + val kind: BotWebhookKind? = null, + @SerialName("unfurl_domains") val unfurlDomains: List, + @Serializable(with = OffsetDateTimeSerializer::class) @SerialName("last_request_at") val lastRequestAt: OffsetDateTime? = null, ) @Serializable @@ -1495,6 +1720,7 @@ data class ChatUpdateRequest( @Serializable data class CompanyBotResponse( val id: Int, + @SerialName("oauth_client") val oauthClient: BotOAuthClient? = null, val webhook: CompanyBotWebhook, ) @@ -1700,6 +1926,11 @@ data class LinkPreviewsRequest( @SerialName("link_previews") val linkPreviews: Map, ) +@Serializable +data class MarkChatUnreadRequest( + @SerialName("message_id") val messageId: Int? = null, +) + @Serializable data class MessageThread( val id: Long, @@ -2156,6 +2387,12 @@ data class ListBotsResponse( val meta: PaginationMeta, ) +@Serializable +data class ListBotTokensResponse( + val data: List, + val meta: PaginationMeta, +) + @Serializable data class ListChatsResponse( val data: List, @@ -2260,9 +2497,18 @@ data class GetWebhookEventsResponse( @Serializable data class BotResponseDataWrapper(val data: BotResponse) +@Serializable +data class BotSelfTokenResponseDataWrapper(val data: BotSelfTokenResponse) + @Serializable data class BotCreateResponseDataWrapper(val data: BotCreateResponse) +@Serializable +data class BotAccessTokenDataWrapper(val data: BotAccessToken) + +@Serializable +data class BotSelfResponseDataWrapper(val data: BotSelfResponse) + @Serializable data class ChatDataWrapper(val data: Chat) diff --git a/sdk/kotlin/generated/src/main/kotlin/com/pachca/examples.json b/sdk/kotlin/generated/src/main/kotlin/com/pachca/examples.json index 6c809ddaa..5db94d5ed 100644 --- a/sdk/kotlin/generated/src/main/kotlin/com/pachca/examples.json +++ b/sdk/kotlin/generated/src/main/kotlin/com/pachca/examples.json @@ -18,7 +18,15 @@ }, "BotOperations_getBot": { "usage": "val response = client.bots.getBot(id = 1738816)", - "output": "BotResponse(id: Int, webhook: BotWebhook(name: String, nickname: String, outgoingUrl: String?, events: List, triggerOn: BotTriggerOn, commands: List, scopes: List, template: String?, templateEngine: BotTemplateEngine, challengeKey: String?, linkPreviewEnabled: Boolean, ignoreSelfMessages: Boolean, eventsHistoryEnabled: Boolean, singleChat: Boolean, canEdit: List, whoCanAdd: BotWhoCanAdd))" + "output": "BotResponse(id: Int, name: String, nickname: String, avatarUrl: String?, creatorId: Int?, createdAt: OffsetDateTime, authorizedUsersCount: Int, lastUsedAt: OffsetDateTime?, webhook: BotWebhook(name: String, nickname: String, outgoingUrl: String?, events: List, triggerOn: BotTriggerOn, commands: List, scopes: List, template: String?, templateEngine: BotTemplateEngine, challengeKey: String?, linkPreviewEnabled: Boolean, ignoreSelfMessages: Boolean, eventsHistoryEnabled: Boolean, singleChat: Boolean, canEdit: List, whoCanAdd: BotWhoCanAdd, kind: BotWebhookKind?, unfurlDomains: List, lastRequestAt: OffsetDateTime?), oauthClientEnabled: Boolean, oauthClient: BotOAuthClient(clientId: String, clientSecretPreview: String, confidential: Boolean, redirectUris: List, scopes: List)?, promo: BotPromo(description: String?, published: Boolean, promoImages: List)?, permissions: BotPermissions(updateOauthClient: Boolean, recreateToken: Boolean, destroy: Boolean), clientSecret: String?)" + }, + "BotOperations_getBotScopes": { + "usage": "val response = client.bots.getBotScopes(id = 1738816)", + "output": "BotScopeCatalog(scopes: List)>, groups: List, presets: List)" + }, + "BotOperations_listBotTokens": { + "usage": "val response = client.bots.listBotTokens(id = 1738816, limit = 1, cursor = \"eyJpZCI6NDgyN30\")", + "output": "ListBotTokensResponse(data: List, meta: PaginationMeta)" }, "CompanyBotOperations_listCompanyBots": { "usage": "val response = client.bots.listCompanyBots(query = \"задач\", limit = 1, cursor = \"eyJpZCI6MTczODgxNn0\")", @@ -43,49 +51,80 @@ }, "BotOperations_selfRecreateBotToken": { "usage": "val response = client.bots.selfRecreateBotToken()", - "output": "BotCreateResponse(id: Int, webhook: BotWebhook(name: String, nickname: String, outgoingUrl: String?, events: List, triggerOn: BotTriggerOn, commands: List, scopes: List, template: String?, templateEngine: BotTemplateEngine, challengeKey: String?, linkPreviewEnabled: Boolean, ignoreSelfMessages: Boolean, eventsHistoryEnabled: Boolean, singleChat: Boolean, canEdit: List, whoCanAdd: BotWhoCanAdd), accessToken: String)" + "output": "BotSelfTokenResponse(id: Int, oauthClient: BotOAuthClient(clientId: String, clientSecretPreview: String, confidential: Boolean, redirectUris: List, scopes: List)?, webhook: BotSelfWebhook(name: String, nickname: String, outgoingUrl: String?, events: List, triggerOn: BotTriggerOn, commands: List, scopes: List, template: String?, templateEngine: BotTemplateEngine, challengeKey: String?, linkPreviewEnabled: Boolean, ignoreSelfMessages: Boolean, eventsHistoryEnabled: Boolean, singleChat: Boolean, canEdit: List, whoCanAdd: BotWhoCanAdd), accessToken: String)" }, "BotOperations_createBot": { - "usage": "val request = BotCreateRequest(\n webhook = BotCreateRequestWebhook(\n name = \"Бот задач\",\n nickname = \"tasks_bot\",\n outgoingUrl = \"https://www.website.com/tasks/new\",\n events = listOf(BotEventName.MESSAGE_NEW),\n triggerOn = BotTriggerOn.COMMANDS,\n commands = listOf(\"example\"),\n scopes = listOf(\"example\"),\n template = \"Заказ от {{ client }} на сумму {{ amount }} ₽\",\n templateEngine = BotTemplateEngine.LIQUID,\n challengeKey = \"challenge\",\n linkPreviewEnabled = true,\n ignoreSelfMessages = false,\n eventsHistoryEnabled = false,\n whoCanAdd = BotWhoCanAdd.CREATOR,\n canEdit = listOf(BotCanEdit.ADMIN),\n singleChat = false\n )\n)\nval response = client.bots.createBot(request = request)", - "output": "BotCreateResponse(id: Int, webhook: BotWebhook(name: String, nickname: String, outgoingUrl: String?, events: List, triggerOn: BotTriggerOn, commands: List, scopes: List, template: String?, templateEngine: BotTemplateEngine, challengeKey: String?, linkPreviewEnabled: Boolean, ignoreSelfMessages: Boolean, eventsHistoryEnabled: Boolean, singleChat: Boolean, canEdit: List, whoCanAdd: BotWhoCanAdd), accessToken: String)", + "usage": "val request = BotCreateRequest(\n empty = false,\n webhook = BotCreateRequestWebhook(\n name = \"Бот задач\",\n nickname = \"tasks_bot\",\n outgoingUrl = \"https://www.website.com/tasks/new\",\n events = listOf(BotEventName.MESSAGE_NEW),\n triggerOn = BotTriggerOn.COMMANDS,\n commands = listOf(\"example\"),\n scopes = listOf(\"example\"),\n template = \"Заказ от {{ client }} на сумму {{ amount }} ₽\",\n templateEngine = BotTemplateEngine.LIQUID,\n challengeKey = \"challenge\",\n linkPreviewEnabled = true,\n ignoreSelfMessages = false,\n eventsHistoryEnabled = false,\n whoCanAdd = BotWhoCanAdd.CREATOR,\n canEdit = listOf(BotCanEdit.ADMIN),\n singleChat = false,\n kind = BotWebhookKind.SIMPLE,\n unfurlDomains = listOf(\"example\")\n ),\n oauthClient = BotOAuthClientRequest(\n confidential = true,\n redirectUris = listOf(\"example\"),\n scopes = listOf(\"example\")\n ),\n promo = BotPromoRequest(\n description = \"Собирает сводку по задачам Jira и присылает её в чат\",\n published = true,\n promoImages = listOf(\"example\")\n )\n)\nval response = client.bots.createBot(request = request)", + "output": "BotCreateResponse(id: Int, name: String, nickname: String, avatarUrl: String?, creatorId: Int?, createdAt: OffsetDateTime, authorizedUsersCount: Int, lastUsedAt: OffsetDateTime?, webhook: BotWebhook(name: String, nickname: String, outgoingUrl: String?, events: List, triggerOn: BotTriggerOn, commands: List, scopes: List, template: String?, templateEngine: BotTemplateEngine, challengeKey: String?, linkPreviewEnabled: Boolean, ignoreSelfMessages: Boolean, eventsHistoryEnabled: Boolean, singleChat: Boolean, canEdit: List, whoCanAdd: BotWhoCanAdd, kind: BotWebhookKind?, unfurlDomains: List, lastRequestAt: OffsetDateTime?), oauthClientEnabled: Boolean, oauthClient: BotOAuthClient(clientId: String, clientSecretPreview: String, confidential: Boolean, redirectUris: List, scopes: List)?, promo: BotPromo(description: String?, published: Boolean, promoImages: List)?, permissions: BotPermissions(updateOauthClient: Boolean, recreateToken: Boolean, destroy: Boolean), clientSecret: String?, accessToken: String?)", "imports": [ "BotCanEdit", "BotCreateRequest", "BotCreateRequestWebhook", "BotEventName", + "BotOAuthClientRequest", + "BotPromoRequest", "BotTemplateEngine", "BotTriggerOn", + "BotWebhookKind", "BotWhoCanAdd" ] }, "BotOperations_recreateBotToken": { "usage": "val response = client.bots.recreateBotToken(id = 1738816)", - "output": "BotCreateResponse(id: Int, webhook: BotWebhook(name: String, nickname: String, outgoingUrl: String?, events: List, triggerOn: BotTriggerOn, commands: List, scopes: List, template: String?, templateEngine: BotTemplateEngine, challengeKey: String?, linkPreviewEnabled: Boolean, ignoreSelfMessages: Boolean, eventsHistoryEnabled: Boolean, singleChat: Boolean, canEdit: List, whoCanAdd: BotWhoCanAdd), accessToken: String)" + "output": "BotCreateResponse(id: Int, name: String, nickname: String, avatarUrl: String?, creatorId: Int?, createdAt: OffsetDateTime, authorizedUsersCount: Int, lastUsedAt: OffsetDateTime?, webhook: BotWebhook(name: String, nickname: String, outgoingUrl: String?, events: List, triggerOn: BotTriggerOn, commands: List, scopes: List, template: String?, templateEngine: BotTemplateEngine, challengeKey: String?, linkPreviewEnabled: Boolean, ignoreSelfMessages: Boolean, eventsHistoryEnabled: Boolean, singleChat: Boolean, canEdit: List, whoCanAdd: BotWhoCanAdd, kind: BotWebhookKind?, unfurlDomains: List, lastRequestAt: OffsetDateTime?), oauthClientEnabled: Boolean, oauthClient: BotOAuthClient(clientId: String, clientSecretPreview: String, confidential: Boolean, redirectUris: List, scopes: List)?, promo: BotPromo(description: String?, published: Boolean, promoImages: List)?, permissions: BotPermissions(updateOauthClient: Boolean, recreateToken: Boolean, destroy: Boolean), clientSecret: String?, accessToken: String?)" + }, + "BotOperations_rotateBotClientSecret": { + "usage": "val response = client.bots.rotateBotClientSecret(id = 1738816)", + "output": "BotResponse(id: Int, name: String, nickname: String, avatarUrl: String?, creatorId: Int?, createdAt: OffsetDateTime, authorizedUsersCount: Int, lastUsedAt: OffsetDateTime?, webhook: BotWebhook(name: String, nickname: String, outgoingUrl: String?, events: List, triggerOn: BotTriggerOn, commands: List, scopes: List, template: String?, templateEngine: BotTemplateEngine, challengeKey: String?, linkPreviewEnabled: Boolean, ignoreSelfMessages: Boolean, eventsHistoryEnabled: Boolean, singleChat: Boolean, canEdit: List, whoCanAdd: BotWhoCanAdd, kind: BotWebhookKind?, unfurlDomains: List, lastRequestAt: OffsetDateTime?), oauthClientEnabled: Boolean, oauthClient: BotOAuthClient(clientId: String, clientSecretPreview: String, confidential: Boolean, redirectUris: List, scopes: List)?, promo: BotPromo(description: String?, published: Boolean, promoImages: List)?, permissions: BotPermissions(updateOauthClient: Boolean, recreateToken: Boolean, destroy: Boolean), clientSecret: String?)" + }, + "BotOperations_createBotToken": { + "usage": "val request = BotTokenCreateRequest(name = \"Сервер уведомлений\", scopes = listOf(\"example\"))\nval response = client.bots.createBotToken(id = 1738816, request = request)", + "output": "BotAccessToken(id: Long, token: String, name: String?, userId: Long, scopes: List, createdAt: OffsetDateTime, revokedAt: OffsetDateTime?, expiresIn: Int?, lastUsedAt: OffsetDateTime?, authorizedAt: OffsetDateTime?)", + "imports": [ + "BotTokenCreateRequest" + ] + }, + "BotOperations_reissueBotToken": { + "usage": "val response = client.bots.reissueBotToken(id = 1738816, tokenId = 4827L)", + "output": "BotAccessToken(id: Long, token: String, name: String?, userId: Long, scopes: List, createdAt: OffsetDateTime, revokedAt: OffsetDateTime?, expiresIn: Int?, lastUsedAt: OffsetDateTime?, authorizedAt: OffsetDateTime?)" }, "BotOperations_selfUpdateBotWebhook": { "usage": "val request = BotWebhookSelfUpdateRequest(webhook = BotWebhookSelfUpdateRequestWebhook(outgoingUrl = \"https://www.website.com/tasks/new\"))\nval response = client.bots.selfUpdateBotWebhook(request = request)", - "output": "BotResponse(id: Int, webhook: BotWebhook(name: String, nickname: String, outgoingUrl: String?, events: List, triggerOn: BotTriggerOn, commands: List, scopes: List, template: String?, templateEngine: BotTemplateEngine, challengeKey: String?, linkPreviewEnabled: Boolean, ignoreSelfMessages: Boolean, eventsHistoryEnabled: Boolean, singleChat: Boolean, canEdit: List, whoCanAdd: BotWhoCanAdd))", + "output": "BotSelfResponse(id: Int, oauthClient: BotOAuthClient(clientId: String, clientSecretPreview: String, confidential: Boolean, redirectUris: List, scopes: List)?, webhook: BotSelfWebhook(name: String, nickname: String, outgoingUrl: String?, events: List, triggerOn: BotTriggerOn, commands: List, scopes: List, template: String?, templateEngine: BotTemplateEngine, challengeKey: String?, linkPreviewEnabled: Boolean, ignoreSelfMessages: Boolean, eventsHistoryEnabled: Boolean, singleChat: Boolean, canEdit: List, whoCanAdd: BotWhoCanAdd))", "imports": [ "BotWebhookSelfUpdateRequest", "BotWebhookSelfUpdateRequestWebhook" ] }, "BotOperations_updateBot": { - "usage": "val request = BotUpdateRequest(\n webhook = BotUpdateRequestWebhook(\n name = \"Бот задач\",\n nickname = \"tasks_bot\",\n outgoingUrl = \"https://www.website.com/tasks/new\",\n events = listOf(BotEventName.MESSAGE_NEW),\n triggerOn = BotTriggerOn.COMMANDS,\n commands = listOf(\"example\"),\n scopes = listOf(\"example\"),\n template = \"Заказ от {{ client }} на сумму {{ amount }} ₽\",\n templateEngine = BotTemplateEngine.LIQUID,\n challengeKey = \"challenge\",\n linkPreviewEnabled = true,\n ignoreSelfMessages = false,\n eventsHistoryEnabled = false,\n whoCanAdd = BotWhoCanAdd.CREATOR,\n canEdit = listOf(BotCanEdit.ADMIN)\n )\n)\nval response = client.bots.updateBot(id = 1738816, request = request)", - "output": "BotResponse(id: Int, webhook: BotWebhook(name: String, nickname: String, outgoingUrl: String?, events: List, triggerOn: BotTriggerOn, commands: List, scopes: List, template: String?, templateEngine: BotTemplateEngine, challengeKey: String?, linkPreviewEnabled: Boolean, ignoreSelfMessages: Boolean, eventsHistoryEnabled: Boolean, singleChat: Boolean, canEdit: List, whoCanAdd: BotWhoCanAdd))", + "usage": "val request = BotUpdateRequest(\n webhook = BotUpdateRequestWebhook(\n name = \"Бот задач\",\n nickname = \"tasks_bot\",\n outgoingUrl = \"https://www.website.com/tasks/new\",\n events = listOf(BotEventName.MESSAGE_NEW),\n triggerOn = BotTriggerOn.COMMANDS,\n commands = listOf(\"example\"),\n scopes = listOf(\"example\"),\n template = \"Заказ от {{ client }} на сумму {{ amount }} ₽\",\n templateEngine = BotTemplateEngine.LIQUID,\n challengeKey = \"challenge\",\n linkPreviewEnabled = true,\n ignoreSelfMessages = false,\n eventsHistoryEnabled = false,\n whoCanAdd = BotWhoCanAdd.CREATOR,\n canEdit = listOf(BotCanEdit.ADMIN),\n singleChat = false,\n kind = BotWebhookKind.SIMPLE,\n unfurlDomains = listOf(\"example\")\n ),\n oauthClient = BotOAuthClientRequest(\n confidential = true,\n redirectUris = listOf(\"example\"),\n scopes = listOf(\"example\")\n ),\n promo = BotPromoRequest(\n description = \"Собирает сводку по задачам Jira и присылает её в чат\",\n published = true,\n promoImages = listOf(\"example\")\n )\n)\nval response = client.bots.updateBot(id = 1738816, request = request)", + "output": "BotResponse(id: Int, name: String, nickname: String, avatarUrl: String?, creatorId: Int?, createdAt: OffsetDateTime, authorizedUsersCount: Int, lastUsedAt: OffsetDateTime?, webhook: BotWebhook(name: String, nickname: String, outgoingUrl: String?, events: List, triggerOn: BotTriggerOn, commands: List, scopes: List, template: String?, templateEngine: BotTemplateEngine, challengeKey: String?, linkPreviewEnabled: Boolean, ignoreSelfMessages: Boolean, eventsHistoryEnabled: Boolean, singleChat: Boolean, canEdit: List, whoCanAdd: BotWhoCanAdd, kind: BotWebhookKind?, unfurlDomains: List, lastRequestAt: OffsetDateTime?), oauthClientEnabled: Boolean, oauthClient: BotOAuthClient(clientId: String, clientSecretPreview: String, confidential: Boolean, redirectUris: List, scopes: List)?, promo: BotPromo(description: String?, published: Boolean, promoImages: List)?, permissions: BotPermissions(updateOauthClient: Boolean, recreateToken: Boolean, destroy: Boolean), clientSecret: String?)", "imports": [ "BotCanEdit", "BotEventName", + "BotOAuthClientRequest", + "BotPromoRequest", "BotTemplateEngine", "BotTriggerOn", "BotUpdateRequest", "BotUpdateRequestWebhook", + "BotWebhookKind", "BotWhoCanAdd" ] }, + "BotOperations_updateBotToken": { + "usage": "val request = BotTokenUpdateRequest(name = \"Сервер уведомлений\", scopes = listOf(\"example\"))\nval response = client.bots.updateBotToken(id = 1738816, tokenId = 4827L, request = request)", + "output": "BotAccessToken(id: Long, token: String, name: String?, userId: Long, scopes: List, createdAt: OffsetDateTime, revokedAt: OffsetDateTime?, expiresIn: Int?, lastUsedAt: OffsetDateTime?, authorizedAt: OffsetDateTime?)", + "imports": [ + "BotTokenUpdateRequest" + ] + }, "BotOperations_deleteBot": { "usage": "client.bots.deleteBot(id = 1738816)" }, + "BotOperations_deleteBotToken": { + "usage": "client.bots.deleteBotToken(id = 1738816, tokenId = 4827L)" + }, "BotOperations_deleteWebhookEvent": { "usage": "client.bots.deleteWebhookEvent(id = \"01KAJZ2XDSS2S3DSW9EXJZ0TBV\")" }, @@ -141,6 +180,12 @@ "ChatOperations_unarchiveChat": { "usage": "client.chats.unarchiveChat(id = 334)" }, + "ChatOperations_markChatUnread": { + "usage": "val request = MarkChatUnreadRequest(messageId = 1194275)\nclient.chats.markChatUnread(id = 334, request = request)", + "imports": [ + "MarkChatUnreadRequest" + ] + }, "ChatMemberOperations_listMembers": { "usage": "val response = client.members.listMembers(id = 334, role = ChatMemberRoleFilter.ALL, limit = 1, cursor = \"eyJpZCI6MTAsImRpciI6ImFzYyJ9\")", "output": "ListMembersResponse(data: List, meta: PaginationMeta)", diff --git a/sdk/python/generated/pachca/client.py b/sdk/python/generated/pachca/client.py index a0f1557a1..2a3e7ba5d 100644 --- a/sdk/python/generated/pachca/client.py +++ b/sdk/python/generated/pachca/client.py @@ -17,6 +17,10 @@ ListBotsParams, ListBotsResponse, BotResponse, + BotScopeCatalog, + ListBotTokensParams, + ListBotTokensResponse, + BotAccessToken, ListCompanyBotsParams, ListCompanyBotsResponse, CompanyBotResponse, @@ -24,10 +28,14 @@ GetWebhookEventsResponse, WebhookEvent, WebhookPayloadUnion, - BotCreateResponse, + BotSelfTokenResponse, BotCreateRequest, + BotCreateResponse, + BotTokenCreateRequest, BotWebhookSelfUpdateRequest, + BotSelfResponse, BotUpdateRequest, + BotTokenUpdateRequest, ListChatsParams, ListChatsResponse, Chat, @@ -40,6 +48,7 @@ ChatCreateRequest, ExportRequest, ChatUpdateRequest, + MarkChatUnreadRequest, ListMembersParams, ListMembersResponse, User, @@ -207,6 +216,26 @@ async def get_bot( ) -> BotResponse: raise NotImplementedError("Bots.getBot is not implemented") + async def get_bot_scopes( + self, + id: int, + ) -> BotScopeCatalog: + raise NotImplementedError("Bots.getBotScopes is not implemented") + + async def list_bot_tokens( + self, + id: int, + params: ListBotTokensParams | None = None, + ) -> ListBotTokensResponse: + raise NotImplementedError("Bots.listBotTokens is not implemented") + + async def list_bot_tokens_all( + self, + id: int, + params: ListBotTokensParams | None = None, + ) -> list[BotAccessToken]: + raise NotImplementedError("Bots.listBotTokensAll is not implemented") + async def list_company_bots( self, params: ListCompanyBotsParams | None = None, @@ -293,7 +322,7 @@ async def poll_webhook_payloads( yield event.payload async def self_recreate_bot_token( - self) -> BotCreateResponse: + self) -> BotSelfTokenResponse: raise NotImplementedError("Bots.selfRecreateBotToken is not implemented") async def create_bot( @@ -308,10 +337,30 @@ async def recreate_bot_token( ) -> BotCreateResponse: raise NotImplementedError("Bots.recreateBotToken is not implemented") + async def rotate_bot_client_secret( + self, + id: int, + ) -> BotResponse: + raise NotImplementedError("Bots.rotateBotClientSecret is not implemented") + + async def create_bot_token( + self, + id: int, + request: BotTokenCreateRequest, + ) -> BotAccessToken: + raise NotImplementedError("Bots.createBotToken is not implemented") + + async def reissue_bot_token( + self, + id: int, + token_id: int, + ) -> BotAccessToken: + raise NotImplementedError("Bots.reissueBotToken is not implemented") + async def self_update_bot_webhook( self, request: BotWebhookSelfUpdateRequest, - ) -> BotResponse: + ) -> BotSelfResponse: raise NotImplementedError("Bots.selfUpdateBotWebhook is not implemented") async def update_bot( @@ -321,12 +370,27 @@ async def update_bot( ) -> BotResponse: raise NotImplementedError("Bots.updateBot is not implemented") + async def update_bot_token( + self, + id: int, + token_id: int, + request: BotTokenUpdateRequest, + ) -> BotAccessToken: + raise NotImplementedError("Bots.updateBotToken is not implemented") + async def delete_bot( self, id: int, ) -> None: raise NotImplementedError("Bots.deleteBot is not implemented") + async def delete_bot_token( + self, + id: int, + token_id: int, + ) -> None: + raise NotImplementedError("Bots.deleteBotToken is not implemented") + async def delete_webhook_event( self, id: str, @@ -398,6 +462,66 @@ async def get_bot( case _: raise deserialize(ApiError, body) + async def get_bot_scopes( + self, + id: int, + ) -> BotScopeCatalog: + response = await self._client.get( + f"/bots/{id}/scopes", + ) + body = response.json() + match response.status_code: + case 200: + return deserialize(BotScopeCatalog, body) + case 401: + raise deserialize(OAuthError, body) + case _: + raise deserialize(ApiError, body) + + async def list_bot_tokens( + self, + id: int, + params: ListBotTokensParams | None = None, + ) -> ListBotTokensResponse: + query: dict[str, str] = {} + if params is not None and params.limit is not None: + query["limit"] = str(params.limit) + if params is not None and params.cursor is not None: + query["cursor"] = params.cursor + response = await self._client.get( + f"/bots/{id}/tokens", + params=query, + ) + body = response.json() + match response.status_code: + case 200: + return deserialize(ListBotTokensResponse, body) + case 401: + raise deserialize(OAuthError, body) + case _: + raise deserialize(ApiError, body) + + async def list_bot_tokens_all( + self, + id: int, + params: ListBotTokensParams | None = None, + ) -> list[BotAccessToken]: + items: list[BotAccessToken] = [] + cursor: str | None = None + has_next = True + while has_next: + if params is None: + params = ListBotTokensParams() + params.cursor = cursor + response = await self.list_bot_tokens(id, params=params) + items.extend(response.data) + if not response.data: + break + cursor = response.meta.paginate.next_page + reported_has_next = getattr(response.meta.paginate, "has_next", None) + has_next = True if reported_has_next is None else reported_has_next + return items + async def list_company_bots( self, params: ListCompanyBotsParams | None = None, @@ -485,14 +609,14 @@ async def get_webhook_events_all( return items async def self_recreate_bot_token( - self) -> BotCreateResponse: + self) -> BotSelfTokenResponse: response = await self._client.post( "/bot/recreate_token", ) body = response.json() match response.status_code: case 200: - return deserialize(BotCreateResponse, body["data"]) + return deserialize(BotSelfTokenResponse, body["data"]) case 401: raise deserialize(OAuthError, body) case _: @@ -531,10 +655,61 @@ async def recreate_bot_token( case _: raise deserialize(ApiError, body) + async def rotate_bot_client_secret( + self, + id: int, + ) -> BotResponse: + response = await self._client.post( + f"/bots/{id}/rotate_client_secret", + ) + body = response.json() + match response.status_code: + case 200: + return deserialize(BotResponse, body["data"]) + case 401: + raise deserialize(OAuthError, body) + case _: + raise deserialize(ApiError, body) + + async def create_bot_token( + self, + id: int, + request: BotTokenCreateRequest, + ) -> BotAccessToken: + response = await self._client.post( + f"/bots/{id}/tokens", + json=serialize(request), + ) + body = response.json() + match response.status_code: + case 201: + return deserialize(BotAccessToken, body["data"]) + case 401: + raise deserialize(OAuthError, body) + case _: + raise deserialize(ApiError, body) + + async def reissue_bot_token( + self, + id: int, + token_id: int, + ) -> BotAccessToken: + response = await self._client.post( + f"/bots/{id}/tokens/{token_id}/reissue", + ) + body = response.json() + match response.status_code: + case 200: + return deserialize(BotAccessToken, body["data"]) + case 401: + raise deserialize(OAuthError, body) + case _: + raise deserialize(ApiError, body) + async def self_update_bot_webhook( self, request: BotWebhookSelfUpdateRequest, - ) -> BotResponse: + ) -> BotSelfResponse: response = await self._client.put( "/bot/webhook", json=serialize(request), @@ -542,7 +717,7 @@ async def self_update_bot_webhook( body = response.json() match response.status_code: case 200: - return deserialize(BotResponse, body["data"]) + return deserialize(BotSelfResponse, body["data"]) case 401: raise deserialize(OAuthError, body) case _: @@ -566,6 +741,25 @@ async def update_bot( case _: raise deserialize(ApiError, body) + async def update_bot_token( + self, + id: int, + token_id: int, + request: BotTokenUpdateRequest, + ) -> BotAccessToken: + response = await self._client.put( + f"/bots/{id}/tokens/{token_id}", + json=serialize(request), + ) + body = response.json() + match response.status_code: + case 200: + return deserialize(BotAccessToken, body["data"]) + case 401: + raise deserialize(OAuthError, body) + case _: + raise deserialize(ApiError, body) + async def delete_bot( self, id: int, @@ -581,6 +775,22 @@ async def delete_bot( case _: raise deserialize(ApiError, response.json()) + async def delete_bot_token( + self, + id: int, + token_id: int, + ) -> None: + response = await self._client.delete( + f"/bots/{id}/tokens/{token_id}", + ) + match response.status_code: + case 204: + return + case 401: + raise deserialize(OAuthError, response.json()) + case _: + raise deserialize(ApiError, response.json()) + async def delete_webhook_event( self, id: str, @@ -665,6 +875,13 @@ async def unarchive_chat( ) -> None: raise NotImplementedError("Chats.unarchiveChat is not implemented") + async def mark_chat_unread( + self, + id: int, + request: MarkChatUnreadRequest, + ) -> None: + raise NotImplementedError("Chats.markChatUnread is not implemented") + class ChatsServiceImpl(ChatsService): def __init__(self, client: httpx.AsyncClient) -> None: @@ -888,6 +1105,23 @@ async def unarchive_chat( case _: raise deserialize(ApiError, response.json()) + async def mark_chat_unread( + self, + id: int, + request: MarkChatUnreadRequest, + ) -> None: + response = await self._client.put( + f"/chats/{id}/unread", + json=serialize(request), + ) + match response.status_code: + case 204: + return + case 401: + raise deserialize(OAuthError, response.json()) + case _: + raise deserialize(ApiError, response.json()) + class MembersService: async def list_members( diff --git a/sdk/python/generated/pachca/examples.json b/sdk/python/generated/pachca/examples.json index 940ac8881..75822dfef 100644 --- a/sdk/python/generated/pachca/examples.json +++ b/sdk/python/generated/pachca/examples.json @@ -22,7 +22,18 @@ }, "BotOperations_getBot": { "usage": "response = await client.bots.get_bot(id=1738816)", - "output": "BotResponse(id: int, webhook: BotWebhook(name: str, nickname: str, outgoing_url: str | None, events: list[BotEventName], trigger_on: BotTriggerOn, commands: list[str], scopes: list[str], template: str | None, template_engine: BotTemplateEngine, challenge_key: str | None, link_preview_enabled: bool, ignore_self_messages: bool, events_history_enabled: bool, single_chat: bool, can_edit: list[BotCanEdit], who_can_add: BotWhoCanAdd))" + "output": "BotResponse(id: int, name: str, nickname: str, avatar_url: str | None, creator_id: int | None, created_at: datetime, authorized_users_count: int, last_used_at: datetime | None, webhook: BotWebhook(name: str, nickname: str, outgoing_url: str | None, events: list[BotEventName], trigger_on: BotTriggerOn, commands: list[str], scopes: list[str], template: str | None, template_engine: BotTemplateEngine, challenge_key: str | None, link_preview_enabled: bool, ignore_self_messages: bool, events_history_enabled: bool, single_chat: bool, can_edit: list[BotCanEdit], who_can_add: BotWhoCanAdd, kind: BotWebhookKind | None, unfurl_domains: list[str], last_request_at: datetime | None), oauth_client_enabled: bool, oauth_client: BotOAuthClient(client_id: str, client_secret_preview: str, confidential: bool, redirect_uris: list[str], scopes: list[str]) | None, promo: BotPromo(description: str | None, published: bool, promo_images: list[BotPromoImage(key: str, url: str)]) | None, permissions: BotPermissions(update_oauth_client: bool, recreate_token: bool, destroy: bool), client_secret: str | None)" + }, + "BotOperations_getBotScopes": { + "usage": "response = await client.bots.get_bot_scopes(id=1738816)", + "output": "BotScopeCatalog(scopes: list[BotScopeCatalogItem(id: str, title: str, group: str, preset: list[str])], groups: list[BotScopeCatalogGroup(id: str, title: str, description: str)], presets: list[BotScopeCatalogPreset(id: str, title: str)])" + }, + "BotOperations_listBotTokens": { + "usage": "params = ListBotTokensParams(limit=1, cursor=\"eyJpZCI6NDgyN30\")\nresponse = await client.bots.list_bot_tokens(id=1738816, params=params)", + "output": "ListBotTokensResponse(data: list[BotAccessToken], meta: PaginationMeta)", + "imports": [ + "ListBotTokensParams" + ] }, "CompanyBotOperations_listCompanyBots": { "usage": "params = ListCompanyBotsParams(\n query=\"задач\",\n limit=1,\n cursor=\"eyJpZCI6MTczODgxNn0\"\n)\nresponse = await client.bots.list_company_bots(params=params)", @@ -46,49 +57,80 @@ }, "BotOperations_selfRecreateBotToken": { "usage": "response = await client.bots.self_recreate_bot_token()", - "output": "BotCreateResponse(id: int, webhook: BotWebhook(name: str, nickname: str, outgoing_url: str | None, events: list[BotEventName], trigger_on: BotTriggerOn, commands: list[str], scopes: list[str], template: str | None, template_engine: BotTemplateEngine, challenge_key: str | None, link_preview_enabled: bool, ignore_self_messages: bool, events_history_enabled: bool, single_chat: bool, can_edit: list[BotCanEdit], who_can_add: BotWhoCanAdd), access_token: str)" + "output": "BotSelfTokenResponse(id: int, oauth_client: BotOAuthClient(client_id: str, client_secret_preview: str, confidential: bool, redirect_uris: list[str], scopes: list[str]) | None, webhook: BotSelfWebhook(name: str, nickname: str, outgoing_url: str | None, events: list[BotEventName], trigger_on: BotTriggerOn, commands: list[str], scopes: list[str], template: str | None, template_engine: BotTemplateEngine, challenge_key: str | None, link_preview_enabled: bool, ignore_self_messages: bool, events_history_enabled: bool, single_chat: bool, can_edit: list[BotCanEdit], who_can_add: BotWhoCanAdd), access_token: str)" }, "BotOperations_createBot": { - "usage": "request = BotCreateRequest(\n webhook=BotCreateRequestWebhook(\n name=\"Бот задач\",\n nickname=\"tasks_bot\",\n outgoing_url=\"https://www.website.com/tasks/new\",\n events=[BotEventName.MESSAGE_NEW],\n trigger_on=BotTriggerOn.COMMANDS,\n commands=[\"example\"],\n scopes=[\"example\"],\n template=\"Заказ от {{ client }} на сумму {{ amount }} ₽\",\n template_engine=BotTemplateEngine.LIQUID,\n challenge_key=\"challenge\",\n link_preview_enabled=True,\n ignore_self_messages=False,\n events_history_enabled=False,\n who_can_add=BotWhoCanAdd.CREATOR,\n can_edit=[BotCanEdit.ADMIN],\n single_chat=False\n )\n)\nresponse = await client.bots.create_bot(request=request)", - "output": "BotCreateResponse(id: int, webhook: BotWebhook(name: str, nickname: str, outgoing_url: str | None, events: list[BotEventName], trigger_on: BotTriggerOn, commands: list[str], scopes: list[str], template: str | None, template_engine: BotTemplateEngine, challenge_key: str | None, link_preview_enabled: bool, ignore_self_messages: bool, events_history_enabled: bool, single_chat: bool, can_edit: list[BotCanEdit], who_can_add: BotWhoCanAdd), access_token: str)", + "usage": "request = BotCreateRequest(\n empty=False,\n webhook=BotCreateRequestWebhook(\n name=\"Бот задач\",\n nickname=\"tasks_bot\",\n outgoing_url=\"https://www.website.com/tasks/new\",\n events=[BotEventName.MESSAGE_NEW],\n trigger_on=BotTriggerOn.COMMANDS,\n commands=[\"example\"],\n scopes=[\"example\"],\n template=\"Заказ от {{ client }} на сумму {{ amount }} ₽\",\n template_engine=BotTemplateEngine.LIQUID,\n challenge_key=\"challenge\",\n link_preview_enabled=True,\n ignore_self_messages=False,\n events_history_enabled=False,\n who_can_add=BotWhoCanAdd.CREATOR,\n can_edit=[BotCanEdit.ADMIN],\n single_chat=False,\n kind=BotWebhookKind.SIMPLE,\n unfurl_domains=[\"example\"]\n ),\n oauth_client=BotOAuthClientRequest(\n confidential=True,\n redirect_uris=[\"example\"],\n scopes=[\"example\"]\n ),\n promo=BotPromoRequest(\n description=\"Собирает сводку по задачам Jira и присылает её в чат\",\n published=True,\n promo_images=[\"example\"]\n )\n)\nresponse = await client.bots.create_bot(request=request)", + "output": "BotCreateResponse(id: int, name: str, nickname: str, avatar_url: str | None, creator_id: int | None, created_at: datetime, authorized_users_count: int, last_used_at: datetime | None, webhook: BotWebhook(name: str, nickname: str, outgoing_url: str | None, events: list[BotEventName], trigger_on: BotTriggerOn, commands: list[str], scopes: list[str], template: str | None, template_engine: BotTemplateEngine, challenge_key: str | None, link_preview_enabled: bool, ignore_self_messages: bool, events_history_enabled: bool, single_chat: bool, can_edit: list[BotCanEdit], who_can_add: BotWhoCanAdd, kind: BotWebhookKind | None, unfurl_domains: list[str], last_request_at: datetime | None), oauth_client_enabled: bool, oauth_client: BotOAuthClient(client_id: str, client_secret_preview: str, confidential: bool, redirect_uris: list[str], scopes: list[str]) | None, promo: BotPromo(description: str | None, published: bool, promo_images: list[BotPromoImage(key: str, url: str)]) | None, permissions: BotPermissions(update_oauth_client: bool, recreate_token: bool, destroy: bool), client_secret: str | None, access_token: str | None)", "imports": [ "BotCanEdit", "BotCreateRequest", "BotCreateRequestWebhook", "BotEventName", + "BotOAuthClientRequest", + "BotPromoRequest", "BotTemplateEngine", "BotTriggerOn", + "BotWebhookKind", "BotWhoCanAdd" ] }, "BotOperations_recreateBotToken": { "usage": "response = await client.bots.recreate_bot_token(id=1738816)", - "output": "BotCreateResponse(id: int, webhook: BotWebhook(name: str, nickname: str, outgoing_url: str | None, events: list[BotEventName], trigger_on: BotTriggerOn, commands: list[str], scopes: list[str], template: str | None, template_engine: BotTemplateEngine, challenge_key: str | None, link_preview_enabled: bool, ignore_self_messages: bool, events_history_enabled: bool, single_chat: bool, can_edit: list[BotCanEdit], who_can_add: BotWhoCanAdd), access_token: str)" + "output": "BotCreateResponse(id: int, name: str, nickname: str, avatar_url: str | None, creator_id: int | None, created_at: datetime, authorized_users_count: int, last_used_at: datetime | None, webhook: BotWebhook(name: str, nickname: str, outgoing_url: str | None, events: list[BotEventName], trigger_on: BotTriggerOn, commands: list[str], scopes: list[str], template: str | None, template_engine: BotTemplateEngine, challenge_key: str | None, link_preview_enabled: bool, ignore_self_messages: bool, events_history_enabled: bool, single_chat: bool, can_edit: list[BotCanEdit], who_can_add: BotWhoCanAdd, kind: BotWebhookKind | None, unfurl_domains: list[str], last_request_at: datetime | None), oauth_client_enabled: bool, oauth_client: BotOAuthClient(client_id: str, client_secret_preview: str, confidential: bool, redirect_uris: list[str], scopes: list[str]) | None, promo: BotPromo(description: str | None, published: bool, promo_images: list[BotPromoImage(key: str, url: str)]) | None, permissions: BotPermissions(update_oauth_client: bool, recreate_token: bool, destroy: bool), client_secret: str | None, access_token: str | None)" + }, + "BotOperations_rotateBotClientSecret": { + "usage": "response = await client.bots.rotate_bot_client_secret(id=1738816)", + "output": "BotResponse(id: int, name: str, nickname: str, avatar_url: str | None, creator_id: int | None, created_at: datetime, authorized_users_count: int, last_used_at: datetime | None, webhook: BotWebhook(name: str, nickname: str, outgoing_url: str | None, events: list[BotEventName], trigger_on: BotTriggerOn, commands: list[str], scopes: list[str], template: str | None, template_engine: BotTemplateEngine, challenge_key: str | None, link_preview_enabled: bool, ignore_self_messages: bool, events_history_enabled: bool, single_chat: bool, can_edit: list[BotCanEdit], who_can_add: BotWhoCanAdd, kind: BotWebhookKind | None, unfurl_domains: list[str], last_request_at: datetime | None), oauth_client_enabled: bool, oauth_client: BotOAuthClient(client_id: str, client_secret_preview: str, confidential: bool, redirect_uris: list[str], scopes: list[str]) | None, promo: BotPromo(description: str | None, published: bool, promo_images: list[BotPromoImage(key: str, url: str)]) | None, permissions: BotPermissions(update_oauth_client: bool, recreate_token: bool, destroy: bool), client_secret: str | None)" + }, + "BotOperations_createBotToken": { + "usage": "request = BotTokenCreateRequest(name=\"Сервер уведомлений\", scopes=[\"example\"])\nresponse = await client.bots.create_bot_token(id=1738816, request=request)", + "output": "BotAccessToken(id: int, token: str, name: str | None, user_id: int, scopes: list[str], created_at: datetime, revoked_at: datetime | None, expires_in: int | None, last_used_at: datetime | None, authorized_at: datetime | None)", + "imports": [ + "BotTokenCreateRequest" + ] + }, + "BotOperations_reissueBotToken": { + "usage": "response = await client.bots.reissue_bot_token(id=1738816, token_id=4827)", + "output": "BotAccessToken(id: int, token: str, name: str | None, user_id: int, scopes: list[str], created_at: datetime, revoked_at: datetime | None, expires_in: int | None, last_used_at: datetime | None, authorized_at: datetime | None)" }, "BotOperations_selfUpdateBotWebhook": { "usage": "request = BotWebhookSelfUpdateRequest(webhook=BotWebhookSelfUpdateRequestWebhook(outgoing_url=\"https://www.website.com/tasks/new\"))\nresponse = await client.bots.self_update_bot_webhook(request=request)", - "output": "BotResponse(id: int, webhook: BotWebhook(name: str, nickname: str, outgoing_url: str | None, events: list[BotEventName], trigger_on: BotTriggerOn, commands: list[str], scopes: list[str], template: str | None, template_engine: BotTemplateEngine, challenge_key: str | None, link_preview_enabled: bool, ignore_self_messages: bool, events_history_enabled: bool, single_chat: bool, can_edit: list[BotCanEdit], who_can_add: BotWhoCanAdd))", + "output": "BotSelfResponse(id: int, oauth_client: BotOAuthClient(client_id: str, client_secret_preview: str, confidential: bool, redirect_uris: list[str], scopes: list[str]) | None, webhook: BotSelfWebhook(name: str, nickname: str, outgoing_url: str | None, events: list[BotEventName], trigger_on: BotTriggerOn, commands: list[str], scopes: list[str], template: str | None, template_engine: BotTemplateEngine, challenge_key: str | None, link_preview_enabled: bool, ignore_self_messages: bool, events_history_enabled: bool, single_chat: bool, can_edit: list[BotCanEdit], who_can_add: BotWhoCanAdd))", "imports": [ "BotWebhookSelfUpdateRequest", "BotWebhookSelfUpdateRequestWebhook" ] }, "BotOperations_updateBot": { - "usage": "request = BotUpdateRequest(\n webhook=BotUpdateRequestWebhook(\n name=\"Бот задач\",\n nickname=\"tasks_bot\",\n outgoing_url=\"https://www.website.com/tasks/new\",\n events=[BotEventName.MESSAGE_NEW],\n trigger_on=BotTriggerOn.COMMANDS,\n commands=[\"example\"],\n scopes=[\"example\"],\n template=\"Заказ от {{ client }} на сумму {{ amount }} ₽\",\n template_engine=BotTemplateEngine.LIQUID,\n challenge_key=\"challenge\",\n link_preview_enabled=True,\n ignore_self_messages=False,\n events_history_enabled=False,\n who_can_add=BotWhoCanAdd.CREATOR,\n can_edit=[BotCanEdit.ADMIN]\n )\n)\nresponse = await client.bots.update_bot(id=1738816, request=request)", - "output": "BotResponse(id: int, webhook: BotWebhook(name: str, nickname: str, outgoing_url: str | None, events: list[BotEventName], trigger_on: BotTriggerOn, commands: list[str], scopes: list[str], template: str | None, template_engine: BotTemplateEngine, challenge_key: str | None, link_preview_enabled: bool, ignore_self_messages: bool, events_history_enabled: bool, single_chat: bool, can_edit: list[BotCanEdit], who_can_add: BotWhoCanAdd))", + "usage": "request = BotUpdateRequest(\n webhook=BotUpdateRequestWebhook(\n name=\"Бот задач\",\n nickname=\"tasks_bot\",\n outgoing_url=\"https://www.website.com/tasks/new\",\n events=[BotEventName.MESSAGE_NEW],\n trigger_on=BotTriggerOn.COMMANDS,\n commands=[\"example\"],\n scopes=[\"example\"],\n template=\"Заказ от {{ client }} на сумму {{ amount }} ₽\",\n template_engine=BotTemplateEngine.LIQUID,\n challenge_key=\"challenge\",\n link_preview_enabled=True,\n ignore_self_messages=False,\n events_history_enabled=False,\n who_can_add=BotWhoCanAdd.CREATOR,\n can_edit=[BotCanEdit.ADMIN],\n single_chat=False,\n kind=BotWebhookKind.SIMPLE,\n unfurl_domains=[\"example\"]\n ),\n oauth_client=BotOAuthClientRequest(\n confidential=True,\n redirect_uris=[\"example\"],\n scopes=[\"example\"]\n ),\n promo=BotPromoRequest(\n description=\"Собирает сводку по задачам Jira и присылает её в чат\",\n published=True,\n promo_images=[\"example\"]\n )\n)\nresponse = await client.bots.update_bot(id=1738816, request=request)", + "output": "BotResponse(id: int, name: str, nickname: str, avatar_url: str | None, creator_id: int | None, created_at: datetime, authorized_users_count: int, last_used_at: datetime | None, webhook: BotWebhook(name: str, nickname: str, outgoing_url: str | None, events: list[BotEventName], trigger_on: BotTriggerOn, commands: list[str], scopes: list[str], template: str | None, template_engine: BotTemplateEngine, challenge_key: str | None, link_preview_enabled: bool, ignore_self_messages: bool, events_history_enabled: bool, single_chat: bool, can_edit: list[BotCanEdit], who_can_add: BotWhoCanAdd, kind: BotWebhookKind | None, unfurl_domains: list[str], last_request_at: datetime | None), oauth_client_enabled: bool, oauth_client: BotOAuthClient(client_id: str, client_secret_preview: str, confidential: bool, redirect_uris: list[str], scopes: list[str]) | None, promo: BotPromo(description: str | None, published: bool, promo_images: list[BotPromoImage(key: str, url: str)]) | None, permissions: BotPermissions(update_oauth_client: bool, recreate_token: bool, destroy: bool), client_secret: str | None)", "imports": [ "BotCanEdit", "BotEventName", + "BotOAuthClientRequest", + "BotPromoRequest", "BotTemplateEngine", "BotTriggerOn", "BotUpdateRequest", "BotUpdateRequestWebhook", + "BotWebhookKind", "BotWhoCanAdd" ] }, + "BotOperations_updateBotToken": { + "usage": "request = BotTokenUpdateRequest(name=\"Сервер уведомлений\", scopes=[\"example\"])\nresponse = await client.bots.update_bot_token(id=1738816, token_id=4827, request=request)", + "output": "BotAccessToken(id: int, token: str, name: str | None, user_id: int, scopes: list[str], created_at: datetime, revoked_at: datetime | None, expires_in: int | None, last_used_at: datetime | None, authorized_at: datetime | None)", + "imports": [ + "BotTokenUpdateRequest" + ] + }, "BotOperations_deleteBot": { "usage": "await client.bots.delete_bot(id=1738816)" }, + "BotOperations_deleteBotToken": { + "usage": "await client.bots.delete_bot_token(id=1738816, token_id=4827)" + }, "BotOperations_deleteWebhookEvent": { "usage": "await client.bots.delete_webhook_event(id=\"01KAJZ2XDSS2S3DSW9EXJZ0TBV\")" }, @@ -146,6 +188,12 @@ "ChatOperations_unarchiveChat": { "usage": "await client.chats.unarchive_chat(id=334)" }, + "ChatOperations_markChatUnread": { + "usage": "request = MarkChatUnreadRequest(message_id=1194275)\nawait client.chats.mark_chat_unread(id=334, request=request)", + "imports": [ + "MarkChatUnreadRequest" + ] + }, "ChatMemberOperations_listMembers": { "usage": "params = ListMembersParams(\n role=ChatMemberRoleFilter.ALL,\n limit=1,\n cursor=\"eyJpZCI6MTAsImRpciI6ImFzYyJ9\"\n)\nresponse = await client.members.list_members(id=334, params=params)", "output": "ListMembersResponse(data: list[User], meta: PaginationMeta)", diff --git a/sdk/python/generated/pachca/models.py b/sdk/python/generated/pachca/models.py index 8ce37caa5..a0e4b3916 100644 --- a/sdk/python/generated/pachca/models.py +++ b/sdk/python/generated/pachca/models.py @@ -51,6 +51,11 @@ class AuditEventKey(StrEnum): BOT_TOKEN_RECREATED = "bot_token_recreated" # Токен бота перевыпущен (ротация) BOT_DELETED = "bot_deleted" # Бот удалён BOT_OAUTH_CLIENT_UPDATED = "bot_oauth_client_updated" # Изменены параметры OAuth-клиента бота + BOT_OAUTH_CLIENT_DISABLED = "bot_oauth_client_disabled" # У бота выключена авторизация от имени сотрудника + BOT_OAUTH_CLIENT_SECRET_ROTATED = "bot_oauth_client_secret_rotated" # Обновлён секрет OAuth-клиента бота + BOT_TOKEN_CREATED = "bot_token_created" # Выпущен токен бота + BOT_TOKEN_UPDATED = "bot_token_updated" # Изменены имя или скоупы токена бота + BOT_TOKEN_REISSUED = "bot_token_reissued" # Отдельный токен бота перевыпущен OAUTH_AUTHORIZATION_GRANTED = "oauth_authorization_granted" # Пользователь выдал OAuth-клиенту доступ к своим данным OAUTH_AUTHORIZATION_REVOKED = "oauth_authorization_revoked" # Доступ OAuth-клиента к данным пользователя отозван OAUTH_DEVICE_AUTHORIZATION_APPROVED = "oauth_device_authorization_approved" # Сотрудник подтвердил вход приложения с устройства @@ -106,13 +111,21 @@ class BotTriggerOn(StrEnum): UNFURL = "unfurl" # На развёртывание ссылок (link previews) +class BotWebhookKind(StrEnum): + """Источник входящего вебхука бота""" + + SIMPLE = "simple" # Свой формат: сообщение собирается из тела запроса по шаблону бота + GITLAB = "gitlab" # GitLab: Пачка сама разбирает запрос и собирает сообщение + GRAFANA = "grafana" # Grafana: Пачка сама разбирает запрос и собирает сообщение + + class BotWhoCanAdd(StrEnum): """Кто может добавлять бота в чаты""" CREATOR = "creator" # Только создатель бота CREATOR_ADMIN = "creator_admin" # Создатель и администраторы компании CREATOR_ADMIN_USER = "creator_admin_user" # Создатель, администраторы и участники компании - ANYONE = "anyone" # Любой пользователь, в том числе гости + ANYONE = "anyone" # Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей class ChatActivity(StrEnum): @@ -250,6 +263,7 @@ class OAuthScope(StrEnum): CHATS_READ = "chats:read" # Просмотр чатов и списка чатов CHATS_CREATE = "chats:create" # Создание новых чатов CHATS_UPDATE = "chats:update" # Изменение настроек чата + CHATS_MARK_UNREAD = "chats:mark_unread" # Отметка чатов непрочитанными CHATS_ARCHIVE = "chats:archive" # Архивация и разархивация чатов CHATS_LEAVE = "chats:leave" # Выход из чатов CHAT_MEMBERS_READ = "chat_members:read" # Просмотр участников чата @@ -427,6 +441,8 @@ class ValidationErrorCode(StrEnum): DRAFT_TYPE_CHANGE_FORBIDDEN = "draft_type_change_forbidden" # Отложенное сообщение нельзя превратить обратно в черновик CONFIDENTIAL_DOWNLOAD_DENIED = "confidential_download_denied" # Скачивание файла запрещено: нужен запрос из безопасного контура DECRYPTION_FAILED = "decryption_failed" # Не удалось расшифровать файл + BOT_ADD_DENIED = "bot_add_denied" # Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value` + TIMEOUT = "timeout" # Поиск не уложился по времени: сузьте запрос и повторите FORBIDDEN = "forbidden" # Недостаточно прав для выполнения действия (пояснения вы получите в поле message) PERMISSION_DENIED = "permission_denied" # Доступ запрещён (недостаточно прав) ACCESS_DENIED = "access_denied" # Доступ запрещён @@ -514,19 +530,41 @@ class AuditDetailsBot: @dataclass class AuditDetailsBotOAuthClient: + bot_id: int client_id: str changes: dict[str, Any] + actor_id: int | None = None + + +@dataclass +class AuditDetailsBotOAuthClientDisabled: + bot_id: int + client_id: str + deleted_access_tokens_count: int + deleted_access_grants_count: int + actor_id: int | None = None + + +@dataclass +class AuditDetailsBotOAuthClientSecretRotated: + bot_id: int + client_id: str + actor_id: int | None = None @dataclass class AuditDetailsBotScopes: + bot_id: int added_scopes: list[str] removed_scopes: list[str] + actor_id: int | None = None @dataclass class AuditDetailsBotWebhookSettings: + bot_id: int changes: dict[str, Any] + actor_id: int | None = None @dataclass @@ -683,6 +721,20 @@ class AvatarData: image_url: str +@dataclass +class BotAccessToken: + id: int + token: str + user_id: int + scopes: list[str] + created_at: datetime + name: str | None = None + revoked_at: datetime | None = None + expires_in: int | None = None + last_used_at: datetime | None = None + authorized_at: datetime | None = None + + @dataclass class BotCreateRequestWebhook: name: str @@ -701,24 +753,171 @@ class BotCreateRequestWebhook: who_can_add: BotWhoCanAdd | None = BotWhoCanAdd.CREATOR can_edit: list[BotCanEdit] | None = None single_chat: bool | None = False + kind: BotWebhookKind | None = None + unfurl_domains: list[str] | None = None @dataclass class BotCreateRequest: webhook: BotCreateRequestWebhook + empty: bool | None = False + oauth_client: BotOAuthClientRequest | None = None + promo: BotPromoRequest | None = None @dataclass class BotCreateResponse: id: int + name: str + nickname: str + created_at: datetime + authorized_users_count: int webhook: BotWebhook - access_token: str + oauth_client_enabled: bool + permissions: BotPermissions + avatar_url: str | None = None + creator_id: int | None = None + last_used_at: datetime | None = None + oauth_client: BotOAuthClient | None = None + promo: BotPromo | None = None + client_secret: str | None = None + access_token: str | None = None + + +@dataclass +class BotOAuthClient: + client_id: str + client_secret_preview: str + confidential: bool + redirect_uris: list[str] + scopes: list[str] + + +@dataclass +class BotOAuthClientRequest: + confidential: bool | None = None + redirect_uris: list[str] | None = None + scopes: list[str] | None = None + + +@dataclass +class BotPermissions: + update_oauth_client: bool + recreate_token: bool + destroy: bool + + +@dataclass +class BotPromo: + published: bool + promo_images: list[BotPromoImage] + description: str | None = None + + +@dataclass +class BotPromoImage: + key: str + url: str + + +@dataclass +class BotPromoRequest: + description: str | None = None + published: bool | None = None + promo_images: list[str] | None = None @dataclass class BotResponse: id: int + name: str + nickname: str + created_at: datetime + authorized_users_count: int webhook: BotWebhook + oauth_client_enabled: bool + permissions: BotPermissions + avatar_url: str | None = None + creator_id: int | None = None + last_used_at: datetime | None = None + oauth_client: BotOAuthClient | None = None + promo: BotPromo | None = None + client_secret: str | None = None + + +@dataclass +class BotScopeCatalog: + scopes: list[BotScopeCatalogItem] + groups: list[BotScopeCatalogGroup] + presets: list[BotScopeCatalogPreset] + + +@dataclass +class BotScopeCatalogGroup: + id: str + title: str + description: str + + +@dataclass +class BotScopeCatalogItem: + id: str + title: str + group: str + preset: list[str] + + +@dataclass +class BotScopeCatalogPreset: + id: str + title: str + + +@dataclass +class BotSelfResponse: + id: int + webhook: BotSelfWebhook + oauth_client: BotOAuthClient | None = None + + +@dataclass +class BotSelfTokenResponse: + id: int + webhook: BotSelfWebhook + access_token: str + oauth_client: BotOAuthClient | None = None + + +@dataclass +class BotSelfWebhook: + name: str + nickname: str + events: list[BotEventName] + trigger_on: BotTriggerOn + commands: list[str] + scopes: list[str] + template_engine: BotTemplateEngine + link_preview_enabled: bool + ignore_self_messages: bool + events_history_enabled: bool + single_chat: bool + can_edit: list[BotCanEdit] + who_can_add: BotWhoCanAdd + outgoing_url: str | None = None + template: str | None = None + challenge_key: str | None = None + + +@dataclass +class BotTokenCreateRequest: + name: str + scopes: list[str] | None = None + + +@dataclass +class BotTokenUpdateRequest: + name: str | None = None + scopes: list[str] | None = None @dataclass @@ -738,11 +937,16 @@ class BotUpdateRequestWebhook: events_history_enabled: bool | None = False who_can_add: BotWhoCanAdd | None = BotWhoCanAdd.CREATOR can_edit: list[BotCanEdit] | None = None + single_chat: bool | None = None + kind: BotWebhookKind | None = None + unfurl_domains: list[str] | None = None @dataclass class BotUpdateRequest: - webhook: BotUpdateRequestWebhook + webhook: BotUpdateRequestWebhook | None = None + oauth_client: BotOAuthClientRequest | None = None + promo: BotPromoRequest | None = None @dataclass @@ -760,9 +964,12 @@ class BotWebhook: single_chat: bool can_edit: list[BotCanEdit] who_can_add: BotWhoCanAdd + unfurl_domains: list[str] outgoing_url: str | None = None template: str | None = None challenge_key: str | None = None + kind: BotWebhookKind | None = None + last_request_at: datetime | None = None @dataclass @@ -850,6 +1057,7 @@ class ChatUpdateRequest: class CompanyBotResponse: id: int webhook: CompanyBotWebhook + oauth_client: BotOAuthClient | None = None @dataclass @@ -1071,8 +1279,16 @@ class LinkSharedWebhookPayload: message_id: int links: list[WebhookLink] user_id: int + entity_type: MessageEntityType created_at: datetime webhook_timestamp: int + entity_id: int | None = None + thread: WebhookMessageThread | None = None + + +@dataclass +class MarkChatUnreadRequest: + message_id: int | None = None @dataclass @@ -1681,7 +1897,7 @@ class UpdateUserAvatarRequest: image: bytes -AuditEventDetailsUnion = Union[AuditDetailsEmpty, AuditDetailsUserUpdated, AuditDetailsRoleChanged, AuditDetailsTagName, AuditDetailsInitiator, AuditDetailsInviter, AuditDetailsChatRenamed, AuditDetailsChatPermission, AuditDetailsTagChat, AuditDetailsChatId, AuditDetailsTokenScopes, AuditDetailsKms, AuditDetailsDlp, AuditDetailsSearch, AuditDetailsBot, AuditDetailsBotScopes, AuditDetailsBotWebhookSettings, AuditDetailsBotOAuthClient, AuditDetailsOAuthAuthorizationGranted, AuditDetailsOAuthAuthorizationRevoked, AuditDetailsDeviceAuthorizationApproved, AuditDetailsDeviceAuthorizationDenied, AuditDetailsVideoCallStarted, AuditDetailsVideoCallFinished, AuditDetailsVideoCallRecording] +AuditEventDetailsUnion = Union[AuditDetailsEmpty, AuditDetailsUserUpdated, AuditDetailsRoleChanged, AuditDetailsTagName, AuditDetailsInitiator, AuditDetailsInviter, AuditDetailsChatRenamed, AuditDetailsChatPermission, AuditDetailsTagChat, AuditDetailsChatId, AuditDetailsTokenScopes, AuditDetailsKms, AuditDetailsDlp, AuditDetailsSearch, AuditDetailsBot, AuditDetailsBotScopes, AuditDetailsBotWebhookSettings, AuditDetailsBotOAuthClient, AuditDetailsOAuthAuthorizationGranted, AuditDetailsOAuthAuthorizationRevoked, AuditDetailsDeviceAuthorizationApproved, AuditDetailsDeviceAuthorizationDenied, AuditDetailsVideoCallStarted, AuditDetailsVideoCallFinished, AuditDetailsVideoCallRecording, AuditDetailsBotOAuthClientSecretRotated, AuditDetailsBotOAuthClientDisabled] ViewBlockUnion = Union[ViewBlockHeader, ViewBlockPlainText, ViewBlockMarkdown, ViewBlockDivider, ViewBlockInput, ViewBlockSelect, ViewBlockRadio, ViewBlockCheckbox, ViewBlockDate, ViewBlockTime, ViewBlockFileInput] @@ -1710,6 +1926,12 @@ class ListBotsParams: cursor: str | None = None +@dataclass +class ListBotTokensParams: + limit: int | None = None + cursor: str | None = None + + @dataclass class ListChatsParams: sort: ChatSortField | None = None @@ -1885,6 +2107,12 @@ class ListBotsResponse: meta: PaginationMeta +@dataclass +class ListBotTokensResponse: + data: list[BotAccessToken] + meta: PaginationMeta + + @dataclass class ListChatsResponse: data: list[Chat] diff --git a/sdk/swift/Package.swift b/sdk/swift/Package.swift index fa8e06925..a33d6b778 100644 --- a/sdk/swift/Package.swift +++ b/sdk/swift/Package.swift @@ -16,7 +16,7 @@ let package = Package( "examples", "package.json", "README.md", - "Package.resolved", + "generated/examples.json", ], sources: ["generated/Sources/Pachca/GeneratedSources"] ) diff --git a/sdk/swift/generated/Sources/Pachca/GeneratedSources/Client.swift b/sdk/swift/generated/Sources/Pachca/GeneratedSources/Client.swift index 1ca1c84f1..ea5bf0718 100644 --- a/sdk/swift/generated/Sources/Pachca/GeneratedSources/Client.swift +++ b/sdk/swift/generated/Sources/Pachca/GeneratedSources/Client.swift @@ -95,6 +95,18 @@ open class BotsService { throw pachcaNotImplemented("Bots.getBot") } + open func getBotScopes(id: Int) async throws -> BotScopeCatalog { + throw pachcaNotImplemented("Bots.getBotScopes") + } + + open func listBotTokens(id: Int, limit: Int? = nil, cursor: String? = nil) async throws -> ListBotTokensResponse { + throw pachcaNotImplemented("Bots.listBotTokens") + } + + open func listBotTokensAll(id: Int, limit: Int? = nil) async throws -> [BotAccessToken] { + throw pachcaNotImplemented("Bots.listBotTokensAll") + } + open func listCompanyBots(query: String? = nil, limit: Int? = nil, cursor: String? = nil) async throws -> ListCompanyBotsResponse { throw pachcaNotImplemented("Bots.listCompanyBots") } @@ -195,7 +207,7 @@ open class BotsService { } } - open func selfRecreateBotToken() async throws -> BotCreateResponse { + open func selfRecreateBotToken() async throws -> BotSelfTokenResponse { throw pachcaNotImplemented("Bots.selfRecreateBotToken") } @@ -207,7 +219,19 @@ open class BotsService { throw pachcaNotImplemented("Bots.recreateBotToken") } - open func selfUpdateBotWebhook(request body: BotWebhookSelfUpdateRequest) async throws -> BotResponse { + open func rotateBotClientSecret(id: Int) async throws -> BotResponse { + throw pachcaNotImplemented("Bots.rotateBotClientSecret") + } + + open func createBotToken(id: Int, request body: BotTokenCreateRequest) async throws -> BotAccessToken { + throw pachcaNotImplemented("Bots.createBotToken") + } + + open func reissueBotToken(id: Int, tokenId: Int64) async throws -> BotAccessToken { + throw pachcaNotImplemented("Bots.reissueBotToken") + } + + open func selfUpdateBotWebhook(request body: BotWebhookSelfUpdateRequest) async throws -> BotSelfResponse { throw pachcaNotImplemented("Bots.selfUpdateBotWebhook") } @@ -215,10 +239,18 @@ open class BotsService { throw pachcaNotImplemented("Bots.updateBot") } + open func updateBotToken(id: Int, tokenId: Int64, request body: BotTokenUpdateRequest) async throws -> BotAccessToken { + throw pachcaNotImplemented("Bots.updateBotToken") + } + open func deleteBot(id: Int) async throws -> Void { throw pachcaNotImplemented("Bots.deleteBot") } + open func deleteBotToken(id: Int, tokenId: Int64) async throws -> Void { + throw pachcaNotImplemented("Bots.deleteBotToken") + } + open func deleteWebhookEvent(id: String) async throws -> Void { throw pachcaNotImplemented("Bots.deleteWebhookEvent") } @@ -286,6 +318,55 @@ public final class BotsServiceImpl: BotsService { } } + public override func getBotScopes(id: Int) async throws -> BotScopeCatalog { + var request = URLRequest(url: URL(string: "\(baseURL)/bots/\(id)/scopes")!) + headers.forEach { request.setValue($1, forHTTPHeaderField: $0) } + let (data, urlResponse) = try await dataWithRetry(session: session, for: request) + let statusCode = (urlResponse as! HTTPURLResponse).statusCode + switch statusCode { + case 200: + return try deserialize(BotScopeCatalog.self, from: data) + case 401: + throw try deserialize(OAuthError.self, from: data) + default: + throw try deserialize(ApiError.self, from: data) + } + } + + public override func listBotTokens(id: Int, limit: Int? = nil, cursor: String? = nil) async throws -> ListBotTokensResponse { + var components = URLComponents(string: "\(baseURL)/bots/\(id)/tokens")! + var queryItems: [URLQueryItem] = [] + if let limit { queryItems.append(URLQueryItem(name: "limit", value: String(limit))) } + if let cursor { queryItems.append(URLQueryItem(name: "cursor", value: String(cursor))) } + if !queryItems.isEmpty { components.queryItems = queryItems } + var request = URLRequest(url: components.url!) + headers.forEach { request.setValue($1, forHTTPHeaderField: $0) } + let (data, urlResponse) = try await dataWithRetry(session: session, for: request) + let statusCode = (urlResponse as! HTTPURLResponse).statusCode + switch statusCode { + case 200: + return try deserialize(ListBotTokensResponse.self, from: data) + case 401: + throw try deserialize(OAuthError.self, from: data) + default: + throw try deserialize(ApiError.self, from: data) + } + } + + public override func listBotTokensAll(id: Int, limit: Int? = nil) async throws -> [BotAccessToken] { + var items: [BotAccessToken] = [] + var cursor: String? = nil + var hasNext = true + while hasNext { + let response = try await listBotTokens(id: id, limit: limit, cursor: cursor) + items.append(contentsOf: response.data) + if response.data.isEmpty { break } + cursor = response.meta.paginate.nextPage + hasNext = response.meta.paginate.hasNext ?? true + } + return items + } + public override func listCompanyBots(query: String? = nil, limit: Int? = nil, cursor: String? = nil) async throws -> ListCompanyBotsResponse { var components = URLComponents(string: "\(baseURL)/company/bots")! var queryItems: [URLQueryItem] = [] @@ -355,7 +436,7 @@ public final class BotsServiceImpl: BotsService { return items } - public override func selfRecreateBotToken() async throws -> BotCreateResponse { + public override func selfRecreateBotToken() async throws -> BotSelfTokenResponse { var request = URLRequest(url: URL(string: "\(baseURL)/bot/recreate_token")!) request.httpMethod = "POST" headers.forEach { request.setValue($1, forHTTPHeaderField: $0) } @@ -363,7 +444,7 @@ public final class BotsServiceImpl: BotsService { let statusCode = (urlResponse as! HTTPURLResponse).statusCode switch statusCode { case 200: - return try deserialize(BotCreateResponseDataWrapper.self, from: data).data + return try deserialize(BotSelfTokenResponseDataWrapper.self, from: data).data case 401: throw try deserialize(OAuthError.self, from: data) default: @@ -405,7 +486,57 @@ public final class BotsServiceImpl: BotsService { } } - public override func selfUpdateBotWebhook(request body: BotWebhookSelfUpdateRequest) async throws -> BotResponse { + public override func rotateBotClientSecret(id: Int) async throws -> BotResponse { + var request = URLRequest(url: URL(string: "\(baseURL)/bots/\(id)/rotate_client_secret")!) + request.httpMethod = "POST" + headers.forEach { request.setValue($1, forHTTPHeaderField: $0) } + let (data, urlResponse) = try await dataWithRetry(session: session, for: request) + let statusCode = (urlResponse as! HTTPURLResponse).statusCode + switch statusCode { + case 200: + return try deserialize(BotResponseDataWrapper.self, from: data).data + case 401: + throw try deserialize(OAuthError.self, from: data) + default: + throw try deserialize(ApiError.self, from: data) + } + } + + public override func createBotToken(id: Int, request body: BotTokenCreateRequest) async throws -> BotAccessToken { + var request = URLRequest(url: URL(string: "\(baseURL)/bots/\(id)/tokens")!) + request.httpMethod = "POST" + headers.forEach { request.setValue($1, forHTTPHeaderField: $0) } + request.setValue("application/json", forHTTPHeaderField: "Content-Type") + request.httpBody = try serialize(body) + let (data, urlResponse) = try await dataWithRetry(session: session, for: request) + let statusCode = (urlResponse as! HTTPURLResponse).statusCode + switch statusCode { + case 201: + return try deserialize(BotAccessTokenDataWrapper.self, from: data).data + case 401: + throw try deserialize(OAuthError.self, from: data) + default: + throw try deserialize(ApiError.self, from: data) + } + } + + public override func reissueBotToken(id: Int, tokenId: Int64) async throws -> BotAccessToken { + var request = URLRequest(url: URL(string: "\(baseURL)/bots/\(id)/tokens/\(tokenId)/reissue")!) + request.httpMethod = "POST" + headers.forEach { request.setValue($1, forHTTPHeaderField: $0) } + let (data, urlResponse) = try await dataWithRetry(session: session, for: request) + let statusCode = (urlResponse as! HTTPURLResponse).statusCode + switch statusCode { + case 200: + return try deserialize(BotAccessTokenDataWrapper.self, from: data).data + case 401: + throw try deserialize(OAuthError.self, from: data) + default: + throw try deserialize(ApiError.self, from: data) + } + } + + public override func selfUpdateBotWebhook(request body: BotWebhookSelfUpdateRequest) async throws -> BotSelfResponse { var request = URLRequest(url: URL(string: "\(baseURL)/bot/webhook")!) request.httpMethod = "PUT" headers.forEach { request.setValue($1, forHTTPHeaderField: $0) } @@ -415,7 +546,7 @@ public final class BotsServiceImpl: BotsService { let statusCode = (urlResponse as! HTTPURLResponse).statusCode switch statusCode { case 200: - return try deserialize(BotResponseDataWrapper.self, from: data).data + return try deserialize(BotSelfResponseDataWrapper.self, from: data).data case 401: throw try deserialize(OAuthError.self, from: data) default: @@ -441,6 +572,24 @@ public final class BotsServiceImpl: BotsService { } } + public override func updateBotToken(id: Int, tokenId: Int64, request body: BotTokenUpdateRequest) async throws -> BotAccessToken { + var request = URLRequest(url: URL(string: "\(baseURL)/bots/\(id)/tokens/\(tokenId)")!) + request.httpMethod = "PUT" + headers.forEach { request.setValue($1, forHTTPHeaderField: $0) } + request.setValue("application/json", forHTTPHeaderField: "Content-Type") + request.httpBody = try serialize(body) + let (data, urlResponse) = try await dataWithRetry(session: session, for: request) + let statusCode = (urlResponse as! HTTPURLResponse).statusCode + switch statusCode { + case 200: + return try deserialize(BotAccessTokenDataWrapper.self, from: data).data + case 401: + throw try deserialize(OAuthError.self, from: data) + default: + throw try deserialize(ApiError.self, from: data) + } + } + public override func deleteBot(id: Int) async throws -> Void { var request = URLRequest(url: URL(string: "\(baseURL)/bots/\(id)")!) request.httpMethod = "DELETE" @@ -457,6 +606,22 @@ public final class BotsServiceImpl: BotsService { } } + public override func deleteBotToken(id: Int, tokenId: Int64) async throws -> Void { + var request = URLRequest(url: URL(string: "\(baseURL)/bots/\(id)/tokens/\(tokenId)")!) + request.httpMethod = "DELETE" + headers.forEach { request.setValue($1, forHTTPHeaderField: $0) } + let (data, urlResponse) = try await dataWithRetry(session: session, for: request) + let statusCode = (urlResponse as! HTTPURLResponse).statusCode + switch statusCode { + case 204: + return + case 401: + throw try deserialize(OAuthError.self, from: data) + default: + throw try deserialize(ApiError.self, from: data) + } + } + public override func deleteWebhookEvent(id: String) async throws -> Void { var request = URLRequest(url: URL(string: "\(baseURL)/webhooks/events/\(id)")!) request.httpMethod = "DELETE" @@ -520,6 +685,10 @@ open class ChatsService { open func unarchiveChat(id: Int) async throws -> Void { throw pachcaNotImplemented("Chats.unarchiveChat") } + + open func markChatUnread(id: Int, request body: MarkChatUnreadRequest) async throws -> Void { + throw pachcaNotImplemented("Chats.markChatUnread") + } } public final class ChatsServiceImpl: ChatsService { @@ -729,6 +898,24 @@ public final class ChatsServiceImpl: ChatsService { throw try deserialize(ApiError.self, from: data) } } + + public override func markChatUnread(id: Int, request body: MarkChatUnreadRequest) async throws -> Void { + var request = URLRequest(url: URL(string: "\(baseURL)/chats/\(id)/unread")!) + request.httpMethod = "PUT" + headers.forEach { request.setValue($1, forHTTPHeaderField: $0) } + request.setValue("application/json", forHTTPHeaderField: "Content-Type") + request.httpBody = try serialize(body) + let (data, urlResponse) = try await dataWithRetry(session: session, for: request) + let statusCode = (urlResponse as! HTTPURLResponse).statusCode + switch statusCode { + case 204: + return + case 401: + throw try deserialize(OAuthError.self, from: data) + default: + throw try deserialize(ApiError.self, from: data) + } + } } open class MembersService { diff --git a/sdk/swift/generated/Sources/Pachca/GeneratedSources/Models.swift b/sdk/swift/generated/Sources/Pachca/GeneratedSources/Models.swift index e080f815d..474be9e27 100644 --- a/sdk/swift/generated/Sources/Pachca/GeneratedSources/Models.swift +++ b/sdk/swift/generated/Sources/Pachca/GeneratedSources/Models.swift @@ -90,6 +90,16 @@ public enum AuditEventKey: String, Codable, CaseIterable { case botDeleted = "bot_deleted" /// Изменены параметры OAuth-клиента бота case botOauthClientUpdated = "bot_oauth_client_updated" + /// У бота выключена авторизация от имени сотрудника + case botOauthClientDisabled = "bot_oauth_client_disabled" + /// Обновлён секрет OAuth-клиента бота + case botOauthClientSecretRotated = "bot_oauth_client_secret_rotated" + /// Выпущен токен бота + case botTokenCreated = "bot_token_created" + /// Изменены имя или скоупы токена бота + case botTokenUpdated = "bot_token_updated" + /// Отдельный токен бота перевыпущен + case botTokenReissued = "bot_token_reissued" /// Пользователь выдал OAuth-клиенту доступ к своим данным case oauthAuthorizationGranted = "oauth_authorization_granted" /// Доступ OAuth-клиента к данным пользователя отозван @@ -170,6 +180,15 @@ public enum BotTriggerOn: String, Codable, CaseIterable { case unfurl } +public enum BotWebhookKind: String, Codable, CaseIterable { + /// Свой формат: сообщение собирается из тела запроса по шаблону бота + case simple + /// GitLab: Пачка сама разбирает запрос и собирает сообщение + case gitlab + /// Grafana: Пачка сама разбирает запрос и собирает сообщение + case grafana +} + public enum BotWhoCanAdd: String, Codable, CaseIterable { /// Только создатель бота case creator @@ -177,7 +196,7 @@ public enum BotWhoCanAdd: String, Codable, CaseIterable { case creatorAdmin = "creator_admin" /// Создатель, администраторы и участники компании case creatorAdminUser = "creator_admin_user" - /// Любой пользователь, в том числе гости + /// Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей case anyone } @@ -338,6 +357,8 @@ public enum OAuthScope: String, Codable, CaseIterable { case chatsCreate = "chats:create" /// Изменение настроек чата case chatsUpdate = "chats:update" + /// Отметка чатов непрочитанными + case chatsMarkUnread = "chats:mark_unread" /// Архивация и разархивация чатов case chatsArchive = "chats:archive" /// Выход из чатов @@ -615,6 +636,10 @@ public enum ValidationErrorCode: String, Codable, CaseIterable { case confidentialDownloadDenied = "confidential_download_denied" /// Не удалось расшифровать файл case decryptionFailed = "decryption_failed" + /// Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value` + case botAddDenied = "bot_add_denied" + /// Поиск не уложился по времени: сузьте запрос и повторите + case timeout /// Недостаточно прав для выполнения действия (пояснения вы получите в поле message) case forbidden /// Доступ запрещён (недостаточно прав) @@ -776,41 +801,105 @@ public struct AuditDetailsBot: Codable { } public struct AuditDetailsBotOAuthClient: Codable { + public let botId: Int + public let actorId: Int? public let clientId: String public let changes: [String: AnyCodable] - public init(clientId: String, changes: [String: AnyCodable]) { + public init(botId: Int, actorId: Int? = nil, clientId: String, changes: [String: AnyCodable]) { + self.botId = botId + self.actorId = actorId self.clientId = clientId self.changes = changes } enum CodingKeys: String, CodingKey { + case botId = "bot_id" + case actorId = "actor_id" case clientId = "client_id" case changes } } +public struct AuditDetailsBotOAuthClientDisabled: Codable { + public let botId: Int + public let actorId: Int? + public let clientId: String + public let deletedAccessTokensCount: Int + public let deletedAccessGrantsCount: Int + + public init(botId: Int, actorId: Int? = nil, clientId: String, deletedAccessTokensCount: Int, deletedAccessGrantsCount: Int) { + self.botId = botId + self.actorId = actorId + self.clientId = clientId + self.deletedAccessTokensCount = deletedAccessTokensCount + self.deletedAccessGrantsCount = deletedAccessGrantsCount + } + + enum CodingKeys: String, CodingKey { + case botId = "bot_id" + case actorId = "actor_id" + case clientId = "client_id" + case deletedAccessTokensCount = "deleted_access_tokens_count" + case deletedAccessGrantsCount = "deleted_access_grants_count" + } +} + +public struct AuditDetailsBotOAuthClientSecretRotated: Codable { + public let botId: Int + public let actorId: Int? + public let clientId: String + + public init(botId: Int, actorId: Int? = nil, clientId: String) { + self.botId = botId + self.actorId = actorId + self.clientId = clientId + } + + enum CodingKeys: String, CodingKey { + case botId = "bot_id" + case actorId = "actor_id" + case clientId = "client_id" + } +} + public struct AuditDetailsBotScopes: Codable { + public let botId: Int + public let actorId: Int? public let addedScopes: [String] public let removedScopes: [String] - public init(addedScopes: [String], removedScopes: [String]) { + public init(botId: Int, actorId: Int? = nil, addedScopes: [String], removedScopes: [String]) { + self.botId = botId + self.actorId = actorId self.addedScopes = addedScopes self.removedScopes = removedScopes } enum CodingKeys: String, CodingKey { + case botId = "bot_id" + case actorId = "actor_id" case addedScopes = "added_scopes" case removedScopes = "removed_scopes" } } public struct AuditDetailsBotWebhookSettings: Codable { + public let botId: Int + public let actorId: Int? public let changes: [String: AnyCodable] - public init(changes: [String: AnyCodable]) { + public init(botId: Int, actorId: Int? = nil, changes: [String: AnyCodable]) { + self.botId = botId + self.actorId = actorId self.changes = changes } + + enum CodingKeys: String, CodingKey { + case botId = "bot_id" + case actorId = "actor_id" + case changes + } } public struct AuditDetailsChatId: Codable { @@ -1189,6 +1278,45 @@ public struct AvatarData: Codable { } } +public struct BotAccessToken: Codable { + public let id: Int64 + public let token: String + public let name: String? + public let userId: Int64 + public let scopes: [String] + public let createdAt: String + public let revokedAt: String? + public let expiresIn: Int? + public let lastUsedAt: String? + public let authorizedAt: String? + + public init(id: Int64, token: String, name: String? = nil, userId: Int64, scopes: [String], createdAt: String, revokedAt: String? = nil, expiresIn: Int? = nil, lastUsedAt: String? = nil, authorizedAt: String? = nil) { + self.id = id + self.token = token + self.name = name + self.userId = userId + self.scopes = scopes + self.createdAt = createdAt + self.revokedAt = revokedAt + self.expiresIn = expiresIn + self.lastUsedAt = lastUsedAt + self.authorizedAt = authorizedAt + } + + enum CodingKeys: String, CodingKey { + case id + case token + case name + case userId = "user_id" + case scopes + case createdAt = "created_at" + case revokedAt = "revoked_at" + case expiresIn = "expires_in" + case lastUsedAt = "last_used_at" + case authorizedAt = "authorized_at" + } +} + public struct BotCreateRequestWebhook: Codable { public let name: String public let nickname: String? @@ -1206,8 +1334,10 @@ public struct BotCreateRequestWebhook: Codable { public let whoCanAdd: BotWhoCanAdd? public let canEdit: [BotCanEdit]? public let singleChat: Bool? + public let kind: BotWebhookKind? + public let unfurlDomains: [String]? - public init(name: String, nickname: String? = nil, outgoingUrl: String? = nil, events: [BotEventName]? = nil, triggerOn: BotTriggerOn? = nil, commands: [String]? = nil, scopes: [String]? = nil, template: String? = nil, templateEngine: BotTemplateEngine? = nil, challengeKey: String? = nil, linkPreviewEnabled: Bool? = nil, ignoreSelfMessages: Bool? = nil, eventsHistoryEnabled: Bool? = nil, whoCanAdd: BotWhoCanAdd? = nil, canEdit: [BotCanEdit]? = nil, singleChat: Bool? = nil) { + public init(name: String, nickname: String? = nil, outgoingUrl: String? = nil, events: [BotEventName]? = nil, triggerOn: BotTriggerOn? = nil, commands: [String]? = nil, scopes: [String]? = nil, template: String? = nil, templateEngine: BotTemplateEngine? = nil, challengeKey: String? = nil, linkPreviewEnabled: Bool? = nil, ignoreSelfMessages: Bool? = nil, eventsHistoryEnabled: Bool? = nil, whoCanAdd: BotWhoCanAdd? = nil, canEdit: [BotCanEdit]? = nil, singleChat: Bool? = nil, kind: BotWebhookKind? = nil, unfurlDomains: [String]? = nil) { self.name = name self.nickname = nickname self.outgoingUrl = outgoingUrl @@ -1224,6 +1354,8 @@ public struct BotCreateRequestWebhook: Codable { self.whoCanAdd = whoCanAdd self.canEdit = canEdit self.singleChat = singleChat + self.kind = kind + self.unfurlDomains = unfurlDomains } enum CodingKeys: String, CodingKey { @@ -1243,42 +1375,404 @@ public struct BotCreateRequestWebhook: Codable { case whoCanAdd = "who_can_add" case canEdit = "can_edit" case singleChat = "single_chat" + case kind + case unfurlDomains = "unfurl_domains" } } public struct BotCreateRequest: Codable { + public let empty: Bool? public let webhook: BotCreateRequestWebhook + public let oauthClient: BotOAuthClientRequest? + public let promo: BotPromoRequest? - public init(webhook: BotCreateRequestWebhook) { + public init(empty: Bool? = nil, webhook: BotCreateRequestWebhook, oauthClient: BotOAuthClientRequest? = nil, promo: BotPromoRequest? = nil) { + self.empty = empty self.webhook = webhook + self.oauthClient = oauthClient + self.promo = promo + } + + enum CodingKeys: String, CodingKey { + case empty + case webhook + case oauthClient = "oauth_client" + case promo } } public struct BotCreateResponse: Codable { public let id: Int + public let name: String + public let nickname: String + public let avatarUrl: String? + public let creatorId: Int? + public let createdAt: String + public let authorizedUsersCount: Int + public let lastUsedAt: String? public let webhook: BotWebhook - public let accessToken: String - - public init(id: Int, webhook: BotWebhook, accessToken: String) { + public let oauthClientEnabled: Bool + public let oauthClient: BotOAuthClient? + public let promo: BotPromo? + public let permissions: BotPermissions + public let clientSecret: String? + public let accessToken: String? + + public init(id: Int, name: String, nickname: String, avatarUrl: String? = nil, creatorId: Int? = nil, createdAt: String, authorizedUsersCount: Int, lastUsedAt: String? = nil, webhook: BotWebhook, oauthClientEnabled: Bool, oauthClient: BotOAuthClient? = nil, promo: BotPromo? = nil, permissions: BotPermissions, clientSecret: String? = nil, accessToken: String? = nil) { self.id = id + self.name = name + self.nickname = nickname + self.avatarUrl = avatarUrl + self.creatorId = creatorId + self.createdAt = createdAt + self.authorizedUsersCount = authorizedUsersCount + self.lastUsedAt = lastUsedAt self.webhook = webhook + self.oauthClientEnabled = oauthClientEnabled + self.oauthClient = oauthClient + self.promo = promo + self.permissions = permissions + self.clientSecret = clientSecret self.accessToken = accessToken } enum CodingKeys: String, CodingKey { case id + case name + case nickname + case avatarUrl = "avatar_url" + case creatorId = "creator_id" + case createdAt = "created_at" + case authorizedUsersCount = "authorized_users_count" + case lastUsedAt = "last_used_at" case webhook + case oauthClientEnabled = "oauth_client_enabled" + case oauthClient = "oauth_client" + case promo + case permissions + case clientSecret = "client_secret" case accessToken = "access_token" } } +public struct BotOAuthClient: Codable { + public let clientId: String + public let clientSecretPreview: String + public let confidential: Bool + public let redirectUris: [String] + public let scopes: [String] + + public init(clientId: String, clientSecretPreview: String, confidential: Bool, redirectUris: [String], scopes: [String]) { + self.clientId = clientId + self.clientSecretPreview = clientSecretPreview + self.confidential = confidential + self.redirectUris = redirectUris + self.scopes = scopes + } + + enum CodingKeys: String, CodingKey { + case clientId = "client_id" + case clientSecretPreview = "client_secret_preview" + case confidential + case redirectUris = "redirect_uris" + case scopes + } +} + +public struct BotOAuthClientRequest: Codable { + public let confidential: Bool? + public let redirectUris: [String]? + public let scopes: [String]? + + public init(confidential: Bool? = nil, redirectUris: [String]? = nil, scopes: [String]? = nil) { + self.confidential = confidential + self.redirectUris = redirectUris + self.scopes = scopes + } + + enum CodingKeys: String, CodingKey { + case confidential + case redirectUris = "redirect_uris" + case scopes + } +} + +public struct BotPermissions: Codable { + public let updateOauthClient: Bool + public let recreateToken: Bool + public let destroy: Bool + + public init(updateOauthClient: Bool, recreateToken: Bool, destroy: Bool) { + self.updateOauthClient = updateOauthClient + self.recreateToken = recreateToken + self.destroy = destroy + } + + enum CodingKeys: String, CodingKey { + case updateOauthClient = "update_oauth_client" + case recreateToken = "recreate_token" + case destroy + } +} + +public struct BotPromo: Codable { + public let description: String? + public let published: Bool + public let promoImages: [BotPromoImage] + + public init(description: String? = nil, published: Bool, promoImages: [BotPromoImage]) { + self.description = description + self.published = published + self.promoImages = promoImages + } + + enum CodingKeys: String, CodingKey { + case description + case published + case promoImages = "promo_images" + } +} + +public struct BotPromoImage: Codable { + public let key: String + public let url: String + + public init(key: String, url: String) { + self.key = key + self.url = url + } +} + +public struct BotPromoRequest: Codable { + public let description: String? + public let published: Bool? + public let promoImages: [String]? + + public init(description: String? = nil, published: Bool? = nil, promoImages: [String]? = nil) { + self.description = description + self.published = published + self.promoImages = promoImages + } + + enum CodingKeys: String, CodingKey { + case description + case published + case promoImages = "promo_images" + } +} + public struct BotResponse: Codable { public let id: Int + public let name: String + public let nickname: String + public let avatarUrl: String? + public let creatorId: Int? + public let createdAt: String + public let authorizedUsersCount: Int + public let lastUsedAt: String? public let webhook: BotWebhook + public let oauthClientEnabled: Bool + public let oauthClient: BotOAuthClient? + public let promo: BotPromo? + public let permissions: BotPermissions + public let clientSecret: String? + + public init(id: Int, name: String, nickname: String, avatarUrl: String? = nil, creatorId: Int? = nil, createdAt: String, authorizedUsersCount: Int, lastUsedAt: String? = nil, webhook: BotWebhook, oauthClientEnabled: Bool, oauthClient: BotOAuthClient? = nil, promo: BotPromo? = nil, permissions: BotPermissions, clientSecret: String? = nil) { + self.id = id + self.name = name + self.nickname = nickname + self.avatarUrl = avatarUrl + self.creatorId = creatorId + self.createdAt = createdAt + self.authorizedUsersCount = authorizedUsersCount + self.lastUsedAt = lastUsedAt + self.webhook = webhook + self.oauthClientEnabled = oauthClientEnabled + self.oauthClient = oauthClient + self.promo = promo + self.permissions = permissions + self.clientSecret = clientSecret + } + + enum CodingKeys: String, CodingKey { + case id + case name + case nickname + case avatarUrl = "avatar_url" + case creatorId = "creator_id" + case createdAt = "created_at" + case authorizedUsersCount = "authorized_users_count" + case lastUsedAt = "last_used_at" + case webhook + case oauthClientEnabled = "oauth_client_enabled" + case oauthClient = "oauth_client" + case promo + case permissions + case clientSecret = "client_secret" + } +} + +public struct BotScopeCatalog: Codable { + public let scopes: [BotScopeCatalogItem] + public let groups: [BotScopeCatalogGroup] + public let presets: [BotScopeCatalogPreset] - public init(id: Int, webhook: BotWebhook) { + public init(scopes: [BotScopeCatalogItem], groups: [BotScopeCatalogGroup], presets: [BotScopeCatalogPreset]) { + self.scopes = scopes + self.groups = groups + self.presets = presets + } +} + +public struct BotScopeCatalogGroup: Codable { + public let id: String + public let title: String + public let description: String + + public init(id: String, title: String, description: String) { + self.id = id + self.title = title + self.description = description + } +} + +public struct BotScopeCatalogItem: Codable { + public let id: String + public let title: String + public let group: String + public let preset: [String] + + public init(id: String, title: String, group: String, preset: [String]) { + self.id = id + self.title = title + self.group = group + self.preset = preset + } +} + +public struct BotScopeCatalogPreset: Codable { + public let id: String + public let title: String + + public init(id: String, title: String) { + self.id = id + self.title = title + } +} + +public struct BotSelfResponse: Codable { + public let id: Int + public let oauthClient: BotOAuthClient? + public let webhook: BotSelfWebhook + + public init(id: Int, oauthClient: BotOAuthClient? = nil, webhook: BotSelfWebhook) { + self.id = id + self.oauthClient = oauthClient + self.webhook = webhook + } + + enum CodingKeys: String, CodingKey { + case id + case oauthClient = "oauth_client" + case webhook + } +} + +public struct BotSelfTokenResponse: Codable { + public let id: Int + public let oauthClient: BotOAuthClient? + public let webhook: BotSelfWebhook + public let accessToken: String + + public init(id: Int, oauthClient: BotOAuthClient? = nil, webhook: BotSelfWebhook, accessToken: String) { self.id = id + self.oauthClient = oauthClient self.webhook = webhook + self.accessToken = accessToken + } + + enum CodingKeys: String, CodingKey { + case id + case oauthClient = "oauth_client" + case webhook + case accessToken = "access_token" + } +} + +public struct BotSelfWebhook: Codable { + public let name: String + public let nickname: String + public let outgoingUrl: String? + public let events: [BotEventName] + public let triggerOn: BotTriggerOn + public let commands: [String] + public let scopes: [String] + public let template: String? + public let templateEngine: BotTemplateEngine + public let challengeKey: String? + public let linkPreviewEnabled: Bool + public let ignoreSelfMessages: Bool + public let eventsHistoryEnabled: Bool + public let singleChat: Bool + public let canEdit: [BotCanEdit] + public let whoCanAdd: BotWhoCanAdd + + public init(name: String, nickname: String, outgoingUrl: String? = nil, events: [BotEventName], triggerOn: BotTriggerOn, commands: [String], scopes: [String], template: String? = nil, templateEngine: BotTemplateEngine, challengeKey: String? = nil, linkPreviewEnabled: Bool, ignoreSelfMessages: Bool, eventsHistoryEnabled: Bool, singleChat: Bool, canEdit: [BotCanEdit], whoCanAdd: BotWhoCanAdd) { + self.name = name + self.nickname = nickname + self.outgoingUrl = outgoingUrl + self.events = events + self.triggerOn = triggerOn + self.commands = commands + self.scopes = scopes + self.template = template + self.templateEngine = templateEngine + self.challengeKey = challengeKey + self.linkPreviewEnabled = linkPreviewEnabled + self.ignoreSelfMessages = ignoreSelfMessages + self.eventsHistoryEnabled = eventsHistoryEnabled + self.singleChat = singleChat + self.canEdit = canEdit + self.whoCanAdd = whoCanAdd + } + + enum CodingKeys: String, CodingKey { + case name + case nickname + case outgoingUrl = "outgoing_url" + case events + case triggerOn = "trigger_on" + case commands + case scopes + case template + case templateEngine = "template_engine" + case challengeKey = "challenge_key" + case linkPreviewEnabled = "link_preview_enabled" + case ignoreSelfMessages = "ignore_self_messages" + case eventsHistoryEnabled = "events_history_enabled" + case singleChat = "single_chat" + case canEdit = "can_edit" + case whoCanAdd = "who_can_add" + } +} + +public struct BotTokenCreateRequest: Codable { + public let name: String + public let scopes: [String]? + + public init(name: String, scopes: [String]? = nil) { + self.name = name + self.scopes = scopes + } +} + +public struct BotTokenUpdateRequest: Codable { + public let name: String? + public let scopes: [String]? + + public init(name: String? = nil, scopes: [String]? = nil) { + self.name = name + self.scopes = scopes } } @@ -1298,8 +1792,11 @@ public struct BotUpdateRequestWebhook: Codable { public let eventsHistoryEnabled: Bool? public let whoCanAdd: BotWhoCanAdd? public let canEdit: [BotCanEdit]? + public let singleChat: Bool? + public let kind: BotWebhookKind? + public let unfurlDomains: [String]? - public init(name: String? = nil, nickname: String? = nil, outgoingUrl: String? = nil, events: [BotEventName]? = nil, triggerOn: BotTriggerOn? = nil, commands: [String]? = nil, scopes: [String]? = nil, template: String? = nil, templateEngine: BotTemplateEngine? = nil, challengeKey: String? = nil, linkPreviewEnabled: Bool? = nil, ignoreSelfMessages: Bool? = nil, eventsHistoryEnabled: Bool? = nil, whoCanAdd: BotWhoCanAdd? = nil, canEdit: [BotCanEdit]? = nil) { + public init(name: String? = nil, nickname: String? = nil, outgoingUrl: String? = nil, events: [BotEventName]? = nil, triggerOn: BotTriggerOn? = nil, commands: [String]? = nil, scopes: [String]? = nil, template: String? = nil, templateEngine: BotTemplateEngine? = nil, challengeKey: String? = nil, linkPreviewEnabled: Bool? = nil, ignoreSelfMessages: Bool? = nil, eventsHistoryEnabled: Bool? = nil, whoCanAdd: BotWhoCanAdd? = nil, canEdit: [BotCanEdit]? = nil, singleChat: Bool? = nil, kind: BotWebhookKind? = nil, unfurlDomains: [String]? = nil) { self.name = name self.nickname = nickname self.outgoingUrl = outgoingUrl @@ -1315,6 +1812,9 @@ public struct BotUpdateRequestWebhook: Codable { self.eventsHistoryEnabled = eventsHistoryEnabled self.whoCanAdd = whoCanAdd self.canEdit = canEdit + self.singleChat = singleChat + self.kind = kind + self.unfurlDomains = unfurlDomains } enum CodingKeys: String, CodingKey { @@ -1333,14 +1833,27 @@ public struct BotUpdateRequestWebhook: Codable { case eventsHistoryEnabled = "events_history_enabled" case whoCanAdd = "who_can_add" case canEdit = "can_edit" + case singleChat = "single_chat" + case kind + case unfurlDomains = "unfurl_domains" } } public struct BotUpdateRequest: Codable { - public let webhook: BotUpdateRequestWebhook + public let webhook: BotUpdateRequestWebhook? + public let oauthClient: BotOAuthClientRequest? + public let promo: BotPromoRequest? - public init(webhook: BotUpdateRequestWebhook) { + public init(webhook: BotUpdateRequestWebhook? = nil, oauthClient: BotOAuthClientRequest? = nil, promo: BotPromoRequest? = nil) { self.webhook = webhook + self.oauthClient = oauthClient + self.promo = promo + } + + enum CodingKeys: String, CodingKey { + case webhook + case oauthClient = "oauth_client" + case promo } } @@ -1361,8 +1874,11 @@ public struct BotWebhook: Codable { public let singleChat: Bool public let canEdit: [BotCanEdit] public let whoCanAdd: BotWhoCanAdd + public let kind: BotWebhookKind? + public let unfurlDomains: [String] + public let lastRequestAt: String? - public init(name: String, nickname: String, outgoingUrl: String? = nil, events: [BotEventName], triggerOn: BotTriggerOn, commands: [String], scopes: [String], template: String? = nil, templateEngine: BotTemplateEngine, challengeKey: String? = nil, linkPreviewEnabled: Bool, ignoreSelfMessages: Bool, eventsHistoryEnabled: Bool, singleChat: Bool, canEdit: [BotCanEdit], whoCanAdd: BotWhoCanAdd) { + public init(name: String, nickname: String, outgoingUrl: String? = nil, events: [BotEventName], triggerOn: BotTriggerOn, commands: [String], scopes: [String], template: String? = nil, templateEngine: BotTemplateEngine, challengeKey: String? = nil, linkPreviewEnabled: Bool, ignoreSelfMessages: Bool, eventsHistoryEnabled: Bool, singleChat: Bool, canEdit: [BotCanEdit], whoCanAdd: BotWhoCanAdd, kind: BotWebhookKind? = nil, unfurlDomains: [String], lastRequestAt: String? = nil) { self.name = name self.nickname = nickname self.outgoingUrl = outgoingUrl @@ -1379,6 +1895,9 @@ public struct BotWebhook: Codable { self.singleChat = singleChat self.canEdit = canEdit self.whoCanAdd = whoCanAdd + self.kind = kind + self.unfurlDomains = unfurlDomains + self.lastRequestAt = lastRequestAt } enum CodingKeys: String, CodingKey { @@ -1398,6 +1917,9 @@ public struct BotWebhook: Codable { case singleChat = "single_chat" case canEdit = "can_edit" case whoCanAdd = "who_can_add" + case kind + case unfurlDomains = "unfurl_domains" + case lastRequestAt = "last_request_at" } } @@ -1598,12 +2120,20 @@ public struct ChatUpdateRequest: Codable { public struct CompanyBotResponse: Codable { public let id: Int + public let oauthClient: BotOAuthClient? public let webhook: CompanyBotWebhook - public init(id: Int, webhook: CompanyBotWebhook) { + public init(id: Int, oauthClient: BotOAuthClient? = nil, webhook: CompanyBotWebhook) { self.id = id + self.oauthClient = oauthClient self.webhook = webhook } + + enum CodingKeys: String, CodingKey { + case id + case oauthClient = "oauth_client" + case webhook + } } public struct CompanyBotWebhook: Codable { @@ -2156,16 +2686,22 @@ public struct LinkSharedWebhookPayload: Codable { public let messageId: Int public let links: [WebhookLink] public let userId: Int + public let entityType: MessageEntityType + public let entityId: Int? + public let thread: WebhookMessageThread? public let createdAt: String public let webhookTimestamp: Int - public init(type: String, event: String, chatId: Int, messageId: Int, links: [WebhookLink], userId: Int, createdAt: String, webhookTimestamp: Int) { + public init(type: String, event: String, chatId: Int, messageId: Int, links: [WebhookLink], userId: Int, entityType: MessageEntityType, entityId: Int? = nil, thread: WebhookMessageThread? = nil, createdAt: String, webhookTimestamp: Int) { self.type = type self.event = event self.chatId = chatId self.messageId = messageId self.links = links self.userId = userId + self.entityType = entityType + self.entityId = entityId + self.thread = thread self.createdAt = createdAt self.webhookTimestamp = webhookTimestamp } @@ -2177,11 +2713,26 @@ public struct LinkSharedWebhookPayload: Codable { case messageId = "message_id" case links case userId = "user_id" + case entityType = "entity_type" + case entityId = "entity_id" + case thread case createdAt = "created_at" case webhookTimestamp = "webhook_timestamp" } } +public struct MarkChatUnreadRequest: Codable { + public let messageId: Int? + + public init(messageId: Int? = nil) { + self.messageId = messageId + } + + enum CodingKeys: String, CodingKey { + case messageId = "message_id" + } +} + public struct MessageThread: Codable { public let id: Int64 public let chatId: Int64 @@ -3671,6 +4222,8 @@ public enum AuditEventDetailsUnion: Codable { case auditDetailsVideoCallStarted(AuditDetailsVideoCallStarted) case auditDetailsVideoCallFinished(AuditDetailsVideoCallFinished) case auditDetailsVideoCallRecording(AuditDetailsVideoCallRecording) + case auditDetailsBotOAuthClientSecretRotated(AuditDetailsBotOAuthClientSecretRotated) + case auditDetailsBotOAuthClientDisabled(AuditDetailsBotOAuthClientDisabled) public init(from decoder: Decoder) throws { // AuditEventDetailsUnion carries no discriminator field: members are tried from most @@ -3687,6 +4240,18 @@ public enum AuditEventDetailsUnion: Codable { self = .auditDetailsSearch(value) return } + if let value = try? AuditDetailsBotOAuthClientDisabled(from: decoder) { + self = .auditDetailsBotOAuthClientDisabled(value) + return + } + if let value = try? AuditDetailsBotOAuthClient(from: decoder) { + self = .auditDetailsBotOAuthClient(value) + return + } + if let value = try? AuditDetailsBotScopes(from: decoder) { + self = .auditDetailsBotScopes(value) + return + } if let value = try? AuditDetailsVideoCallFinished(from: decoder) { self = .auditDetailsVideoCallFinished(value) return @@ -3699,12 +4264,12 @@ public enum AuditEventDetailsUnion: Codable { self = .auditDetailsRoleChanged(value) return } - if let value = try? AuditDetailsBotOAuthClient(from: decoder) { - self = .auditDetailsBotOAuthClient(value) + if let value = try? AuditDetailsBotOAuthClientSecretRotated(from: decoder) { + self = .auditDetailsBotOAuthClientSecretRotated(value) return } - if let value = try? AuditDetailsBotScopes(from: decoder) { - self = .auditDetailsBotScopes(value) + if let value = try? AuditDetailsBotWebhookSettings(from: decoder) { + self = .auditDetailsBotWebhookSettings(value) return } if let value = try? AuditDetailsChatRenamed(from: decoder) { @@ -3743,10 +4308,6 @@ public enum AuditEventDetailsUnion: Codable { self = .auditDetailsVideoCallStarted(value) return } - if let value = try? AuditDetailsBotWebhookSettings(from: decoder) { - self = .auditDetailsBotWebhookSettings(value) - return - } if let value = try? AuditDetailsChatId(from: decoder) { self = .auditDetailsChatId(value) return @@ -3832,6 +4393,10 @@ public enum AuditEventDetailsUnion: Codable { try value.encode(to: encoder) case .auditDetailsVideoCallRecording(let value): try value.encode(to: encoder) + case .auditDetailsBotOAuthClientSecretRotated(let value): + try value.encode(to: encoder) + case .auditDetailsBotOAuthClientDisabled(let value): + try value.encode(to: encoder) } } } @@ -3989,6 +4554,11 @@ public struct ListBotsResponse: Codable { public let meta: PaginationMeta } +public struct ListBotTokensResponse: Codable { + public let data: [BotAccessToken] + public let meta: PaginationMeta +} + public struct ListChatsResponse: Codable { public let data: [Chat] public let meta: PaginationMeta @@ -4077,10 +4647,22 @@ struct BotResponseDataWrapper: Codable { let data: BotResponse } +struct BotSelfTokenResponseDataWrapper: Codable { + let data: BotSelfTokenResponse +} + struct BotCreateResponseDataWrapper: Codable { let data: BotCreateResponse } +struct BotAccessTokenDataWrapper: Codable { + let data: BotAccessToken +} + +struct BotSelfResponseDataWrapper: Codable { + let data: BotSelfResponse +} + struct ChatDataWrapper: Codable { let data: Chat } diff --git a/sdk/swift/generated/examples.json b/sdk/swift/generated/examples.json index a24ac3642..ac5a3f4a5 100644 --- a/sdk/swift/generated/examples.json +++ b/sdk/swift/generated/examples.json @@ -18,7 +18,15 @@ }, "BotOperations_getBot": { "usage": "let response = try await client.bots.getBot(id: 1738816)", - "output": "BotResponse(id: Int, webhook: BotWebhook(name: String, nickname: String, outgoingUrl: String?, events: [BotEventName], triggerOn: BotTriggerOn, commands: [String], scopes: [String], template: String?, templateEngine: BotTemplateEngine, challengeKey: String?, linkPreviewEnabled: Bool, ignoreSelfMessages: Bool, eventsHistoryEnabled: Bool, singleChat: Bool, canEdit: [BotCanEdit], whoCanAdd: BotWhoCanAdd))" + "output": "BotResponse(id: Int, name: String, nickname: String, avatarUrl: String?, creatorId: Int?, createdAt: String, authorizedUsersCount: Int, lastUsedAt: String?, webhook: BotWebhook(name: String, nickname: String, outgoingUrl: String?, events: [BotEventName], triggerOn: BotTriggerOn, commands: [String], scopes: [String], template: String?, templateEngine: BotTemplateEngine, challengeKey: String?, linkPreviewEnabled: Bool, ignoreSelfMessages: Bool, eventsHistoryEnabled: Bool, singleChat: Bool, canEdit: [BotCanEdit], whoCanAdd: BotWhoCanAdd, kind: BotWebhookKind?, unfurlDomains: [String], lastRequestAt: String?), oauthClientEnabled: Bool, oauthClient: BotOAuthClient(clientId: String, clientSecretPreview: String, confidential: Bool, redirectUris: [String], scopes: [String])?, promo: BotPromo(description: String?, published: Bool, promoImages: [BotPromoImage(key: String, url: String)])?, permissions: BotPermissions(updateOauthClient: Bool, recreateToken: Bool, destroy: Bool), clientSecret: String?)" + }, + "BotOperations_getBotScopes": { + "usage": "let response = try await client.bots.getBotScopes(id: 1738816)", + "output": "BotScopeCatalog(scopes: [BotScopeCatalogItem(id: String, title: String, group: String, preset: [String])], groups: [BotScopeCatalogGroup(id: String, title: String, description: String)], presets: [BotScopeCatalogPreset(id: String, title: String)])" + }, + "BotOperations_listBotTokens": { + "usage": "let response = try await client.bots.listBotTokens(id: 1738816, limit: 1, cursor: \"eyJpZCI6NDgyN30\")", + "output": "ListBotTokensResponse(data: [BotAccessToken], meta: PaginationMeta)" }, "CompanyBotOperations_listCompanyBots": { "usage": "let response = try await client.bots.listCompanyBots(query: \"задач\", limit: 1, cursor: \"eyJpZCI6MTczODgxNn0\")", @@ -36,49 +44,80 @@ }, "BotOperations_selfRecreateBotToken": { "usage": "let response = try await client.bots.selfRecreateBotToken()", - "output": "BotCreateResponse(id: Int, webhook: BotWebhook(name: String, nickname: String, outgoingUrl: String?, events: [BotEventName], triggerOn: BotTriggerOn, commands: [String], scopes: [String], template: String?, templateEngine: BotTemplateEngine, challengeKey: String?, linkPreviewEnabled: Bool, ignoreSelfMessages: Bool, eventsHistoryEnabled: Bool, singleChat: Bool, canEdit: [BotCanEdit], whoCanAdd: BotWhoCanAdd), accessToken: String)" + "output": "BotSelfTokenResponse(id: Int, oauthClient: BotOAuthClient(clientId: String, clientSecretPreview: String, confidential: Bool, redirectUris: [String], scopes: [String])?, webhook: BotSelfWebhook(name: String, nickname: String, outgoingUrl: String?, events: [BotEventName], triggerOn: BotTriggerOn, commands: [String], scopes: [String], template: String?, templateEngine: BotTemplateEngine, challengeKey: String?, linkPreviewEnabled: Bool, ignoreSelfMessages: Bool, eventsHistoryEnabled: Bool, singleChat: Bool, canEdit: [BotCanEdit], whoCanAdd: BotWhoCanAdd), accessToken: String)" }, "BotOperations_createBot": { - "usage": "let body = BotCreateRequest(\n webhook: BotCreateRequestWebhook(\n name: \"Бот задач\",\n nickname: \"tasks_bot\",\n outgoingUrl: \"https://www.website.com/tasks/new\",\n events: [.messageNew],\n triggerOn: .commands,\n commands: [\"example\"],\n scopes: [\"example\"],\n template: \"Заказ от {{ client }} на сумму {{ amount }} ₽\",\n templateEngine: .liquid,\n challengeKey: \"challenge\",\n linkPreviewEnabled: true,\n ignoreSelfMessages: false,\n eventsHistoryEnabled: false,\n whoCanAdd: .creator,\n canEdit: [.admin],\n singleChat: false\n )\n)\nlet response = try await client.bots.createBot(body: body)", - "output": "BotCreateResponse(id: Int, webhook: BotWebhook(name: String, nickname: String, outgoingUrl: String?, events: [BotEventName], triggerOn: BotTriggerOn, commands: [String], scopes: [String], template: String?, templateEngine: BotTemplateEngine, challengeKey: String?, linkPreviewEnabled: Bool, ignoreSelfMessages: Bool, eventsHistoryEnabled: Bool, singleChat: Bool, canEdit: [BotCanEdit], whoCanAdd: BotWhoCanAdd), accessToken: String)", + "usage": "let body = BotCreateRequest(\n empty: false,\n webhook: BotCreateRequestWebhook(\n name: \"Бот задач\",\n nickname: \"tasks_bot\",\n outgoingUrl: \"https://www.website.com/tasks/new\",\n events: [.messageNew],\n triggerOn: .commands,\n commands: [\"example\"],\n scopes: [\"example\"],\n template: \"Заказ от {{ client }} на сумму {{ amount }} ₽\",\n templateEngine: .liquid,\n challengeKey: \"challenge\",\n linkPreviewEnabled: true,\n ignoreSelfMessages: false,\n eventsHistoryEnabled: false,\n whoCanAdd: .creator,\n canEdit: [.admin],\n singleChat: false,\n kind: .simple,\n unfurlDomains: [\"example\"]\n ),\n oauthClient: BotOAuthClientRequest(\n confidential: true,\n redirectUris: [\"example\"],\n scopes: [\"example\"]\n ),\n promo: BotPromoRequest(\n description: \"Собирает сводку по задачам Jira и присылает её в чат\",\n published: true,\n promoImages: [\"example\"]\n )\n)\nlet response = try await client.bots.createBot(body: body)", + "output": "BotCreateResponse(id: Int, name: String, nickname: String, avatarUrl: String?, creatorId: Int?, createdAt: String, authorizedUsersCount: Int, lastUsedAt: String?, webhook: BotWebhook(name: String, nickname: String, outgoingUrl: String?, events: [BotEventName], triggerOn: BotTriggerOn, commands: [String], scopes: [String], template: String?, templateEngine: BotTemplateEngine, challengeKey: String?, linkPreviewEnabled: Bool, ignoreSelfMessages: Bool, eventsHistoryEnabled: Bool, singleChat: Bool, canEdit: [BotCanEdit], whoCanAdd: BotWhoCanAdd, kind: BotWebhookKind?, unfurlDomains: [String], lastRequestAt: String?), oauthClientEnabled: Bool, oauthClient: BotOAuthClient(clientId: String, clientSecretPreview: String, confidential: Bool, redirectUris: [String], scopes: [String])?, promo: BotPromo(description: String?, published: Bool, promoImages: [BotPromoImage(key: String, url: String)])?, permissions: BotPermissions(updateOauthClient: Bool, recreateToken: Bool, destroy: Bool), clientSecret: String?, accessToken: String?)", "imports": [ "BotCanEdit", "BotCreateRequest", "BotCreateRequestWebhook", "BotEventName", + "BotOAuthClientRequest", + "BotPromoRequest", "BotTemplateEngine", "BotTriggerOn", + "BotWebhookKind", "BotWhoCanAdd" ] }, "BotOperations_recreateBotToken": { "usage": "let response = try await client.bots.recreateBotToken(id: 1738816)", - "output": "BotCreateResponse(id: Int, webhook: BotWebhook(name: String, nickname: String, outgoingUrl: String?, events: [BotEventName], triggerOn: BotTriggerOn, commands: [String], scopes: [String], template: String?, templateEngine: BotTemplateEngine, challengeKey: String?, linkPreviewEnabled: Bool, ignoreSelfMessages: Bool, eventsHistoryEnabled: Bool, singleChat: Bool, canEdit: [BotCanEdit], whoCanAdd: BotWhoCanAdd), accessToken: String)" + "output": "BotCreateResponse(id: Int, name: String, nickname: String, avatarUrl: String?, creatorId: Int?, createdAt: String, authorizedUsersCount: Int, lastUsedAt: String?, webhook: BotWebhook(name: String, nickname: String, outgoingUrl: String?, events: [BotEventName], triggerOn: BotTriggerOn, commands: [String], scopes: [String], template: String?, templateEngine: BotTemplateEngine, challengeKey: String?, linkPreviewEnabled: Bool, ignoreSelfMessages: Bool, eventsHistoryEnabled: Bool, singleChat: Bool, canEdit: [BotCanEdit], whoCanAdd: BotWhoCanAdd, kind: BotWebhookKind?, unfurlDomains: [String], lastRequestAt: String?), oauthClientEnabled: Bool, oauthClient: BotOAuthClient(clientId: String, clientSecretPreview: String, confidential: Bool, redirectUris: [String], scopes: [String])?, promo: BotPromo(description: String?, published: Bool, promoImages: [BotPromoImage(key: String, url: String)])?, permissions: BotPermissions(updateOauthClient: Bool, recreateToken: Bool, destroy: Bool), clientSecret: String?, accessToken: String?)" + }, + "BotOperations_rotateBotClientSecret": { + "usage": "let response = try await client.bots.rotateBotClientSecret(id: 1738816)", + "output": "BotResponse(id: Int, name: String, nickname: String, avatarUrl: String?, creatorId: Int?, createdAt: String, authorizedUsersCount: Int, lastUsedAt: String?, webhook: BotWebhook(name: String, nickname: String, outgoingUrl: String?, events: [BotEventName], triggerOn: BotTriggerOn, commands: [String], scopes: [String], template: String?, templateEngine: BotTemplateEngine, challengeKey: String?, linkPreviewEnabled: Bool, ignoreSelfMessages: Bool, eventsHistoryEnabled: Bool, singleChat: Bool, canEdit: [BotCanEdit], whoCanAdd: BotWhoCanAdd, kind: BotWebhookKind?, unfurlDomains: [String], lastRequestAt: String?), oauthClientEnabled: Bool, oauthClient: BotOAuthClient(clientId: String, clientSecretPreview: String, confidential: Bool, redirectUris: [String], scopes: [String])?, promo: BotPromo(description: String?, published: Bool, promoImages: [BotPromoImage(key: String, url: String)])?, permissions: BotPermissions(updateOauthClient: Bool, recreateToken: Bool, destroy: Bool), clientSecret: String?)" + }, + "BotOperations_createBotToken": { + "usage": "let body = BotTokenCreateRequest(name: \"Сервер уведомлений\", scopes: [\"example\"])\nlet response = try await client.bots.createBotToken(id: 1738816, body: body)", + "output": "BotAccessToken(id: Int64, token: String, name: String?, userId: Int64, scopes: [String], createdAt: String, revokedAt: String?, expiresIn: Int?, lastUsedAt: String?, authorizedAt: String?)", + "imports": [ + "BotTokenCreateRequest" + ] + }, + "BotOperations_reissueBotToken": { + "usage": "let tokenId = Int64(4827)\nlet response = try await client.bots.reissueBotToken(id: 1738816, tokenId: tokenId)", + "output": "BotAccessToken(id: Int64, token: String, name: String?, userId: Int64, scopes: [String], createdAt: String, revokedAt: String?, expiresIn: Int?, lastUsedAt: String?, authorizedAt: String?)" }, "BotOperations_selfUpdateBotWebhook": { "usage": "let body = BotWebhookSelfUpdateRequest(webhook: BotWebhookSelfUpdateRequestWebhook(outgoingUrl: \"https://www.website.com/tasks/new\"))\nlet response = try await client.bots.selfUpdateBotWebhook(body: body)", - "output": "BotResponse(id: Int, webhook: BotWebhook(name: String, nickname: String, outgoingUrl: String?, events: [BotEventName], triggerOn: BotTriggerOn, commands: [String], scopes: [String], template: String?, templateEngine: BotTemplateEngine, challengeKey: String?, linkPreviewEnabled: Bool, ignoreSelfMessages: Bool, eventsHistoryEnabled: Bool, singleChat: Bool, canEdit: [BotCanEdit], whoCanAdd: BotWhoCanAdd))", + "output": "BotSelfResponse(id: Int, oauthClient: BotOAuthClient(clientId: String, clientSecretPreview: String, confidential: Bool, redirectUris: [String], scopes: [String])?, webhook: BotSelfWebhook(name: String, nickname: String, outgoingUrl: String?, events: [BotEventName], triggerOn: BotTriggerOn, commands: [String], scopes: [String], template: String?, templateEngine: BotTemplateEngine, challengeKey: String?, linkPreviewEnabled: Bool, ignoreSelfMessages: Bool, eventsHistoryEnabled: Bool, singleChat: Bool, canEdit: [BotCanEdit], whoCanAdd: BotWhoCanAdd))", "imports": [ "BotWebhookSelfUpdateRequest", "BotWebhookSelfUpdateRequestWebhook" ] }, "BotOperations_updateBot": { - "usage": "let body = BotUpdateRequest(\n webhook: BotUpdateRequestWebhook(\n name: \"Бот задач\",\n nickname: \"tasks_bot\",\n outgoingUrl: \"https://www.website.com/tasks/new\",\n events: [.messageNew],\n triggerOn: .commands,\n commands: [\"example\"],\n scopes: [\"example\"],\n template: \"Заказ от {{ client }} на сумму {{ amount }} ₽\",\n templateEngine: .liquid,\n challengeKey: \"challenge\",\n linkPreviewEnabled: true,\n ignoreSelfMessages: false,\n eventsHistoryEnabled: false,\n whoCanAdd: .creator,\n canEdit: [.admin]\n )\n)\nlet response = try await client.bots.updateBot(id: 1738816, body: body)", - "output": "BotResponse(id: Int, webhook: BotWebhook(name: String, nickname: String, outgoingUrl: String?, events: [BotEventName], triggerOn: BotTriggerOn, commands: [String], scopes: [String], template: String?, templateEngine: BotTemplateEngine, challengeKey: String?, linkPreviewEnabled: Bool, ignoreSelfMessages: Bool, eventsHistoryEnabled: Bool, singleChat: Bool, canEdit: [BotCanEdit], whoCanAdd: BotWhoCanAdd))", + "usage": "let body = BotUpdateRequest(\n webhook: BotUpdateRequestWebhook(\n name: \"Бот задач\",\n nickname: \"tasks_bot\",\n outgoingUrl: \"https://www.website.com/tasks/new\",\n events: [.messageNew],\n triggerOn: .commands,\n commands: [\"example\"],\n scopes: [\"example\"],\n template: \"Заказ от {{ client }} на сумму {{ amount }} ₽\",\n templateEngine: .liquid,\n challengeKey: \"challenge\",\n linkPreviewEnabled: true,\n ignoreSelfMessages: false,\n eventsHistoryEnabled: false,\n whoCanAdd: .creator,\n canEdit: [.admin],\n singleChat: false,\n kind: .simple,\n unfurlDomains: [\"example\"]\n ),\n oauthClient: BotOAuthClientRequest(\n confidential: true,\n redirectUris: [\"example\"],\n scopes: [\"example\"]\n ),\n promo: BotPromoRequest(\n description: \"Собирает сводку по задачам Jira и присылает её в чат\",\n published: true,\n promoImages: [\"example\"]\n )\n)\nlet response = try await client.bots.updateBot(id: 1738816, body: body)", + "output": "BotResponse(id: Int, name: String, nickname: String, avatarUrl: String?, creatorId: Int?, createdAt: String, authorizedUsersCount: Int, lastUsedAt: String?, webhook: BotWebhook(name: String, nickname: String, outgoingUrl: String?, events: [BotEventName], triggerOn: BotTriggerOn, commands: [String], scopes: [String], template: String?, templateEngine: BotTemplateEngine, challengeKey: String?, linkPreviewEnabled: Bool, ignoreSelfMessages: Bool, eventsHistoryEnabled: Bool, singleChat: Bool, canEdit: [BotCanEdit], whoCanAdd: BotWhoCanAdd, kind: BotWebhookKind?, unfurlDomains: [String], lastRequestAt: String?), oauthClientEnabled: Bool, oauthClient: BotOAuthClient(clientId: String, clientSecretPreview: String, confidential: Bool, redirectUris: [String], scopes: [String])?, promo: BotPromo(description: String?, published: Bool, promoImages: [BotPromoImage(key: String, url: String)])?, permissions: BotPermissions(updateOauthClient: Bool, recreateToken: Bool, destroy: Bool), clientSecret: String?)", "imports": [ "BotCanEdit", "BotEventName", + "BotOAuthClientRequest", + "BotPromoRequest", "BotTemplateEngine", "BotTriggerOn", "BotUpdateRequest", "BotUpdateRequestWebhook", + "BotWebhookKind", "BotWhoCanAdd" ] }, + "BotOperations_updateBotToken": { + "usage": "let tokenId = Int64(4827)\nlet body = BotTokenUpdateRequest(name: \"Сервер уведомлений\", scopes: [\"example\"])\nlet response = try await client.bots.updateBotToken(id: 1738816, tokenId: tokenId, body: body)", + "output": "BotAccessToken(id: Int64, token: String, name: String?, userId: Int64, scopes: [String], createdAt: String, revokedAt: String?, expiresIn: Int?, lastUsedAt: String?, authorizedAt: String?)", + "imports": [ + "BotTokenUpdateRequest" + ] + }, "BotOperations_deleteBot": { "usage": "try await client.bots.deleteBot(id: 1738816)" }, + "BotOperations_deleteBotToken": { + "usage": "let tokenId = Int64(4827)\ntry await client.bots.deleteBotToken(id: 1738816, tokenId: tokenId)" + }, "BotOperations_deleteWebhookEvent": { "usage": "try await client.bots.deleteWebhookEvent(id: \"01KAJZ2XDSS2S3DSW9EXJZ0TBV\")" }, @@ -134,6 +173,12 @@ "ChatOperations_unarchiveChat": { "usage": "try await client.chats.unarchiveChat(id: 334)" }, + "ChatOperations_markChatUnread": { + "usage": "let body = MarkChatUnreadRequest(messageId: 1194275)\ntry await client.chats.markChatUnread(id: 334, body: body)", + "imports": [ + "MarkChatUnreadRequest" + ] + }, "ChatMemberOperations_listMembers": { "usage": "let response = try await client.members.listMembers(id: 334, role: .all, limit: 1, cursor: \"eyJpZCI6MTAsImRpciI6ImFzYyJ9\")", "output": "ListMembersResponse(data: [User], meta: PaginationMeta)", diff --git a/sdk/typescript/src/generated/client.ts b/sdk/typescript/src/generated/client.ts index 9fb2ceacd..a55e5dd45 100644 --- a/sdk/typescript/src/generated/client.ts +++ b/sdk/typescript/src/generated/client.ts @@ -7,6 +7,10 @@ import { ListBotsParams, ListBotsResponse, BotResponse, + BotScopeCatalog, + ListBotTokensParams, + ListBotTokensResponse, + BotAccessToken, ListCompanyBotsParams, ListCompanyBotsResponse, CompanyBotResponse, @@ -14,10 +18,14 @@ import { GetWebhookEventsResponse, WebhookEvent, WebhookPayloadUnion, - BotCreateResponse, + BotSelfTokenResponse, BotCreateRequest, + BotCreateResponse, + BotTokenCreateRequest, BotWebhookSelfUpdateRequest, + BotSelfResponse, BotUpdateRequest, + BotTokenUpdateRequest, ListChatsParams, ListChatsResponse, Chat, @@ -26,6 +34,7 @@ import { ChatCreateRequest, ExportRequest, ChatUpdateRequest, + MarkChatUnreadRequest, ListMembersParams, ListMembersResponse, User, @@ -177,6 +186,18 @@ export class BotsService { throw new Error("Bots.getBot is not implemented"); } + async getBotScopes(id: number): Promise { + throw new Error("Bots.getBotScopes is not implemented"); + } + + async listBotTokens(id: number, params?: ListBotTokensParams): Promise { + throw new Error("Bots.listBotTokens is not implemented"); + } + + async listBotTokensAll(id: number, params?: Omit): Promise { + throw new Error("Bots.listBotTokensAll is not implemented"); + } + async listCompanyBots(params?: ListCompanyBotsParams): Promise { throw new Error("Bots.listCompanyBots is not implemented"); } @@ -240,7 +261,7 @@ export class BotsService { } } - async selfRecreateBotToken(): Promise { + async selfRecreateBotToken(): Promise { throw new Error("Bots.selfRecreateBotToken is not implemented"); } @@ -252,7 +273,19 @@ export class BotsService { throw new Error("Bots.recreateBotToken is not implemented"); } - async selfUpdateBotWebhook(request: BotWebhookSelfUpdateRequest): Promise { + async rotateBotClientSecret(id: number): Promise { + throw new Error("Bots.rotateBotClientSecret is not implemented"); + } + + async createBotToken(id: number, request: BotTokenCreateRequest): Promise { + throw new Error("Bots.createBotToken is not implemented"); + } + + async reissueBotToken(id: number, tokenId: number): Promise { + throw new Error("Bots.reissueBotToken is not implemented"); + } + + async selfUpdateBotWebhook(request: BotWebhookSelfUpdateRequest): Promise { throw new Error("Bots.selfUpdateBotWebhook is not implemented"); } @@ -260,10 +293,18 @@ export class BotsService { throw new Error("Bots.updateBot is not implemented"); } + async updateBotToken(id: number, tokenId: number, request: BotTokenUpdateRequest): Promise { + throw new Error("Bots.updateBotToken is not implemented"); + } + async deleteBot(id: number): Promise { throw new Error("Bots.deleteBot is not implemented"); } + async deleteBotToken(id: number, tokenId: number): Promise { + throw new Error("Bots.deleteBotToken is not implemented"); + } + async deleteWebhookEvent(id: string): Promise { throw new Error("Bots.deleteWebhookEvent is not implemented"); } @@ -326,6 +367,54 @@ export class BotsServiceImpl extends BotsService { } } + async getBotScopes(id: number): Promise { + const response = await fetchWithRetry(`${this.baseUrl}/bots/${id}/scopes`, { + headers: this.headers, + }); + const body = await response.json(); + switch (response.status) { + case 200: + return deserializeType("BotScopeCatalog", body) as BotScopeCatalog; + case 401: + throw new OAuthError(body.error); + default: + throw new ApiError(body.errors); + } + } + + async listBotTokens(id: number, params?: ListBotTokensParams): Promise { + const query = new URLSearchParams(); + if (params?.limit !== undefined) query.set("limit", String(params.limit)); + if (params?.cursor !== undefined) query.set("cursor", params.cursor); + const url = `${this.baseUrl}/bots/${id}/tokens${query.toString() ? `?${query}` : ""}`; + const response = await fetchWithRetry(url, { + headers: this.headers, + }); + const body = await response.json(); + switch (response.status) { + case 200: + return deserialize(body) as ListBotTokensResponse; + case 401: + throw new OAuthError(body.error); + default: + throw new ApiError(body.errors); + } + } + + async listBotTokensAll(id: number, params?: Omit): Promise { + const items: BotAccessToken[] = []; + let cursor: string | undefined; + let hasNext = true; + while (hasNext) { + const response = await this.listBotTokens(id, { ...params, cursor } as ListBotTokensParams); + items.push(...response.data); + if (response.data.length === 0) break; + cursor = response.meta.paginate.nextPage; + hasNext = response.meta.paginate.hasNext ?? true; + } + return items; + } + async listCompanyBots(params?: ListCompanyBotsParams): Promise { const query = new URLSearchParams(); if (params?.query !== undefined) query.set("query", params.query); @@ -393,7 +482,7 @@ export class BotsServiceImpl extends BotsService { return items; } - async selfRecreateBotToken(): Promise { + async selfRecreateBotToken(): Promise { const response = await fetchWithRetry(`${this.baseUrl}/bot/recreate_token`, { method: "POST", headers: this.headers, @@ -401,7 +490,7 @@ export class BotsServiceImpl extends BotsService { const body = await response.json(); switch (response.status) { case 200: - return deserializeType("BotCreateResponse", body.data) as BotCreateResponse; + return deserializeType("BotSelfTokenResponse", body.data) as BotSelfTokenResponse; case 401: throw new OAuthError(body.error); default: @@ -442,7 +531,56 @@ export class BotsServiceImpl extends BotsService { } } - async selfUpdateBotWebhook(request: BotWebhookSelfUpdateRequest): Promise { + async rotateBotClientSecret(id: number): Promise { + const response = await fetchWithRetry(`${this.baseUrl}/bots/${id}/rotate_client_secret`, { + method: "POST", + headers: this.headers, + }); + const body = await response.json(); + switch (response.status) { + case 200: + return deserializeType("BotResponse", body.data) as BotResponse; + case 401: + throw new OAuthError(body.error); + default: + throw new ApiError(body.errors); + } + } + + async createBotToken(id: number, request: BotTokenCreateRequest): Promise { + const response = await fetchWithRetry(`${this.baseUrl}/bots/${id}/tokens`, { + method: "POST", + headers: { ...this.headers, "Content-Type": "application/json" }, + body: JSON.stringify(serializeType("BotTokenCreateRequest", request)), + }); + const body = await response.json(); + switch (response.status) { + case 201: + return deserializeType("BotAccessToken", body.data) as BotAccessToken; + case 401: + throw new OAuthError(body.error); + default: + throw new ApiError(body.errors); + } + } + + async reissueBotToken(id: number, tokenId: number): Promise { + const response = await fetchWithRetry(`${this.baseUrl}/bots/${id}/tokens/${tokenId}/reissue`, { + method: "POST", + headers: this.headers, + }); + const body = await response.json(); + switch (response.status) { + case 200: + return deserializeType("BotAccessToken", body.data) as BotAccessToken; + case 401: + throw new OAuthError(body.error); + default: + throw new ApiError(body.errors); + } + } + + async selfUpdateBotWebhook(request: BotWebhookSelfUpdateRequest): Promise { const response = await fetchWithRetry(`${this.baseUrl}/bot/webhook`, { method: "PUT", headers: { ...this.headers, "Content-Type": "application/json" }, @@ -451,7 +589,7 @@ export class BotsServiceImpl extends BotsService { const body = await response.json(); switch (response.status) { case 200: - return deserializeType("BotResponse", body.data) as BotResponse; + return deserializeType("BotSelfResponse", body.data) as BotSelfResponse; case 401: throw new OAuthError(body.error); default: @@ -476,6 +614,23 @@ export class BotsServiceImpl extends BotsService { } } + async updateBotToken(id: number, tokenId: number, request: BotTokenUpdateRequest): Promise { + const response = await fetchWithRetry(`${this.baseUrl}/bots/${id}/tokens/${tokenId}`, { + method: "PUT", + headers: { ...this.headers, "Content-Type": "application/json" }, + body: JSON.stringify(serializeType("BotTokenUpdateRequest", request)), + }); + const body = await response.json(); + switch (response.status) { + case 200: + return deserializeType("BotAccessToken", body.data) as BotAccessToken; + case 401: + throw new OAuthError(body.error); + default: + throw new ApiError(body.errors); + } + } + async deleteBot(id: number): Promise { const response = await fetchWithRetry(`${this.baseUrl}/bots/${id}`, { method: "DELETE", @@ -491,6 +646,21 @@ export class BotsServiceImpl extends BotsService { } } + async deleteBotToken(id: number, tokenId: number): Promise { + const response = await fetchWithRetry(`${this.baseUrl}/bots/${id}/tokens/${tokenId}`, { + method: "DELETE", + headers: this.headers, + }); + switch (response.status) { + case 204: + return; + case 401: + throw new OAuthError(((await response.json()) as any).error); + default: + throw new ApiError(((await response.json()) as any).errors); + } + } + async deleteWebhookEvent(id: string): Promise { const response = await fetchWithRetry(`${this.baseUrl}/webhooks/events/${id}`, { method: "DELETE", @@ -551,6 +721,10 @@ export class ChatsService { async unarchiveChat(id: number): Promise { throw new Error("Chats.unarchiveChat is not implemented"); } + + async markChatUnread(id: number, request: MarkChatUnreadRequest): Promise { + throw new Error("Chats.markChatUnread is not implemented"); + } } export class ChatsServiceImpl extends ChatsService { @@ -749,6 +923,22 @@ export class ChatsServiceImpl extends ChatsService { throw new ApiError(((await response.json()) as any).errors); } } + + async markChatUnread(id: number, request: MarkChatUnreadRequest): Promise { + const response = await fetchWithRetry(`${this.baseUrl}/chats/${id}/unread`, { + method: "PUT", + headers: { ...this.headers, "Content-Type": "application/json" }, + body: JSON.stringify(serializeType("MarkChatUnreadRequest", request)), + }); + switch (response.status) { + case 204: + return; + case 401: + throw new OAuthError(((await response.json()) as any).error); + default: + throw new ApiError(((await response.json()) as any).errors); + } + } } export class MembersService { diff --git a/sdk/typescript/src/generated/examples.json b/sdk/typescript/src/generated/examples.json index a853b637d..3347dc641 100644 --- a/sdk/typescript/src/generated/examples.json +++ b/sdk/typescript/src/generated/examples.json @@ -18,7 +18,15 @@ }, "BotOperations_getBot": { "usage": "const response = client.bots.getBot(1738816)", - "output": "BotResponse({ id: number, webhook: BotWebhook({ name: string, nickname: string, outgoingUrl: string | null, events: BotEventName[], triggerOn: BotTriggerOn, commands: string[], scopes: string[], template: string | null, templateEngine: BotTemplateEngine, challengeKey: string | null, linkPreviewEnabled: boolean, ignoreSelfMessages: boolean, eventsHistoryEnabled: boolean, singleChat: boolean, canEdit: BotCanEdit[], whoCanAdd: BotWhoCanAdd }) })" + "output": "BotResponse({ id: number, name: string, nickname: string, avatarUrl: string | null, creatorId: number | null, createdAt: string, authorizedUsersCount: number, lastUsedAt: string | null, webhook: BotWebhook({ name: string, nickname: string, outgoingUrl: string | null, events: BotEventName[], triggerOn: BotTriggerOn, commands: string[], scopes: string[], template: string | null, templateEngine: BotTemplateEngine, challengeKey: string | null, linkPreviewEnabled: boolean, ignoreSelfMessages: boolean, eventsHistoryEnabled: boolean, singleChat: boolean, canEdit: BotCanEdit[], whoCanAdd: BotWhoCanAdd, kind: BotWebhookKind | null, unfurlDomains: string[], lastRequestAt: string | null }), oauthClientEnabled: boolean, oauthClient: BotOAuthClient({ clientId: string, clientSecretPreview: string, confidential: boolean, redirectUris: string[], scopes: string[] }) | null, promo: BotPromo({ description: string | null, published: boolean, promoImages: BotPromoImage({ key: string, url: string })[] }) | null, permissions: BotPermissions({ updateOauthClient: boolean, recreateToken: boolean, destroy: boolean }), clientSecret?: string })" + }, + "BotOperations_getBotScopes": { + "usage": "const response = client.bots.getBotScopes(1738816)", + "output": "BotScopeCatalog({ scopes: BotScopeCatalogItem({ id: string, title: string, group: string, preset: string[] })[], groups: BotScopeCatalogGroup({ id: string, title: string, description: string })[], presets: BotScopeCatalogPreset({ id: string, title: string })[] })" + }, + "BotOperations_listBotTokens": { + "usage": "const response = client.bots.listBotTokens(1738816, { limit: 1, cursor: \"eyJpZCI6NDgyN30\" })", + "output": "ListBotTokensResponse({ data: BotAccessToken[], meta: PaginationMeta })" }, "CompanyBotOperations_listCompanyBots": { "usage": "const response = client.bots.listCompanyBots({\n query: \"задач\",\n limit: 1,\n cursor: \"eyJpZCI6MTczODgxNn0\"\n})", @@ -36,49 +44,80 @@ }, "BotOperations_selfRecreateBotToken": { "usage": "const response = client.bots.selfRecreateBotToken()", - "output": "BotCreateResponse({ id: number, webhook: BotWebhook({ name: string, nickname: string, outgoingUrl: string | null, events: BotEventName[], triggerOn: BotTriggerOn, commands: string[], scopes: string[], template: string | null, templateEngine: BotTemplateEngine, challengeKey: string | null, linkPreviewEnabled: boolean, ignoreSelfMessages: boolean, eventsHistoryEnabled: boolean, singleChat: boolean, canEdit: BotCanEdit[], whoCanAdd: BotWhoCanAdd }), accessToken: string })" + "output": "BotSelfTokenResponse({ id: number, oauthClient: BotOAuthClient({ clientId: string, clientSecretPreview: string, confidential: boolean, redirectUris: string[], scopes: string[] }) | null, webhook: BotSelfWebhook({ name: string, nickname: string, outgoingUrl: string | null, events: BotEventName[], triggerOn: BotTriggerOn, commands: string[], scopes: string[], template: string | null, templateEngine: BotTemplateEngine, challengeKey: string | null, linkPreviewEnabled: boolean, ignoreSelfMessages: boolean, eventsHistoryEnabled: boolean, singleChat: boolean, canEdit: BotCanEdit[], whoCanAdd: BotWhoCanAdd }), accessToken: string })" }, "BotOperations_createBot": { - "usage": "const request: BotCreateRequest = {\n webhook: {\n name: \"Бот задач\",\n nickname: \"tasks_bot\",\n outgoingUrl: \"https://www.website.com/tasks/new\",\n events: [BotEventName.MessageNew],\n triggerOn: BotTriggerOn.Commands,\n commands: [\"example\"],\n scopes: [\"example\"],\n template: \"Заказ от {{ client }} на сумму {{ amount }} ₽\",\n templateEngine: BotTemplateEngine.Liquid,\n challengeKey: \"challenge\",\n linkPreviewEnabled: true,\n ignoreSelfMessages: false,\n eventsHistoryEnabled: false,\n whoCanAdd: BotWhoCanAdd.Creator,\n canEdit: [BotCanEdit.Admin],\n singleChat: false\n }\n}\nconst response = client.bots.createBot(request)", - "output": "BotCreateResponse({ id: number, webhook: BotWebhook({ name: string, nickname: string, outgoingUrl: string | null, events: BotEventName[], triggerOn: BotTriggerOn, commands: string[], scopes: string[], template: string | null, templateEngine: BotTemplateEngine, challengeKey: string | null, linkPreviewEnabled: boolean, ignoreSelfMessages: boolean, eventsHistoryEnabled: boolean, singleChat: boolean, canEdit: BotCanEdit[], whoCanAdd: BotWhoCanAdd }), accessToken: string })", + "usage": "const request: BotCreateRequest = {\n empty: false,\n webhook: {\n name: \"Бот задач\",\n nickname: \"tasks_bot\",\n outgoingUrl: \"https://www.website.com/tasks/new\",\n events: [BotEventName.MessageNew],\n triggerOn: BotTriggerOn.Commands,\n commands: [\"example\"],\n scopes: [\"example\"],\n template: \"Заказ от {{ client }} на сумму {{ amount }} ₽\",\n templateEngine: BotTemplateEngine.Liquid,\n challengeKey: \"challenge\",\n linkPreviewEnabled: true,\n ignoreSelfMessages: false,\n eventsHistoryEnabled: false,\n whoCanAdd: BotWhoCanAdd.Creator,\n canEdit: [BotCanEdit.Admin],\n singleChat: false,\n kind: BotWebhookKind.Simple,\n unfurlDomains: [\"example\"]\n },\n oauthClient: {\n confidential: true,\n redirectUris: [\"example\"],\n scopes: [\"example\"]\n },\n promo: {\n description: \"Собирает сводку по задачам Jira и присылает её в чат\",\n published: true,\n promoImages: [\"example\"]\n }\n}\nconst response = client.bots.createBot(request)", + "output": "BotCreateResponse({ id: number, name: string, nickname: string, avatarUrl: string | null, creatorId: number | null, createdAt: string, authorizedUsersCount: number, lastUsedAt: string | null, webhook: BotWebhook({ name: string, nickname: string, outgoingUrl: string | null, events: BotEventName[], triggerOn: BotTriggerOn, commands: string[], scopes: string[], template: string | null, templateEngine: BotTemplateEngine, challengeKey: string | null, linkPreviewEnabled: boolean, ignoreSelfMessages: boolean, eventsHistoryEnabled: boolean, singleChat: boolean, canEdit: BotCanEdit[], whoCanAdd: BotWhoCanAdd, kind: BotWebhookKind | null, unfurlDomains: string[], lastRequestAt: string | null }), oauthClientEnabled: boolean, oauthClient: BotOAuthClient({ clientId: string, clientSecretPreview: string, confidential: boolean, redirectUris: string[], scopes: string[] }) | null, promo: BotPromo({ description: string | null, published: boolean, promoImages: BotPromoImage({ key: string, url: string })[] }) | null, permissions: BotPermissions({ updateOauthClient: boolean, recreateToken: boolean, destroy: boolean }), clientSecret?: string, accessToken?: string })", "imports": [ "BotCanEdit", "BotCreateRequest", "BotCreateRequestWebhook", "BotEventName", + "BotOAuthClientRequest", + "BotPromoRequest", "BotTemplateEngine", "BotTriggerOn", + "BotWebhookKind", "BotWhoCanAdd" ] }, "BotOperations_recreateBotToken": { "usage": "const response = client.bots.recreateBotToken(1738816)", - "output": "BotCreateResponse({ id: number, webhook: BotWebhook({ name: string, nickname: string, outgoingUrl: string | null, events: BotEventName[], triggerOn: BotTriggerOn, commands: string[], scopes: string[], template: string | null, templateEngine: BotTemplateEngine, challengeKey: string | null, linkPreviewEnabled: boolean, ignoreSelfMessages: boolean, eventsHistoryEnabled: boolean, singleChat: boolean, canEdit: BotCanEdit[], whoCanAdd: BotWhoCanAdd }), accessToken: string })" + "output": "BotCreateResponse({ id: number, name: string, nickname: string, avatarUrl: string | null, creatorId: number | null, createdAt: string, authorizedUsersCount: number, lastUsedAt: string | null, webhook: BotWebhook({ name: string, nickname: string, outgoingUrl: string | null, events: BotEventName[], triggerOn: BotTriggerOn, commands: string[], scopes: string[], template: string | null, templateEngine: BotTemplateEngine, challengeKey: string | null, linkPreviewEnabled: boolean, ignoreSelfMessages: boolean, eventsHistoryEnabled: boolean, singleChat: boolean, canEdit: BotCanEdit[], whoCanAdd: BotWhoCanAdd, kind: BotWebhookKind | null, unfurlDomains: string[], lastRequestAt: string | null }), oauthClientEnabled: boolean, oauthClient: BotOAuthClient({ clientId: string, clientSecretPreview: string, confidential: boolean, redirectUris: string[], scopes: string[] }) | null, promo: BotPromo({ description: string | null, published: boolean, promoImages: BotPromoImage({ key: string, url: string })[] }) | null, permissions: BotPermissions({ updateOauthClient: boolean, recreateToken: boolean, destroy: boolean }), clientSecret?: string, accessToken?: string })" + }, + "BotOperations_rotateBotClientSecret": { + "usage": "const response = client.bots.rotateBotClientSecret(1738816)", + "output": "BotResponse({ id: number, name: string, nickname: string, avatarUrl: string | null, creatorId: number | null, createdAt: string, authorizedUsersCount: number, lastUsedAt: string | null, webhook: BotWebhook({ name: string, nickname: string, outgoingUrl: string | null, events: BotEventName[], triggerOn: BotTriggerOn, commands: string[], scopes: string[], template: string | null, templateEngine: BotTemplateEngine, challengeKey: string | null, linkPreviewEnabled: boolean, ignoreSelfMessages: boolean, eventsHistoryEnabled: boolean, singleChat: boolean, canEdit: BotCanEdit[], whoCanAdd: BotWhoCanAdd, kind: BotWebhookKind | null, unfurlDomains: string[], lastRequestAt: string | null }), oauthClientEnabled: boolean, oauthClient: BotOAuthClient({ clientId: string, clientSecretPreview: string, confidential: boolean, redirectUris: string[], scopes: string[] }) | null, promo: BotPromo({ description: string | null, published: boolean, promoImages: BotPromoImage({ key: string, url: string })[] }) | null, permissions: BotPermissions({ updateOauthClient: boolean, recreateToken: boolean, destroy: boolean }), clientSecret?: string })" + }, + "BotOperations_createBotToken": { + "usage": "const request: BotTokenCreateRequest = { name: \"Сервер уведомлений\", scopes: [\"example\"] }\nconst response = client.bots.createBotToken(1738816, request)", + "output": "BotAccessToken({ id: number, token: string, name: string | null, userId: number, scopes: string[], createdAt: string, revokedAt: string | null, expiresIn: number | null, lastUsedAt: string | null, authorizedAt: string | null })", + "imports": [ + "BotTokenCreateRequest" + ] + }, + "BotOperations_reissueBotToken": { + "usage": "const response = client.bots.reissueBotToken(1738816, 4827)", + "output": "BotAccessToken({ id: number, token: string, name: string | null, userId: number, scopes: string[], createdAt: string, revokedAt: string | null, expiresIn: number | null, lastUsedAt: string | null, authorizedAt: string | null })" }, "BotOperations_selfUpdateBotWebhook": { "usage": "const request: BotWebhookSelfUpdateRequest = { webhook: { outgoingUrl: \"https://www.website.com/tasks/new\" } }\nconst response = client.bots.selfUpdateBotWebhook(request)", - "output": "BotResponse({ id: number, webhook: BotWebhook({ name: string, nickname: string, outgoingUrl: string | null, events: BotEventName[], triggerOn: BotTriggerOn, commands: string[], scopes: string[], template: string | null, templateEngine: BotTemplateEngine, challengeKey: string | null, linkPreviewEnabled: boolean, ignoreSelfMessages: boolean, eventsHistoryEnabled: boolean, singleChat: boolean, canEdit: BotCanEdit[], whoCanAdd: BotWhoCanAdd }) })", + "output": "BotSelfResponse({ id: number, oauthClient: BotOAuthClient({ clientId: string, clientSecretPreview: string, confidential: boolean, redirectUris: string[], scopes: string[] }) | null, webhook: BotSelfWebhook({ name: string, nickname: string, outgoingUrl: string | null, events: BotEventName[], triggerOn: BotTriggerOn, commands: string[], scopes: string[], template: string | null, templateEngine: BotTemplateEngine, challengeKey: string | null, linkPreviewEnabled: boolean, ignoreSelfMessages: boolean, eventsHistoryEnabled: boolean, singleChat: boolean, canEdit: BotCanEdit[], whoCanAdd: BotWhoCanAdd }) })", "imports": [ "BotWebhookSelfUpdateRequest", "BotWebhookSelfUpdateRequestWebhook" ] }, "BotOperations_updateBot": { - "usage": "const request: BotUpdateRequest = {\n webhook: {\n name: \"Бот задач\",\n nickname: \"tasks_bot\",\n outgoingUrl: \"https://www.website.com/tasks/new\",\n events: [BotEventName.MessageNew],\n triggerOn: BotTriggerOn.Commands,\n commands: [\"example\"],\n scopes: [\"example\"],\n template: \"Заказ от {{ client }} на сумму {{ amount }} ₽\",\n templateEngine: BotTemplateEngine.Liquid,\n challengeKey: \"challenge\",\n linkPreviewEnabled: true,\n ignoreSelfMessages: false,\n eventsHistoryEnabled: false,\n whoCanAdd: BotWhoCanAdd.Creator,\n canEdit: [BotCanEdit.Admin]\n }\n}\nconst response = client.bots.updateBot(1738816, request)", - "output": "BotResponse({ id: number, webhook: BotWebhook({ name: string, nickname: string, outgoingUrl: string | null, events: BotEventName[], triggerOn: BotTriggerOn, commands: string[], scopes: string[], template: string | null, templateEngine: BotTemplateEngine, challengeKey: string | null, linkPreviewEnabled: boolean, ignoreSelfMessages: boolean, eventsHistoryEnabled: boolean, singleChat: boolean, canEdit: BotCanEdit[], whoCanAdd: BotWhoCanAdd }) })", + "usage": "const request: BotUpdateRequest = {\n webhook: {\n name: \"Бот задач\",\n nickname: \"tasks_bot\",\n outgoingUrl: \"https://www.website.com/tasks/new\",\n events: [BotEventName.MessageNew],\n triggerOn: BotTriggerOn.Commands,\n commands: [\"example\"],\n scopes: [\"example\"],\n template: \"Заказ от {{ client }} на сумму {{ amount }} ₽\",\n templateEngine: BotTemplateEngine.Liquid,\n challengeKey: \"challenge\",\n linkPreviewEnabled: true,\n ignoreSelfMessages: false,\n eventsHistoryEnabled: false,\n whoCanAdd: BotWhoCanAdd.Creator,\n canEdit: [BotCanEdit.Admin],\n singleChat: false,\n kind: BotWebhookKind.Simple,\n unfurlDomains: [\"example\"]\n },\n oauthClient: {\n confidential: true,\n redirectUris: [\"example\"],\n scopes: [\"example\"]\n },\n promo: {\n description: \"Собирает сводку по задачам Jira и присылает её в чат\",\n published: true,\n promoImages: [\"example\"]\n }\n}\nconst response = client.bots.updateBot(1738816, request)", + "output": "BotResponse({ id: number, name: string, nickname: string, avatarUrl: string | null, creatorId: number | null, createdAt: string, authorizedUsersCount: number, lastUsedAt: string | null, webhook: BotWebhook({ name: string, nickname: string, outgoingUrl: string | null, events: BotEventName[], triggerOn: BotTriggerOn, commands: string[], scopes: string[], template: string | null, templateEngine: BotTemplateEngine, challengeKey: string | null, linkPreviewEnabled: boolean, ignoreSelfMessages: boolean, eventsHistoryEnabled: boolean, singleChat: boolean, canEdit: BotCanEdit[], whoCanAdd: BotWhoCanAdd, kind: BotWebhookKind | null, unfurlDomains: string[], lastRequestAt: string | null }), oauthClientEnabled: boolean, oauthClient: BotOAuthClient({ clientId: string, clientSecretPreview: string, confidential: boolean, redirectUris: string[], scopes: string[] }) | null, promo: BotPromo({ description: string | null, published: boolean, promoImages: BotPromoImage({ key: string, url: string })[] }) | null, permissions: BotPermissions({ updateOauthClient: boolean, recreateToken: boolean, destroy: boolean }), clientSecret?: string })", "imports": [ "BotCanEdit", "BotEventName", + "BotOAuthClientRequest", + "BotPromoRequest", "BotTemplateEngine", "BotTriggerOn", "BotUpdateRequest", "BotUpdateRequestWebhook", + "BotWebhookKind", "BotWhoCanAdd" ] }, + "BotOperations_updateBotToken": { + "usage": "const request: BotTokenUpdateRequest = { name: \"Сервер уведомлений\", scopes: [\"example\"] }\nconst response = client.bots.updateBotToken(1738816, 4827, request)", + "output": "BotAccessToken({ id: number, token: string, name: string | null, userId: number, scopes: string[], createdAt: string, revokedAt: string | null, expiresIn: number | null, lastUsedAt: string | null, authorizedAt: string | null })", + "imports": [ + "BotTokenUpdateRequest" + ] + }, "BotOperations_deleteBot": { "usage": "client.bots.deleteBot(1738816)" }, + "BotOperations_deleteBotToken": { + "usage": "client.bots.deleteBotToken(1738816, 4827)" + }, "BotOperations_deleteWebhookEvent": { "usage": "client.bots.deleteWebhookEvent(\"01KAJZ2XDSS2S3DSW9EXJZ0TBV\")" }, @@ -134,6 +173,12 @@ "ChatOperations_unarchiveChat": { "usage": "client.chats.unarchiveChat(334)" }, + "ChatOperations_markChatUnread": { + "usage": "const request: MarkChatUnreadRequest = { messageId: 1194275 }\nclient.chats.markChatUnread(334, request)", + "imports": [ + "MarkChatUnreadRequest" + ] + }, "ChatMemberOperations_listMembers": { "usage": "const response = client.members.listMembers(334, {\n role: ChatMemberRoleFilter.All,\n limit: 1,\n cursor: \"eyJpZCI6MTAsImRpciI6ImFzYyJ9\"\n})", "output": "ListMembersResponse({ data: User[], meta: PaginationMeta })", diff --git a/sdk/typescript/src/generated/types.ts b/sdk/typescript/src/generated/types.ts index 41bf3d1fb..bb5169a97 100644 --- a/sdk/typescript/src/generated/types.ts +++ b/sdk/typescript/src/generated/types.ts @@ -86,6 +86,16 @@ export enum AuditEventKey { BotDeleted = "bot_deleted", /** Изменены параметры OAuth-клиента бота */ BotOauthClientUpdated = "bot_oauth_client_updated", + /** У бота выключена авторизация от имени сотрудника */ + BotOauthClientDisabled = "bot_oauth_client_disabled", + /** Обновлён секрет OAuth-клиента бота */ + BotOauthClientSecretRotated = "bot_oauth_client_secret_rotated", + /** Выпущен токен бота */ + BotTokenCreated = "bot_token_created", + /** Изменены имя или скоупы токена бота */ + BotTokenUpdated = "bot_token_updated", + /** Отдельный токен бота перевыпущен */ + BotTokenReissued = "bot_token_reissued", /** Пользователь выдал OAuth-клиенту доступ к своим данным */ OauthAuthorizationGranted = "oauth_authorization_granted", /** Доступ OAuth-клиента к данным пользователя отозван */ @@ -170,6 +180,16 @@ export enum BotTriggerOn { Unfurl = "unfurl", } +/** Источник входящего вебхука бота */ +export enum BotWebhookKind { + /** Свой формат: сообщение собирается из тела запроса по шаблону бота */ + Simple = "simple", + /** GitLab: Пачка сама разбирает запрос и собирает сообщение */ + Gitlab = "gitlab", + /** Grafana: Пачка сама разбирает запрос и собирает сообщение */ + Grafana = "grafana", +} + /** Кто может добавлять бота в чаты */ export enum BotWhoCanAdd { /** Только создатель бота */ @@ -178,7 +198,7 @@ export enum BotWhoCanAdd { CreatorAdmin = "creator_admin", /** Создатель, администраторы и участники компании */ CreatorAdminUser = "creator_admin_user", - /** Любой пользователь, в том числе гости */ + /** Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей */ Anyone = "anyone", } @@ -355,6 +375,8 @@ export enum OAuthScope { ChatsCreate = "chats:create", /** Изменение настроек чата */ ChatsUpdate = "chats:update", + /** Отметка чатов непрочитанными */ + ChatsMarkUnread = "chats:mark_unread", /** Архивация и разархивация чатов */ ChatsArchive = "chats:archive", /** Выход из чатов */ @@ -643,6 +665,10 @@ export enum ValidationErrorCode { ConfidentialDownloadDenied = "confidential_download_denied", /** Не удалось расшифровать файл */ DecryptionFailed = "decryption_failed", + /** Правило бота «Кто может добавлять бота в чаты» не разрешает вам добавить его: `id` таких ботов приходят в `value` */ + BotAddDenied = "bot_add_denied", + /** Поиск не уложился по времени: сузьте запрос и повторите */ + Timeout = "timeout", /** Недостаточно прав для выполнения действия (пояснения вы получите в поле message) */ Forbidden = "forbidden", /** Доступ запрещён (недостаточно прав) */ @@ -740,16 +766,36 @@ export interface AuditDetailsBot { } export interface AuditDetailsBotOAuthClient { + botId: number; + actorId: number | null; clientId: string; changes: Record; } +export interface AuditDetailsBotOAuthClientDisabled { + botId: number; + actorId: number | null; + clientId: string; + deletedAccessTokensCount: number; + deletedAccessGrantsCount: number; +} + +export interface AuditDetailsBotOAuthClientSecretRotated { + botId: number; + actorId: number | null; + clientId: string; +} + export interface AuditDetailsBotScopes { + botId: number; + actorId: number | null; addedScopes: string[]; removedScopes: string[]; } export interface AuditDetailsBotWebhookSettings { + botId: number; + actorId: number | null; changes: Record; } @@ -883,7 +929,22 @@ export interface AvatarData { imageUrl: string; } +export interface BotAccessToken { + id: number; + token: string; + name: string | null; + userId: number; + scopes: string[]; + createdAt: string; + revokedAt: string | null; + expiresIn: number | null; + lastUsedAt: string | null; + authorizedAt: string | null; +} + export interface BotCreateRequest { + /** @default false */ + empty?: boolean; webhook: { name: string; nickname?: string; @@ -908,22 +969,153 @@ export interface BotCreateRequest { canEdit?: BotCanEdit[]; /** @default false */ singleChat?: boolean; + kind?: BotWebhookKind; + unfurlDomains?: string[]; }; + oauthClient?: BotOAuthClientRequest; + promo?: BotPromoRequest; } export interface BotCreateResponse { id: number; + name: string; + nickname: string; + avatarUrl: string | null; + creatorId: number | null; + createdAt: string; + authorizedUsersCount: number; + lastUsedAt: string | null; webhook: BotWebhook; - accessToken: string; + oauthClientEnabled: boolean; + oauthClient: BotOAuthClient | null; + promo: BotPromo | null; + permissions: BotPermissions; + clientSecret?: string; + accessToken?: string; +} + +export interface BotOAuthClient { + clientId: string; + clientSecretPreview: string; + confidential: boolean; + redirectUris: string[]; + scopes: string[]; +} + +export interface BotOAuthClientRequest { + confidential?: boolean; + redirectUris?: string[]; + scopes?: string[]; +} + +export interface BotPermissions { + updateOauthClient: boolean; + recreateToken: boolean; + destroy: boolean; +} + +export interface BotPromo { + description: string | null; + published: boolean; + promoImages: BotPromoImage[]; +} + +export interface BotPromoImage { + key: string; + url: string; +} + +export interface BotPromoRequest { + description?: string; + published?: boolean; + promoImages?: string[]; } export interface BotResponse { id: number; + name: string; + nickname: string; + avatarUrl: string | null; + creatorId: number | null; + createdAt: string; + authorizedUsersCount: number; + lastUsedAt: string | null; webhook: BotWebhook; + oauthClientEnabled: boolean; + oauthClient: BotOAuthClient | null; + promo: BotPromo | null; + permissions: BotPermissions; + clientSecret?: string; +} + +export interface BotScopeCatalog { + scopes: BotScopeCatalogItem[]; + groups: BotScopeCatalogGroup[]; + presets: BotScopeCatalogPreset[]; +} + +export interface BotScopeCatalogGroup { + id: string; + title: string; + description: string; +} + +export interface BotScopeCatalogItem { + id: string; + title: string; + group: string; + preset: string[]; +} + +export interface BotScopeCatalogPreset { + id: string; + title: string; +} + +export interface BotSelfResponse { + id: number; + oauthClient: BotOAuthClient | null; + webhook: BotSelfWebhook; +} + +export interface BotSelfTokenResponse { + id: number; + oauthClient: BotOAuthClient | null; + webhook: BotSelfWebhook; + accessToken: string; +} + +export interface BotSelfWebhook { + name: string; + nickname: string; + outgoingUrl: string | null; + events: BotEventName[]; + triggerOn: BotTriggerOn; + commands: string[]; + scopes: string[]; + template: string | null; + templateEngine: BotTemplateEngine; + challengeKey: string | null; + linkPreviewEnabled: boolean; + ignoreSelfMessages: boolean; + eventsHistoryEnabled: boolean; + singleChat: boolean; + canEdit: BotCanEdit[]; + whoCanAdd: BotWhoCanAdd; +} + +export interface BotTokenCreateRequest { + name: string; + scopes?: string[]; +} + +export interface BotTokenUpdateRequest { + name?: string; + scopes?: string[]; } export interface BotUpdateRequest { - webhook: { + webhook?: { name?: string; nickname?: string; outgoingUrl?: string; @@ -945,7 +1137,12 @@ export interface BotUpdateRequest { /** @default creator */ whoCanAdd?: BotWhoCanAdd; canEdit?: BotCanEdit[]; + singleChat?: boolean; + kind?: BotWebhookKind; + unfurlDomains?: string[]; }; + oauthClient?: BotOAuthClientRequest | null; + promo?: BotPromoRequest; } export interface BotWebhook { @@ -965,6 +1162,9 @@ export interface BotWebhook { singleChat: boolean; canEdit: BotCanEdit[]; whoCanAdd: BotWhoCanAdd; + kind: BotWebhookKind | null; + unfurlDomains: string[]; + lastRequestAt: string | null; } export interface BotWebhookSelfUpdateRequest { @@ -1036,6 +1236,7 @@ export interface ChatUpdateRequest { export interface CompanyBotResponse { id: number; + oauthClient: BotOAuthClient | null; webhook: CompanyBotWebhook; } @@ -1226,10 +1427,17 @@ export interface LinkSharedWebhookPayload { messageId: number; links: WebhookLink[]; userId: number; + entityType: MessageEntityType; + entityId: number | null; + thread: WebhookMessageThread | null; createdAt: string; webhookTimestamp: number; } +export interface MarkChatUnreadRequest { + messageId?: number; +} + export interface Message { id: number; entityType: MessageEntityType; @@ -1765,7 +1973,7 @@ export interface UpdateUserAvatarRequest { image: Blob; } -export type AuditEventDetailsUnion = AuditDetailsEmpty | AuditDetailsUserUpdated | AuditDetailsRoleChanged | AuditDetailsTagName | AuditDetailsInitiator | AuditDetailsInviter | AuditDetailsChatRenamed | AuditDetailsChatPermission | AuditDetailsTagChat | AuditDetailsChatId | AuditDetailsTokenScopes | AuditDetailsKms | AuditDetailsDlp | AuditDetailsSearch | AuditDetailsBot | AuditDetailsBotScopes | AuditDetailsBotWebhookSettings | AuditDetailsBotOAuthClient | AuditDetailsOAuthAuthorizationGranted | AuditDetailsOAuthAuthorizationRevoked | AuditDetailsDeviceAuthorizationApproved | AuditDetailsDeviceAuthorizationDenied | AuditDetailsVideoCallStarted | AuditDetailsVideoCallFinished | AuditDetailsVideoCallRecording; +export type AuditEventDetailsUnion = AuditDetailsEmpty | AuditDetailsUserUpdated | AuditDetailsRoleChanged | AuditDetailsTagName | AuditDetailsInitiator | AuditDetailsInviter | AuditDetailsChatRenamed | AuditDetailsChatPermission | AuditDetailsTagChat | AuditDetailsChatId | AuditDetailsTokenScopes | AuditDetailsKms | AuditDetailsDlp | AuditDetailsSearch | AuditDetailsBot | AuditDetailsBotScopes | AuditDetailsBotWebhookSettings | AuditDetailsBotOAuthClient | AuditDetailsOAuthAuthorizationGranted | AuditDetailsOAuthAuthorizationRevoked | AuditDetailsDeviceAuthorizationApproved | AuditDetailsDeviceAuthorizationDenied | AuditDetailsVideoCallStarted | AuditDetailsVideoCallFinished | AuditDetailsVideoCallRecording | AuditDetailsBotOAuthClientSecretRotated | AuditDetailsBotOAuthClientDisabled; export type ViewBlockUnion = ViewBlockHeader | ViewBlockPlainText | ViewBlockMarkdown | ViewBlockDivider | ViewBlockInput | ViewBlockSelect | ViewBlockRadio | ViewBlockCheckbox | ViewBlockDate | ViewBlockTime | ViewBlockFileInput; @@ -1789,6 +1997,11 @@ export interface ListBotsParams { cursor?: string; } +export interface ListBotTokensParams { + limit?: number; + cursor?: string; +} + export interface ListChatsParams { sort?: ChatSortField; order?: SortOrder; @@ -1942,6 +2155,11 @@ export interface ListBotsResponse { meta: PaginationMeta; } +export interface ListBotTokensResponse { + data: BotAccessToken[]; + meta: PaginationMeta; +} + export interface ListChatsResponse { data: Chat[]; meta: PaginationMeta; diff --git a/skills/pachca-bots/SKILL.md b/skills/pachca-bots/SKILL.md index 3d675b9ec..9a4129799 100644 --- a/skills/pachca-bots/SKILL.md +++ b/skills/pachca-bots/SKILL.md @@ -17,7 +17,7 @@ allowed-tools: Bash(npx:*), Bash(pachca:*), Bash(which:*), Bash(npm:*) ## Quick start -Ask the user for a Pachca token (bot: Automations → Integrations → API, user: Automations → API). +Ask the user for a Pachca token (bot: the API tab of the bot in Integrations → Bots, user: Integrations → API). Run commands via `npx -y @pachca/cli` with the `--token` flag: @@ -59,7 +59,7 @@ Help: `npx -y @pachca/cli --help` | Workflows: `npx -y @pachca/cli guide` 3. В ответе также придёт `id` бота (его `user_id`) — он нужен для дальнейших вызовов, например чтобы добавить бота в чат -> Создавать ботов можно только пользовательским токеном — токеном бота нельзя. `access_token` отдаётся один раз при создании, дальше его можно посмотреть и скопировать в интерфейсе. +> Создавать ботов можно только пользовательским токеном — токеном бота нельзя. `access_token` отдаётся один раз при создании, увидеть его снова нельзя, только перевыпустить. С флагом `--empty` бот создаётся без токена и входящего вебхука, как в интерфейсе, а токены ему выпускает `pachca bots create-token`. ### Настроить бота с исходящим вебхуком @@ -94,19 +94,58 @@ Help: `npx -y @pachca/cli --help` | Workflows: `npx -y @pachca/cli guide` ### Ротация токена бота -1. Пользовательским токеном (администратор, владелец компании или создатель бота) — перевыпусти токен по `id` бота. Прежний токен инвалидируется сразу: +1. Пользовательским токеном (создатель бота или администратор, если бот открыт администраторам) — перевыпусти основной токен по `id` бота: тот, что без имени, а если такого нет, самый старый. Прежнее значение инвалидируется сразу: ```bash pachca bots recreate-token ``` -2. Или: бот перевыпускает собственный токен своим же токеном (скоуп `bot_self:write`). Токен, которым выполнен запрос, инвалидируется сразу — обязательно сохрани новый `access_token` из ответа, иначе бот потеряет доступ к API: +2. Или: бот перевыпускает свой основной токен сам (скоуп `bot_self:write`). Если запрос сделан основным токеном, он инвалидируется сразу — обязательно сохрани новый `access_token` из ответа, иначе бот потеряет доступ к API: ```bash pachca bots recreate-token-self ``` -3. Сохрани новый `access_token` из ответа — он возвращается единственный раз. Обнови секрет в CI или хранилище секретов +3. Отдельный токен бота перевыпускай по его `id` из `pachca bots list-tokens`: значение меняется, имя и права остаются: + ```bash + pachca bots reissue-token + ``` + +4. Сохрани новый `access_token` из ответа — он возвращается единственный раз. Обнови секрет в CI или хранилище секретов + +> Новое значение возвращается один раз. Self-путь (`POST /bot/recreate_token`) перевыпускает основной токен бота — если бот ходит им, захвати новый токен из ответа в той же операции. + + +### Выпустить боту отдельный токен + +1. Пользовательским токеном (создатель бота или администратор, если бот открыт администраторам) получи каталог прав, которые можно выдать этому боту: + ```bash + pachca bots list-scopes + ``` + +2. Выпусти токен с именем и правами из каталога. Без `--scopes` токен выпускается без прав, право не из каталога отклоняется с `400`: + ```bash + pachca bots create-token --name="Сервер уведомлений" --scopes='["messages:create"]' + ``` + +3. Сохрани `token` из ответа — полное значение возвращается единственный раз. Дальше в списке `pachca bots list-tokens` он приходит замаскированным + +> Отдельный токен удобен на каждый сервис, который работает от имени бота: его отзывают командой `pachca bots delete-token`, не трогая остальные. Права меняет `pachca bots update-token` — они действуют сразу, перевыпускать токен не нужно. + + +### Включить боту авторизацию от имени сотрудника + +1. Пользовательским токеном (создатель бота или администратор, если бот открыт администраторам) включи авторизацию: где хранится секрет, адреса возврата и права, которые бот попросит у сотрудника. Права бери из `pachca bots list-scopes`: + ```bash + pachca bots update --oauth-client='{"confidential":true,"redirect_uris":["https://example.com/oauth/callback"],"scopes":["messages:read","messages:create"]}' + ``` + +2. Сохрани `client_secret` из ответа серверного клиента — он возвращается единственный раз. `client_id` приходит в `oauth_client` и не секретный + +3. Чтобы бот появился в витрине, добавь описание и опубликуй страницу: + ```bash + pachca bots update --promo='{"description":"Собирает сводку по задачам","published":true}' + ``` -> Новый токен возвращается один раз. Self-путь (`POST /bot/recreate_token`) инвалидирует именно тот токен, которым выполнен запрос, — захвати новый токен из ответа в той же операции. +> Включена ли авторизация, показывает `oauth_client_enabled`: `oauth_client` может прийти и у бота с выключенной авторизацией. `--oauth-client=null` выключает её и отзывает выданные сотрудниками авторизации, новый секрет выпускает `pachca bots rotate-client-secret`. ### Найти и удалить бота @@ -116,7 +155,7 @@ Help: `npx -y @pachca/cli --help` | Workflows: `npx -y @pachca/cli guide` pachca bots list --query="задач" ``` -2. Возьми `id` нужного бота из списка и удали его (скоуп `bots:write`). Доступно администратору, владельцу компании или создателю бота — владельцы чатов удалять бота не могут. Прежний токен инвалидируется сразу, бот исключается из всех чатов, его исходящий вебхук удаляется: +2. Возьми `id` нужного бота из списка и удали его (скоуп `bots:write`). Доступно создателю бота и администратору, если бот открыт администраторам, — владельцы чатов удалять бота не могут. Все токены бота инвалидируются сразу, бот исключается из всех чатов, его вебхуки удаляются: ```bash pachca bots delete ``` @@ -159,7 +198,9 @@ Help: `npx -y @pachca/cli --help` | Workflows: `npx -y @pachca/cli guide` - `webhook.nickname`: max 255 characters - `webhook.trigger_on`: allowed values — `commands` (Только на команды (триггер-слова) из commands), `all_messages` (На все сообщения в чатах, где есть бот), `unfurl` (На развёртывание ссылок (link previews)) - `webhook.template_engine`: allowed values — `liquid` (Liquid — условия, циклы и фильтры), `mustache` (Mustache — простая подстановка без логики) -- `webhook.who_can_add`: allowed values — `creator` (Только создатель бота), `creator_admin` (Создатель и администраторы компании), `creator_admin_user` (Создатель, администраторы и участники компании), `anyone` (Любой пользователь, в том числе гости) +- `webhook.who_can_add`: allowed values — `creator` (Только создатель бота), `creator_admin` (Создатель и администраторы компании), `creator_admin_user` (Создатель, администраторы и участники компании), `anyone` (Публичный бот: добавить его может любой сотрудник, кроме гостей и мульти-гостей) +- `webhook.kind`: allowed values — `simple` (Свой формат: сообщение собирается из тела запроса по шаблону бота), `gitlab` (GitLab: Пачка сама разбирает запрос и собирает сообщение), `grafana` (Grafana: Пачка сама разбирает запрос и собирает сообщение) +- `name`: max 255 characters - `limit`: max 50 - Pagination: cursor-based (limit + cursor) @@ -175,6 +216,13 @@ Help: `npx -y @pachca/cli --help` | Workflows: `npx -y @pachca/cli guide` | PUT | /bots/{id} | Редактирование бота | | DELETE | /bots/{id} | Удаление бота | | POST | /bots/{id}/recreate_token | Ротация токена бота | +| POST | /bots/{id}/rotate_client_secret | Ротация секрета клиента | +| GET | /bots/{id}/scopes | Каталог прав бота | +| GET | /bots/{id}/tokens | Список токенов бота | +| POST | /bots/{id}/tokens | Новый токен бота | +| PUT | /bots/{id}/tokens/{token_id} | Изменение токена бота | +| DELETE | /bots/{id}/tokens/{token_id} | Удаление токена бота | +| POST | /bots/{id}/tokens/{token_id}/reissue | Перевыпуск токена бота | | GET | /company/bots | Список ботов пространства | | GET | /webhooks/events | История событий | | DELETE | /webhooks/events/{id} | Удаление события | diff --git a/skills/pachca-bots/references/link-unfurling.md b/skills/pachca-bots/references/link-unfurling.md index c9362b6a6..f26663263 100644 --- a/skills/pachca-bots/references/link-unfurling.md +++ b/skills/pachca-bots/references/link-unfurling.md @@ -1,6 +1,6 @@ ### Разворачивание ссылок (unfurling) -1. Создай специального Unfurl-бота и укажи отслеживаемые домены +1. В карточке бота на вкладке «Исходящий вебхук» включи событие «Отправка ссылок в сообщении (unfurl)» и укажи до 5 доменов — это может только администратор или владелец пространства 2. При появлении ссылки бот получает вебхук `"event": "link_shared"` с массивом `links`. Каждый объект содержит `url`, `domain` и `skip: boolean` — если `skip` равен `true`, автор скрыл превью и бот должен пропустить эту ссылку @@ -11,5 +11,5 @@ pachca messages unfurl --link-previews='{"https://example.com":{"title":"Example","description":"Description"}}' ``` -> Эндпоинт привязан к конкретному сообщению. Необходим специальный Unfurl-бот с указанными доменами. +> Эндпоинт привязан к конкретному сообщению. Боту нужно событие разворачивания ссылок с доменами: ссылки приходят из всех чатов пространства, добавлять бота в чаты не нужно. diff --git a/skills/pachca-bots/references/process-events-via-history-polling.md b/skills/pachca-bots/references/process-events-via-history-polling.md index 6e2c6f7bd..50fc75e31 100644 --- a/skills/pachca-bots/references/process-events-via-history-polling.md +++ b/skills/pachca-bots/references/process-events-via-history-polling.md @@ -1,6 +1,9 @@ ### Обработка событий через историю (polling) -1. В настройках бота включи «Сохранять историю событий». Webhook URL указывать не обязательно. +1. Включи историю событий флагом `--events-history-enabled` (Webhook URL для этого не нужен) или настройкой «Сохранять историю событий» на вкладке «Исходящий вебхук» — в интерфейсе она появляется после включения вебхука: + ```bash + pachca bots update --events-history-enabled + ``` 2. Получи накопленные события: ```bash diff --git a/skills/pachca-chats/SKILL.md b/skills/pachca-chats/SKILL.md index cd8e10be7..c0c0fd7b2 100644 --- a/skills/pachca-chats/SKILL.md +++ b/skills/pachca-chats/SKILL.md @@ -17,7 +17,7 @@ allowed-tools: Bash(npx:*), Bash(pachca:*), Bash(which:*), Bash(npm:*) ## Quick start -Ask the user for a Pachca token (bot: Automations → Integrations → API, user: Automations → API). +Ask the user for a Pachca token (bot: the API tab of the bot in Integrations → Bots, user: Integrations → API). Run commands via `npx -y @pachca/cli` with the `--token` flag: @@ -158,6 +158,7 @@ Help: `npx -y @pachca/cli --help` | Workflows: `npx -y @pachca/cli guide` | DELETE | /chats/{id}/members/{user_id} | Исключение пользователя | | PUT | /chats/{id}/members/{user_id} | Редактирование роли | | PUT | /chats/{id}/unarchive | Разархивация чата | +| PUT | /chats/{id}/unread | Отметка чата непрочитанным | | GET | /company/chats | Список чатов пространства | ## Advanced workflows diff --git a/skills/pachca-forms/SKILL.md b/skills/pachca-forms/SKILL.md index 18a698638..c49e52d6b 100644 --- a/skills/pachca-forms/SKILL.md +++ b/skills/pachca-forms/SKILL.md @@ -19,7 +19,7 @@ allowed-tools: Bash(npx:*), Bash(pachca:*), Bash(which:*), Bash(npm:*) ## Quick start -Ask the user for a Pachca token (bot: Automations → Integrations → API, user: Automations → API). +Ask the user for a Pachca token (bot: the API tab of the bot in Integrations → Bots, user: Integrations → API). **Bot token only** — user tokens will not work. Run commands via `npx -y @pachca/cli` with the `--token` flag: diff --git a/skills/pachca-messages/SKILL.md b/skills/pachca-messages/SKILL.md index 2d2d6bc8a..808ce56a6 100644 --- a/skills/pachca-messages/SKILL.md +++ b/skills/pachca-messages/SKILL.md @@ -24,7 +24,7 @@ allowed-tools: Bash(npx:*), Bash(pachca:*), Bash(which:*), Bash(npm:*) ## Quick start -Ask the user for a Pachca token (bot: Automations → Integrations → API, user: Automations → API). +Ask the user for a Pachca token (bot: the API tab of the bot in Integrations → Bots, user: Integrations → API). Run commands via `npx -y @pachca/cli` with the `--token` flag: diff --git a/skills/pachca-oauth/SKILL.md b/skills/pachca-oauth/SKILL.md index a6a27dc18..5c433bda5 100644 --- a/skills/pachca-oauth/SKILL.md +++ b/skills/pachca-oauth/SKILL.md @@ -17,7 +17,7 @@ allowed-tools: Bash(npx:*), Bash(pachca:*), Bash(which:*), Bash(npm:*) ## Quick start -Ask the user for a Pachca token (bot: Automations → Integrations → API, user: Automations → API). +Ask the user for a Pachca token (bot: the API tab of the bot in Integrations → Bots, user: Integrations → API). Run commands via `npx -y @pachca/cli` with the `--token` flag: diff --git a/skills/pachca-profile/SKILL.md b/skills/pachca-profile/SKILL.md index 6c36a8c42..c0dc234ae 100644 --- a/skills/pachca-profile/SKILL.md +++ b/skills/pachca-profile/SKILL.md @@ -19,7 +19,7 @@ allowed-tools: Bash(npx:*), Bash(pachca:*), Bash(which:*), Bash(npm:*) ## Quick start -Ask the user for a Pachca token (bot: Automations → Integrations → API, user: Automations → API). +Ask the user for a Pachca token (bot: the API tab of the bot in Integrations → Bots, user: Integrations → API). Run commands via `npx -y @pachca/cli` with the `--token` flag: diff --git a/skills/pachca-search/SKILL.md b/skills/pachca-search/SKILL.md index 63f86f4db..12dc47c26 100644 --- a/skills/pachca-search/SKILL.md +++ b/skills/pachca-search/SKILL.md @@ -17,7 +17,7 @@ allowed-tools: Bash(npx:*), Bash(pachca:*), Bash(which:*), Bash(npm:*) ## Quick start -Ask the user for a Pachca token (bot: Automations → Integrations → API, user: Automations → API). +Ask the user for a Pachca token (bot: the API tab of the bot in Integrations → Bots, user: Integrations → API). Run commands via `npx -y @pachca/cli` with the `--token` flag: diff --git a/skills/pachca-security/SKILL.md b/skills/pachca-security/SKILL.md index b775783f1..2bb071c76 100644 --- a/skills/pachca-security/SKILL.md +++ b/skills/pachca-security/SKILL.md @@ -17,7 +17,7 @@ allowed-tools: Bash(npx:*), Bash(pachca:*), Bash(which:*), Bash(npm:*) ## Quick start -Ask the user for a Pachca token (bot: Automations → Integrations → API, user: Automations → API). +Ask the user for a Pachca token (bot: the API tab of the bot in Integrations → Bots, user: Integrations → API). Run commands via `npx -y @pachca/cli` with the `--token` flag: diff --git a/skills/pachca-tasks/SKILL.md b/skills/pachca-tasks/SKILL.md index e4e9ac229..31fdeb4a9 100644 --- a/skills/pachca-tasks/SKILL.md +++ b/skills/pachca-tasks/SKILL.md @@ -17,7 +17,7 @@ allowed-tools: Bash(npx:*), Bash(pachca:*), Bash(which:*), Bash(npm:*) ## Quick start -Ask the user for a Pachca token (bot: Automations → Integrations → API, user: Automations → API). +Ask the user for a Pachca token (bot: the API tab of the bot in Integrations → Bots, user: Integrations → API). Run commands via `npx -y @pachca/cli` with the `--token` flag: diff --git a/skills/pachca-users/SKILL.md b/skills/pachca-users/SKILL.md index 4861a8f9a..0a4e2f210 100644 --- a/skills/pachca-users/SKILL.md +++ b/skills/pachca-users/SKILL.md @@ -20,7 +20,7 @@ allowed-tools: Bash(npx:*), Bash(pachca:*), Bash(which:*), Bash(npm:*) ## Quick start -Ask the user for a Pachca token (bot: Automations → Integrations → API, user: Automations → API). +Ask the user for a Pachca token (bot: the API tab of the bot in Integrations → Bots, user: Integrations → API). Run commands via `npx -y @pachca/cli` with the `--token` flag: